FindMyNPI
JSON API

A read-only JSON view of the public NPI registry.

The same NPPES and PECOS data the directory renders, served as JSON behind the Cloudflare edge. It is currently free, unauthenticated, and refreshed monthly from the public CMS files.

Public CMS dataNo login, no paywallRefreshed monthlyCached at the edge

Endpoints

GET/api/v1/npi/{npi}View live example →
Returns the locked v1 record for a single 10-digit NPI. Includes NPPES core fields, secondary identifiers (Medicaid, Other), other-name variants, PECOS Medicare enrolments, taxonomies, and addresses. Cached at the edge.

Sample request

bash
curl https://findmynpi.com/api/v1/npi/1245646520

Sample response

Live response for NPI 1245646520. The shape below is the locked v1 contract; new fields may be added without notice, but no existing field will be removed or renamed inside /api/v1/.

json
{
  "npi": "1245646520",
  "type": "NPI-1",
  "status": "active",
  "name": {
    "display": "Hongbing Woolbright",
    "other": [],
    "first": "HONGBING",
    "last": "WOOLBRIGHT"
  },
  "specialty": {
    "primary_taxonomy": "171100000X",
    "primary_taxonomy_description": "Acupuncturist",
    "slug": "acupuncturist",
    "schema_org_specialty": null,
    "all": [
      {
        "code": "171100000X",
        "description": "Acupuncturist",
        "primary": true,
        "state": null,
        "license": null
      }
    ]
  },
  "addresses": [
    {
      "purpose": "LOCATION",
      "street_1": "211 WINTON M BLOUNT LOOP",
      "city": "MONTGOMERY",
      "state": "AL",
      "postal_code": "361173507",
      "country_code": "US",
      "phone": "3346120969"
    },
    {
      "purpose": "MAILING",
      "street_1": "211 WINTON M BLOUNT LOOP",
      "city": "MONTGOMERY",
      "state": "AL",
      "postal_code": "361173507",
      "country_code": "US",
      "phone": "3346120969"
    }
  ],
  "license": null,
  "identifiers": [],
  "pecos": {
    "enrolled_at": null,
    "enrollments": []
  },
  "enumeration_date": "2014-07-07",
  "last_updated": "2014-07-07",
  "_meta": {
    "source": "NPPES",
    "snapshot_date": "2014-07-07",
    "doc_url": "https://findmynpi.com/api"
  }
}

Errors

Error responses use a standard envelope:

json
{
  "error": {
    "code": "not_found",
    "message": "NPI 0000000000 is not currently in the FindMyNPI index. The federal CMS NPPES registry is canonical; verify directly at https://npiregistry.cms.hhs.gov/."
  }
}
  • 404 not_found. NPI is not in the FindMyNPI index.

Stability

The /api/v1/ URL space and field shape are locked. Any breaking change ships under a new namespace, e.g. /api/v2/. Cache headers are Cache-Control: public, max-age=3600, s-maxage=3600today; the underlying data refreshes monthly from the NPPES dump and quarterly from the PECOS file.

Higher-volume access

Higher request volumes, batch endpoints, change webhooks, and an SLA are tracked work, not yet shipped. If you would use any of those, send a note describing the use case and rough volume; that calibrates which feature ships first.

Email API access interest →
Data is sourced from the CMS National Plan and Provider Enumeration System (NPPES) and the CMS Provider Enrollment, Chain and Ownership System (PECOS) public files. The federal CMS NPPES Registry is canonical. FindMyNPI does not assert any rights over the underlying public-domain data.