NPPES NPI Registry Scraper - US Healthcare Provider Lookup avatar

NPPES NPI Registry Scraper - US Healthcare Provider Lookup

Pricing

from $15.47 / 1,000 provider records

Go to Apify Store
NPPES NPI Registry Scraper - US Healthcare Provider Lookup

NPPES NPI Registry Scraper - US Healthcare Provider Lookup

Scrape the official CMS NPPES NPI Registry for US healthcare providers and organizations: NPI, credentials, addresses, phone and fax, specialty taxonomies and license numbers. Filter by name, NPI, specialty, state, city or ZIP. Export CSV, Excel, JSON. No login or API key.

Pricing

from $15.47 / 1,000 provider records

Rating

0.0

(0)

Developer

RecordsData

RecordsData

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

9 days ago

Last modified

Share

RecordsData

NPPES NPI Registry Scraper searches the official CMS NPPES NPI Registry for US healthcare providers and organizations. Give it a name, NPI number, specialty, state, city or ZIP code and get up to 53 data columns per row: NPI, credentials, practice and mailing address, phone and fax, gender, sole proprietor flag, authorized official of organizations, every specialty with license number and state, other names, identifiers and endpoints. Searches hitting the registry's 1,200-result cap are split automatically. Monitor mode returns only new or updated providers. No login, no API key. Export CSV, Excel or JSON. Priced at $20 per 1,000 records on the free tier.

NPPES NPI Registry Scraper turns the US government's National Provider Identifier database into a clean dataset. The CMS registry itself returns at most about 1,200 results per query; this actor splits a full query by state and then by ZIP prefix, and in a verified cloud run it read 22,944 unique Florida dentists this way. Built for credentialing teams, medical billing staff and healthcare lead generation.

๐Ÿฉบ What does NPPES NPI Registry Scraper do?

It queries the CMS NPPES NPI Registry API and returns one row per provider (NPI-1, individuals) or organization (NPI-2). You can verify exact 10-digit NPI numbers, find providers by name, organization, specialty, state, city or ZIP, search by an organization's authorized official, match practice or mailing address only, and follow the registry over time with monitor mode.

Name searches use a prefix wildcard ("hospital" matches "Hospital of Texas"). When one query matches more than the registry will return (about 1,200 rows), the actor splits it by state, then by ZIP prefix, and de-duplicates by NPI, so large pulls return more rows than a single registry query can.

๐Ÿ“‹ What data can you extract from the NPI Registry?

Each row has up to 53 data columns. Fields the registry has no value for are left out of the row.

GroupFields
Identitynpi, enumerationType (NPI-1 or NPI-2), name, firstName, lastName, credential, gender, soleProprietor
OrganizationorganizationName, parentOrganizationName, organizationalSubpart
Status and datesstatus (A or I), enumerationDate, certificationDate, lastUpdated
Practice locationaddressLine1, city, state, postalCode, phone, fax
Mailing addressmailingAddressLine1, mailingCity, mailingState, mailingPostalCode, mailingPhone, mailingFax
Specialties and licensestaxonomies, primaryTaxonomy, primaryTaxonomyCode, primaryLicense, primaryLicenseState, taxonomyDetails (every taxonomy with license)
Authorized official (organizations)authorizedOfficialName, authorizedOfficialCredential, authorizedOfficialTitle, authorizedOfficialPhone
Other registry datapracticeLocations, otherNames, identifiers, endpoints
MetadatarecordType, registryUrl, scrapedAt, changeType (monitor mode), raw (with includeRaw)

The dataset has five views. Gender and sole proprietor flag exist only for individuals; authorized official fields only for organizations.

๐Ÿงพ Sample output

Row from a run with {"organizationName": "hospital", "state": "TX", "maxItems": 10}, trimmed:

{
"recordType": "provider-record",
"npi": "1568657583",
"enumerationType": "NPI-2",
"name": "DOCTORS HOSPITAL AT RENAISSANCE, LTD",
"status": "A",
"lastUpdated": "2023-11-14",
"phone": "956-362-3300",
"addressLine1": "5510 RAPHAEL DR",
"city": "EDINBURG",
"state": "TX",
"primaryTaxonomy": "Psychiatric Unit",
"primaryLicense": "007971",
"primaryLicenseState": "TX"
}

๐Ÿ’ฐ How much does it cost to scrape the NPI Registry?

Pay per event, only for records saved. One billable event, no start fee.

EventWhat it coversFree tierBronzeSilverGold and above
provider-recordOne provider or organization row$0.02$0.01733$0.016$0.01547

Extra columns and monitor mode cost nothing extra.

