ParseForge Scrapers

NPI/NPPES Healthcare Provider Scraper

parseforge/npi-nppes-scraper

AutomationDeveloper toolsLead generation

Scrapes NPI numbers and healthcare provider details from the NPPES registry. Returns each provider as a flat row with NPI, name, taxonomy, address, and phone. Supports search filters and direct API URLs.

Run this scraper See the API call
Total users
70
Monthly active
4
Total runs
662
Bookmarked
0
Rating
5.0 (1)
Last modified
12 days ago

Overview

ParseForge

NPI/NPPES Healthcare Provider Scraper

Scrape NPI numbers and healthcare provider details from the official NPPES registry, up to a million per run. Every provider comes with their NPI, name, taxonomy, address, and phone. No login or API key. Export to CSV, JSON, Excel, or XML.

The NPPES NPI Registry is the authoritative source for healthcare provider data in the United States, but its API returns nested JSON that is hard to flatten and paginate. This Actor queries the registry directly by NPI number, name, location, or specialty, and returns each provider as one flat row. You can also pass a direct NPPES API URL to scrape exactly the results you need.

Who uses it What they scrape NPPES NPI Registry for
Healthcare marketers Build targeted lists of providers by specialty and location for outreach campaigns.
Medical recruiters Find contact details for physicians and practices to fill open positions.
Insurance companies Verify provider credentials and network coverage by NPI number.
Health tech startups Enrich provider directories with up-to-date NPPES data.
Researchers Analyze the distribution of healthcare providers across regions and specialties.

What it does

This Actor collects healthcare provider records from the NPPES NPI Registry and returns each provider as a flat row with their NPI, name, taxonomy, address, and contact details.

  • πŸ” Search filters: NPI number, first and last name, city, state, postal code, taxonomy, and enumeration type.
  • πŸ”— Direct URL: Paste any NPPES API URL with query parameters to scrape exactly those results.
  • πŸ“Š Flat output: Each provider is returned as one row with all fields, ready for CSV or JSON export.
  • ⚑ High volume: Collect up to one million providers per run, with automatic pagination.
  • πŸ›‘οΈ No API key: The Actor uses the public NPPES API, so no registration or credentials are needed.

Results export to CSV, JSON, Excel, or XML, or straight from the API.

What you can do with NPPES NPI Registry data

πŸ“ˆ Build a provider list for marketing.

A healthcare marketer filters by taxonomy and state to get all cardiologists in Texas, then exports the list to CSV for an email campaign.

πŸ”Ž Verify provider credentials.

An insurance company checks a batch of NPI numbers against the registry to confirm provider enrollment and specialty.

πŸ—ΊοΈ Map provider coverage.

A health tech startup scrapes all providers in a region to visualize network gaps and plan expansion.

πŸ“‹ Enrich a directory.

A medical recruiter pulls contact details for practices by city and taxonomy to fill open positions faster.

πŸ“Š Analyze workforce distribution.

A researcher collects provider data across states to study the supply of primary care physicians in rural areas.

Why choose this scraper

What you get
Official source Data comes directly from the CMS NPPES registry, the authoritative NPI database.
Flexible input Use search filters or a direct API URL, whichever fits your workflow.
Scalable Collect up to one million providers per run, with automatic pagination.
Clean output Nested JSON is flattened into one row per provider, ready for analysis.

How it compares

No other Store actor targets NPPES NPI Registry the same way, so the honest comparison is with the alternatives teams actually weigh.

NPI/NPPES Healthcare Provider Scraper Build it in-house By hand
Setup Run it now, zero config Days of engineering None, but hours per pull
When NPPES NPI Registry changes Maintained for you You fix it You re-learn the page
Proxies, retries, anti-bot Built in Your problem Browser only
Output Fixed JSON schema, CSV/Excel export Whatever you build Copy-paste
Cost Pay per result Engineering time Analyst hours

Configure the run

Drive the Actor from a direct NPPES API URL or from search filters like NPI number, name, location, and taxonomy, and filters run as each provider is read so only matches reach your dataset. The Input tab lists every parameter.

A first run with the defaults:

{
  "maxItems": 10,
  "lastName": "Smith",
  "state": "NY"
}

A larger pull:

{
  "maxItems": 200,
  "lastName": "Smith",
  "state": "NY"
}

Pricing

Pay-per-result: $0.16 per result collected. You pay only for the results written to your dataset.

Results collected Approximate cost
100 results $16.00
1,000 results $160.00
10,000 results $1600.00

New Apify accounts start with $5 in free credit.

Free users

Free-plan runs return up to 10 results as a preview. Upgrade your Apify plan to collect up to 1,000,000 results per run.

Run it

  1. Create a free Apify account with $5 in credit.
  2. Open the NPI/NPPES Healthcare Provider Scraper.
  3. Set your inputs and any filters, then click Start.
  4. Export the results as CSV, Excel, JSON, or XML from the Dataset tab.

Run it programmatically through the Apify API (run-sync-get-dataset-items) or the ApifyClient for JavaScript and Python.

Use with AI agents (MCP)

Give an AI agent live access to NPPES NPI Registry through the Model Context Protocol. Add the Actor to Claude, Cursor, or any MCP client:

claude mcp add --transport http apify "https://mcp.apify.com?tools=parseforge/npi-nppes-scraper"

Then prompt it in plain language to run the scraper and read back the results.

