NPI Healthcare Provider Scraper (NPPES) icon

Lead generation · Marketing

NPI Healthcare Provider Scraper (NPPES)

Clean, structured US healthcare provider leads from the official federal CMS NPI registry — filtered by state, specialty, city, or name — at $2 per 1 000 records, versus $50+ from list brokers.

Free Apify credit covers a first run. No credit card to try.

What this Actor scrapes

The NPPES NPI Registry is the authoritative federal directory of every healthcare provider in the United States. Every active physician, dentist, chiropractor, nurse practitioner, hospital, and medical group is listed here — complete with verified location address, telephone number, fax, speciality taxonomy, licence number, and enumeration status.

The registry's own API is publicly accessible, but turning it into a reliable bulk export takes real engineering: paginating past NPPES's 200-record-per-request ceiling, normalising the nested taxonomy and address objects, handling partial-result pages near the 1 200-result query cap, and coercing dates and flags into consistent types. We handle all of that and hand you back one richly-typed row per provider.

What we handle for you

  • 🔁 Automatic pagination — the NPPES API returns at most 200 records per request. We page through all available results (up to ~1 200 per query combination) and merge them transparently.
  • 🧱 Rate-limit-aware backoff — when the CMS endpoint pushes back we slow down, honour Retry-After headers, and retry up to 5 times with exponential backoff before surfacing an error.
  • 🧊 Pydantic-validated rows — every field is typed at write time. Booleans are booleans. Dates arrive as ISO-8601 strings. Taxonomy codes, licence numbers, and address fields are normalised across individual and organisational providers.
  • 🌐 Proxy-ready — the NPPES API is a public federal endpoint and direct routing works on most infrastructure. The proxy configuration field is there when you need it.
  • 💰 Pay-Per-Event pricing — you pay only for records that land in your dataset. No data, no charge beyond the small run warm-up fee.
  • 📦 Export in any format — Apify Console exports the dataset as JSON, CSV, or Excel with one click. Pull via API for automated pipelines.

Use cases

  • Pharma / medical-device field rep territory lists — pull every GP or specialist in a sales territory by state + taxonomy and load into your CRM.
  • Dental-supply prospecting — filter by dentist taxonomy and state for a fresh dentist contact list at a fraction of the cost of a list broker.
  • Healthcare-data vendor pipelines — bulk-export the registry by specialty and resell structured datasets to compliance, billing, or referral-network products.
  • Credentialing verification — cross-reference provider NPI numbers, licence states, and taxonomy codes for onboarding workflows.
  • Insurance network gap analysis — identify active providers in a region and compare against your network panel.
  • Academic and policy research — map provider density and specialty distribution by state or ZIP.

Input

Paste this into the Apify Console, or send it as the run input over the API. Proxy settings are on by default; you rarely need to touch them.

FieldTypeRequiredWhat it does
state string no Two-letter US state abbreviation (e.g. CA, NY, TX). Filters provider addresses by state.
city string no City name to narrow results within the chosen state (e.g. Los Angeles).
postalCode string no 5-digit US ZIP code to narrow results to a specific area (e.g. 90210).
taxonomyDescription string no Provider specialty keyword matched against NUCC taxonomy descriptions — e.g. dentist, chiropractor, internal medicine, nurse practitioner.
enumerationType string no NPI-1 = individual providers; NPI-2 = organisations; both = no filter applied.
firstName string no Filter by provider first name. Only relevant when enumerationType is NPI-1 or both.
lastName string no Filter by provider last name. Only relevant when enumerationType is NPI-1 or both.
organizationName string no Filter by organisation / practice name. Only relevant when enumerationType is NPI-2 or both.
maxItems integer no Maximum number of provider records to return. NPPES caps any single query at ~1 200 results (limit 200 × 6 pages). Set lower for quick tests.
{
  "state": "CA",
  "taxonomyDescription": "dentist",
  "enumerationType": "NPI-1",
  "maxItems": 200,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}

Output

One row per result, schema-validated before it is written. Export JSON, CSV, Excel or XML from the run, or read it over the API.

npienumeration_typenamecredentialstatusprimary_taxonomyspecialtylicenselicense_stateaddress_line1citystatepostal_codephonefaxsole_proprietor

{
  "npi": "1234567890",
  "enumeration_type": "NPI-1",
  "name": "Jane Smith",
  "credential": "DDS",
  "status": "Active",
  "primary_taxonomy": "122300000X",
  "specialty": "Dentist",
  "license": "CA12345",
  "license_state": "CA",
  "address_line1": "123 Main St",
  "city": "Los Angeles",
  "state": "CA",
  "postal_code": "90001",
  "country": "US",
  "phone": "310-555-0100",
  "fax": "310-555-0101",
  "sole_proprietor": true,
  "gender": "F",
  "enumeration_date": "2010-03-15",
  "last_updated": "2024-11-01",
  "scraped_at": "2026-06-07T10:00:00+00:00"
}

Pricing

EventPriceWhen
Actor start$0.20Once per run, covers warm-up and proxy session setup.
Result emitted$0.0020Per result written to the dataset.

You pay only for results that land. Cap any run with maxTotalChargeUsd. See pricing & billing for worked examples.

Limitations

  • NPPES query cap — the registry limits skip to 1 000, so any single state + specialty combination returns at most ~1 200 records. For large specialties (e.g. all physicians in California) you will need to paginate by city or ZIP code range across multiple runs.
  • No email addresses — NPPES does not publish provider email addresses. Phone and fax are included; email is not part of the public registry.
  • US providers only — the NPPES registry covers US-based or US-licensed providers. International providers are out of scope.
  • Data freshness — NPPES records reflect CMS update cycles. Providers who recently enrolled or updated their information may appear with a short delay. The last_updated field indicates the record's freshness.
  • Deactivated NPIs — by default the API returns both active and inactive providers. Filter by status == "Active" post-export if you only want active practitioners.

FAQ

Is this data public and legal to use?
Yes. The NPPES NPI Registry is a public federal dataset maintained by CMS (Centers for Medicare & Medicaid Services). It is published under a public domain licence with no restrictions on use. This Actor queries the public API endpoint documented at npiregistry.cms.hhs.gov.
Why can't I get all dentists in California in one run?
NPPES limits individual API queries to 200 records per page and caps the skip offset at 1 000, which means any single query combination is bounded at approximately 1 200 results. California alone has tens of thousands of active dentists. To get them all, segment by city or ZIP code range and run multiple Actor jobs, then merge the datasets.
What is the difference between NPI-1 and NPI-2?
NPI-1 (Individual) is assigned to licensed healthcare practitioners — physicians, dentists, nurses, physical therapists, and so on. NPI-2 (Organisational) is assigned to provider organisations — hospitals, group practices, dental chains, and labs. Set enumerationType to target one type or leave it as both to return all.
How current is the data?
The NPPES registry is updated continuously as providers enrol, update, or deactivate. The last_updated field on each row tells you when CMS last touched that record. For most use cases the data is current within days.
Can I get email addresses?
NPPES does not publish email addresses. If you need emails you will need to enrich the NPI data with a separate email-finder tool after export.
What is the NPI taxonomy code?
The NUCC Health Care Provider Taxonomy code identifies a provider's speciality (e.g. 122300000X = Dentist). Each NPI record may have multiple taxonomy codes; this Actor surfaces the one marked primary. Full NUCC taxonomy reference: nucc.org.

Ready to run it?

Open the listing on Apify, paste the input above, and watch rows land. If it ever breaks, it is our problem before it is yours.

Related Actors

Teams that run this also run