NPI Provider Registry - US Doctors and Organisations avatar

NPI Provider Registry - US Doctors and Organisations

Pricing

from $1.00 / 1,000 results

Go to Apify Store
NPI Provider Registry - US Doctors and Organisations

NPI Provider Registry - US Doctors and Organisations

Search the official US National Provider Identifier registry as flat rows - name, credential, specialty, address and status. Free public CMS API.

Pricing

from $1.00 / 1,000 results

Rating

0.0

(0)

Developer

alaudin burki

alaudin burki

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

7 days ago

Last modified

Categories

Security

Limited permissions

Share

NPI Provider Registry — US Doctors and Organisations

Searches the US National Provider Identifier registry — the CMS directory of every provider issued an NPI — and returns one flat row per provider: name, credential, gender, status, address and specialty. The CMS API is public, so no key is needed. The NPI itself is carried on every row inside the id field, prefixed with npi:.

How to use

  1. Give at least one filter: a two-letter state, a taxonomy (specialty), a lastName, an organizationName, or an enumerationType of NPI-1 (individual) or NPI-2 (organisation).
  2. Set maxItems (default 500) and maxPages (default 5). Each request returns up to 200 records.
  3. Run the Actor. Rows land in the default dataset, and SUMMARY reports the row count, the stop reason and whether the result was truncated.

Inputs

FieldWhat it doesDefault
stateTwo-letter US state, sent as state, e.g. NY.none
taxonomySpecialty text, sent as taxonomy_description, e.g. Cardiovascular Disease.none
lastNameIndividual provider's family name, sent as last_name.none
organizationNameOrganisation name, sent as organization_name.none
enumerationTypeNPI-1 for individuals or NPI-2 for organisations, sent as enumeration_type.none
maxItemsHard row cap. The runner also refuses to go above 20,000.500
maxPagesHard request cap, 200 records per request. The runner also refuses to go above 200.5
{
"state": "NY",
"taxonomy": "Cardiovascular Disease",
"maxItems": 50
}

Output

One row per provider record.

FieldMeaning
enumerationTypeNPI-1 for an individual, NPI-2 for an organisation.
firstNameGiven name (basic.first_name). Empty for organisations.
lastNameFamily name (basic.last_name). Empty for organisations.
organizationNameOrganisation name (basic.organization_name). Empty for individuals.
credentialCredential suffix as recorded, e.g. MD, DO, NP.
genderGender code as recorded (M or F), not translated.
statusThe register's status code (basic.status); A means active.
lastUpdatedThe date the register last changed the record (basic.last_updated).
address1First line of the first address (addresses[0].address_1).
cityCity of that address.
stateState of that address.
postalCodePostal code of that address, as published.
taxonomyDescription of the first specialty (taxonomies[0].desc).
taxonomyCodeCode of that first specialty (taxonomies[0].code), from the NUCC code set.

Every row also carries id (npi: followed by the 10-digit NPI), source (npi-registry) and scrapedAt (an ISO timestamp for the run); the first is the identifier, the last two are added by the runner. Absent values are dropped from the row, so an organisation simply has no firstName key.

Limitations

  • At least one search criterion is required. With every filter blank the CMS API rejects the query, and the run stops with an error instead of returning rows.
  • There is no number column. The NPI is the row identifier: it appears as id, prefixed with npi:, e.g. npi:1234567890.
  • Only the first address is mapped. The register labels addresses as practice location or mailing address, and this Actor takes whichever one is listed first, so it may be a mailing address.
  • Only the first taxonomy is mapped. A provider with several specialties returns one, and it is not guaranteed to be the one the register marks as primary.
  • The registry is a directory, not a licence check. An active NPI means the provider is enrolled for identification; it is not evidence of a current state licence or of competence.
  • Names are as recorded — often in capitals, with no normalisation of punctuation or spacing.
  • Paging is 200 records per request. With the default maxPages of 5, a run stops at about 1,000 rows even when the query matches more, so raise the cap for broad searches.
  • No financial, ownership or affiliation data is returned. The dataset is the NPI record only.

Why this is different

This Actor is different because it queries the official CMS NPI registry directly — no search page is rendered and no key is issued or rotated. Each row is identified by the NPI itself, a number that is never reused, so output can be joined across runs and with other provider data. Absent values are omitted rather than blanked, the output is sorted deterministically, and every run writes a SUMMARY record naming why it stopped, so a capped result is visible as capped.

FAQ

What exactly is an NPI? A 10-digit identifier CMS issues to US healthcare providers. NPI-1 records are individuals; NPI-2 records are organisations. Numbers are never reassigned.

Do I need an API key? No. The CMS registry API is public and the Actor sends no credentials.

Can I look up one provider by NPI number? Not through this input set. Search by last name and state, and the NPI comes back in id.

Why does a provider show only one address and one specialty? Because only the first entry of each list is mapped; the register can hold several.

Does an active status mean the doctor is licensed? No. Status A means the record is active in the NPI registry, which is an enrolment directory, not a licensing board.

Pricing and limits

The price is shown on the Actor's Apify pricing panel; billing is per event under Apify's pay-per-event model. Each run is bounded by maxItems (default 500, hard-capped at 20,000) and maxPages (default 5, hard-capped at 200), with up to 200 records per request. When a limit stops the run before the query is exhausted, SUMMARY.truncated is true and SUMMARY.stopReason names the limit.