Worked examples on the free tier:

  • 1,000 provider records cost 1,000 x $0.02 = $20.00. At the Gold price the same 1,000 cost 1,000 x $0.01547 = $15.47.
  • 500 Nurse Practitioners in two states: 500 x $0.02 = $10.00. A daily monitor run finding 12 updated providers: $0.24.
  • A full Florida dentist pull of about 22,944 unique providers: about $459 on the free tier, about $355 at Gold. Set a maximum cost per run before a big pull.

Empty searches, nonexistent NPI numbers, skipped providers, error rows and failed runs are not charged. Free Apify plan: 10 results per run. This actor costs about 10 times more per row than the cheapest rivals below.

๐Ÿ”” Monitor mode: only new or updated providers

Turn on onlyNew to get just the providers this search has not returned before. stateKey labels a monitor so two with the same filters keep separate memories, and resetSeen clears it. A changed record comes back with changeType: "updated", a first-time provider as new. Skipped rows are never charged. lastUpdatedSince is a separate date filter on the lastUpdated column; skipped rows are free but still read from the registry.

๐Ÿš€ How to scrape the NPI Registry in 3 steps

  1. Fill at least one search field: name, organization name, NPI numbers, specialty, city, ZIP code or a state combined with one of them. A state alone is not enough.
  2. Set Max results (default 200).
  3. Click Run, then download the dataset as JSON, CSV, Excel or XML.

โš™๏ธ Input

FieldDescription
npiNumbersExact 10-digit NPI numbers to look up
firstName, lastNameIndividual providers by name
nameSearchTargetPROVIDER (default) or AUTHORIZED_OFFICIAL
organizationNameOrganization name prefix
taxonomyDescriptionSpecialty filter, for example "Nurse Practitioner"
enumerationTypeANY (default), NPI-1 or NPI-2
state, states, city, citiesOne value or a list: one query per value, results merged
postalCodeExact ZIP or a prefix such as 770*
addressPurposeANY (default), LOCATION or MAILING
lastUpdatedSinceOnly rows updated on or after this date
maxItemsMaximum records to return (default 200)
includeRawAdd the registry record as raw
onlyNew, stateKey, resetSeenMonitor mode, described above
{
"taxonomyDescription": "Dentist",
"states": ["FL"],
"enumerationType": "NPI-1",
"maxItems": 5
}

At least one search field besides state is required. Bad input ends the run as SUCCEEDED with one free error row (errorType: invalid-input).

๐Ÿ“ฆ Output

One dataset row per provider or organization. A search that matches nothing finishes successfully with an empty dataset. Invalid input (for example a 9-digit NPI) ends with one free error row carrying error, errorType: invalid-input and a hint.

  • A state filter also matches providers whose only address in that state is the mailing address; use addressPurpose LOCATION for practice locations. Name search also matches former names, and periods become spaces.
  • Specialty-only searches return organizations before people; set enumerationType to ask for one kind.

โš–๏ธ NPPES NPI Registry scraper vs alternatives

Read on 2026-10-10 from the public Store pages of pink_comic, cblu and haketa.

This actorpink_comiccbluhaketa
Price per 1,000 rows$20 (Free tier)$2 plus $0.10 start$2from $1
Mailing addressYesYesYesYes
Authorized officialYes, 4 fieldsName onlyName, title, phoneNot shown
Several states and cities per runYes, arraysNot shownState onlyYes
Beats the 1,200-result capYes, split and dedupePages to 10,000 rowsYes, ZIP splitNot stated
New or updated onlyYesNot shownNot shownNot shown

The three rivals cost about a tenth of this actor per row. This actor adds 53 columns including every taxonomy with license, identifiers and endpoints, more filters, and monitor mode with updated detection. For plain NPI lists at the lowest price, a rival is the better fit. logiover/npi-registry-scraper (from $1) is a fourth cheaper option.

๐ŸŽฏ Use cases

Provider credentialing, medical billing checks, healthcare lead generation and registry monitoring.

๐Ÿ”Œ Run via API, schedule and integrations

Call it with the Apify API (curl), schedule recurring refreshes, connect results to Zapier, Make, n8n or Google Sheets, or use the Apify clients for Python and JavaScript.

๐Ÿค– NPPES NPI Registry Scraper MCP server for AI agents

AI agents can call this actor through the Apify MCP server at https://mcp.apify.com?tools=RecordsData/nppes-npi-registry-scraper.

Example agent prompt:

Use the NPPES NPI Registry Scraper to find 50 active Nurse Practitioners in ZIP code 78701 and give me each NPI, phone number, license number and mailing address.

Tool description: choose this actor when an agent needs to verify US healthcare providers or find them by name, specialty, state, city or ZIP in the official CMS NPI Registry, or to list only providers that are new or updated since the last run.