Troubleshooting

Why am I getting no results?

Check that your search filters are not too restrictive. Try removing some filters or using a broader taxonomy. Also ensure that you are not using both a direct URL and search filters, as they are mutually exclusive.

Why does the run stop before reaching maxItems?

The NPPES API may return fewer results than requested if there are no more matching providers. The Actor stops when the API returns an empty page. Try broadening your filters to get more results.

Why do I get an error when using a direct URL?

Make sure the URL is a valid NPPES API endpoint with proper query parameters. The URL should start with https://npiregistry.cms.hhs.gov/api/. Also check that you are not also using search filters.

Why is the state filter not working?

The state filter requires a 2-letter code like NY or CA. Do not use full state names. If you need a full state name search, use the direct URL with the state parameter.

Why are some fields missing in the output?

Not all providers have every field populated in the NPPES registry. For example, some may not have a phone number or a secondary address. The Actor returns only the fields that are present in the API response.

FAQ

Question Answer
What is the NPPES NPI Registry? The NPPES NPI Registry is the official database of National Provider Identifiers (NPIs) maintained by the Centers for Medicare & Medicaid Services (CMS). It contains information on all healthcare providers and organizations in the United States.
Do I need an API key to use this Actor? No. The Actor uses the public NPPES API, which does not require registration or an API key. You can start scraping immediately.
Can I scrape by NPI number? Yes. Enter a 10-digit NPI number in the search filters, or include it in a direct API URL, and the Actor will return that provider's record.
Can I search by provider name? Yes. Use the first name and last name filters for individual providers. For organizations, use the enumeration type filter set to NPI-2.
Can I filter by specialty or taxonomy? Yes. Use the taxonomy description filter, such as 'Family Medicine' or 'Cardiology', to narrow results to that specialty.
Can I filter by location? Yes. Use the city, state, and postal code filters to find providers in a specific area. State must be a 2-letter code like NY or CA.
What is the difference between NPI-1 and NPI-2? NPI-1 is for individual providers like physicians and nurses. NPI-2 is for organizations like hospitals and group practices. Use the enumeration type filter to choose.
Can I use a direct NPPES API URL? Yes. Paste any NPPES API URL with query parameters into the startUrl field. This is useful if you have a pre-built query or need parameters not covered by the filters.
How many providers can I scrape in one run? You can set maxItems up to 1,000,000. The Actor will paginate through the API until it reaches that number or no more results are available.
What format is the output? Each provider is returned as a flat JSON object with fields like NPI, name, taxonomy, address, and phone. You can export the dataset to CSV, JSON, Excel, or XML.
Is the data up to date? The Actor queries the live NPPES API, so the data reflects the current registry at the time of the run.
Can I schedule this Actor to run regularly? Yes. You can set up a schedule in Apify to run the Actor daily, weekly, or at any interval to keep your provider data fresh.

Related actors

Browse the full ParseForge collection for more scrapers.

πŸ†˜ Need help? Email parseforge@protonmail.com with your run ID, your input, and what you expected.

⚠️ Disclaimer. This Actor is unofficial and is not affiliated with, endorsed by, or sponsored by Centers for Medicare & Medicaid Services (CMS). It collects only publicly available data. You are responsible for using the collected data in compliance with the source's terms of service and applicable data-protection laws, including GDPR, CCPA, and PIPL. Do not use it to collect personal data unlawfully.

Input

FieldTypeWhat it doesDefault
startUrl string Direct NPPES API URL to scrape. Use this OR search filters below, not both. Example: https://npiregistry.cms.hhs.gov/api/?version=2.1&first_name=John&state=NY not set
maxItems integer Maximum number of healthcare providers to collect per run. 10
npi string 10-digit National Provider Identifier number to search for not set
firstName string Provider's first name (for individual providers) not set
lastName string Provider's last name (for individual providers) Smith
city string City name where provider is located not set
state string 2-letter state code (e.g., NY, CA, TX) NY
postalCode string 5 or 9 digit ZIP code not set
taxonomyDescription string Provider taxonomy/specialty description (e.g., Family Medicine, Cardiology) not set
enumerationType string (2 options) Provider type: NPI-1 for Individual, NPI-2 for Organization not set

Pricing

from $8.00 per 1,000 results

Charged forWhat it isPrice each
Actor Start Charged when the Actor starts running. Number of events charged depends on Actor memory (one event per GB, minimum one event). $0.05 to $0.16
Result Single result in the default dataset. $0.008 to $0.012

Tiered: the lower figure is the price on a higher Apify plan. Billing and the free credit live on Apify.

API

One POST returns the dataset directly. Same shape for every scraper in the library, so swapping the slug is the only change.

POST Β· run and get results
curl -X POST "https://api.apify.com/v2/acts/parseforge~npi-nppes-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "helloWorld": 123
  }'

Examples

Input that runs as-is.

input.json
{
  "helloWorld": 123
}

Reviews

Rated 5.0 out of 5 across 1 review. Read them on Apify.

Issues

We build and maintain this scraper, so a problem with it comes to us. Report it on the Apify listing and the thread stays attached to the scraper where the next person can find it: open an issue.

Broken and urgent, or you would rather not post in public? Write to parseforge@protonmail.com and it reaches the people who wrote it.

Related scrapers

Run NPI/NPPES Healthcare Provider Scraper on Apify All scrapers