The NPPES registry is public information published by the US Centers for Medicare & Medicaid Services, with an open API and no login. A sole proprietor's mailing address can be a home address; the actor returns only fields the registry publishes. Use the data in line with applicable laws and the registry terms.

โ“ Frequently asked questions

Why did my NPPES NPI Registry search return 0 results?

The CMS NPPES NPI Registry had no match for your search. Name searches match from the start of the name, so try a shorter text, remove the city or state filter, or check the spelling. Name search also matches former names, and a period inside a name is replaced by a space. A run with zero matches is free and the dataset is simply empty.

What happens if I send an empty or invalid input to the NPPES NPI Registry Scraper?

Nothing is charged. Input mistakes, such as no search field, an NPI that is not 10 digits, or a state filter with no other search field, end the run as SUCCEEDED with one free error row: errorType: invalid-input, the exact error message and a hint.

How many NPI Registry records can I get per run?

Up to your Max results setting, which defaults to 200. The CMS registry returns at most about 1,200 rows for one query. When a query comes back full, the actor splits it by state and then ZIP prefix and de-duplicates by NPI, so a Florida dentist scan read 22,944 unique providers in a verified cloud run. The free Apify plan is limited to 10 results per run.

Does the NPPES NPI Registry Scraper need an API key or login?

No. It uses the open CMS NPPES API, which needs no registration, login or API key. You only need an Apify account to run the actor. The NPI numbers, status, addresses and license numbers match the CMS NPI Registry search page.

Does the NPPES NPI Registry Scraper return individuals and organizations?

Yes. The enumerationType field is NPI-1 for individual providers such as physicians and nurse practitioners, and NPI-2 for organizations such as hospitals, clinics and pharmacies. Use lastName and firstName for individuals and organizationName for organizations, or set enumerationType to ask for one kind.

Can I look up many NPI numbers at once?

Yes. Put the 10-digit numbers in the npiNumbers list and each one is looked up in the CMS NPI Registry in the same run. Numbers that do not exist are reported and not charged, so a bulk verification list only costs you for the providers found. Every number must have exactly 10 digits.

Why do some NPI Registry providers have several specialties?

A provider can hold several taxonomy codes, one per specialty. The actor returns the descriptions in taxonomies, the primary one in primaryTaxonomy with primaryTaxonomyCode, and taxonomyDetails with the code, license and license state of every taxonomy, plus primaryLicense and primaryLicenseState for the primary specialty.

How fresh is the data from the NPPES NPI Registry Scraper?

It reads the data live from the CMS registry at run time, so it is as current as the NPPES database. lastUpdated is the registry's own record update date, scrapedAt is when the actor read it, and status shows whether the NPI is active (A) or deactivated (I). Schedule recurring runs to keep a list current.

Can I search several states or cities in one run?

Yes. Use states and cities as lists. The actor runs one query per value, merges the results and de-duplicates by NPI, so a provider found twice is returned and charged once. You still need a second search field, such as a specialty or name, because the registry does not allow a state alone.

How does only-new mode work in the NPPES NPI Registry Scraper?

Set onlyNew and the actor remembers the NPI and lastUpdated date of every row it delivered, per search and optional stateKey. The next run returns only providers that are new or whose record changed, marked changeType new or updated. Skipped providers are free. Set resetSeen to clear the memory.

Does the mailing address include home addresses?

Sometimes. The actor returns the mailing address the registry publishes, and for a sole proprietor that address can be a home address. It is public data in the NPPES file, and the actor does not infer, enrich or join anything from other sources. Use addressPurpose LOCATION for practice locations only, and handle personal data under the rules that apply to you.

Can I find organizations by their authorized official?

Yes. Set nameSearchTarget to AUTHORIZED_OFFICIAL and the first and last name fields match the authorized official of an organization instead of the provider name. Organization rows return authorizedOfficialName, authorizedOfficialCredential, authorizedOfficialTitle and authorizedOfficialPhone. These fields exist only for organizations (NPI-2), not for individual providers.

Why did my NPPES NPI Registry run stop before reaching Max results?

The search had fewer matches, or the run hit the maximum cost you set in the Apify run options, or the actor saw no new result for 90 seconds, which usually means the registry was refusing requests (HTTP 403 or 429), so it stopped to keep what it found. The final status message says which one happened, and stored rows stay in the dataset.

Why is a state filter alone not enough?

The CMS registry rejects searches that only contain a state, because they would match the whole country. The actor returns one free error row with a hint instead of querying. Add a specialty, a name, an organization name, a city or a ZIP code. To cover many states, list them in states and keep the specialty or name filter.

๐Ÿ’ฌ Support

Found a bug? Open an issue in the Issues tab or write to contact.punkrecordsdata@gmail.com.

Last updated: 2026-10-11