# NPI Registry Scraper - US Healthcare Providers & NPIs (`themineworks/npi-registry-healthcare`) Actor

Affordable NPI Registry scraper: US healthcare providers, NPIs & specialties. $3/1,000 results, 25 free, pay-per-result, no subscription. Works in Claude, ChatGPT & any MCP-compatible AI agent.

- **URL**: https://apify.com/themineworks/npi-registry-healthcare.md
- **Developed by:** [The Mine Works](https://apify.com/themineworks) (community)
- **Categories:** Business, Developer tools, MCP servers
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-usage

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## NPI Registry — US Healthcare Provider Lookup (CMS)

Look up **US healthcare providers** from the official **CMS NPI Registry** — every doctor, dentist, therapist, pharmacy, hospital and clinic in the US has an NPI. Search by specialty, name, organization, city, or state and get clean, structured JSON: NPI, credentials, specialty, license, address, and phone. Built for **healthcare sales, recruiting, provider verification, and B2B data**. No API key.

**Keywords:** NPI registry API, NPI lookup, healthcare provider data, doctor lookup, provider verification, healthcare sales leads, CMS NPI, medical provider directory.

---

### Why this actor

The NPPES NPI Registry is the authoritative US directory of healthcare providers, with a free API — but it returns deeply nested records (taxonomies, multiple addresses, identifiers) and paginates with `skip`/`limit`. This actor flattens each provider into one clean record and handles paging for you.

- **Search every US provider** — individuals (NPI-1) and organizations (NPI-2).
- **Flexible filters** — specialty/taxonomy, state, city, ZIP (wildcards), organization, first/last name, or a direct NPI.
- **Clean output** — NPI, type, name, credential, primary specialty, license, full location address, phone, status, enumeration date.
- **No API key** — official CMS NPPES API.

---

### What you can build

- **Healthcare sales & marketing** — build targeted provider lists by specialty + geography.
- **Recruiting** — find providers by specialty and location.
- **Provider verification / credentialing** — confirm an NPI, specialty, license, and active status.
- **Network & market analysis** — map provider density by specialty across regions.
- **Data enrichment** — resolve provider names to NPIs and structured records.

---

### Input

At least one search field is required.

| Field | Type | Description |
|---|---|---|
| `taxonomyDescription` | string | Specialty (e.g. `Dentist`, `Cardiology`, `Pharmacy`). |
| `state` | string | 2-letter US state code. |
| `city` | string | City name. |
| `postalCode` | string | ZIP (wildcard ok, e.g. `902*`). |
| `organizationName` | string | Org/practice name (wildcard ok). |
| `firstName` / `lastName` | string | Individual provider name. |
| `npiNumber` | string | Look up a specific 10-digit NPI. |
| `maxResults` | integer | Max providers (registry caps a query at 1,200). |

#### Example

```json
{ "taxonomyDescription": "Cardiology", "state": "NY", "city": "New York", "maxResults": 500 }
````

***

### Output

```json
{
  "npi": "1760813802",
  "type": "Organization",
  "name": "101 DENTAL GROUP",
  "credential": null,
  "status": "Active",
  "primary_specialty": "Dentist, General Practice",
  "taxonomy_code": "1223G0001X",
  "license": "54634",
  "license_state": "CA",
  "address": "7259 OWENSMOUTH AVE",
  "city": "CANOGA PARK",
  "state": "CA",
  "postal_code": "913031530",
  "phone": "818-999-9900",
  "enumeration_date": "2013-11-27",
  "scraped_at": "2026-06-12T00:00:00.000Z"
}
```

A final `{"_type":"summary"}` record reports how many providers were returned.

***

### Pricing

**First 25 providers free per account**, then **$0.003 per provider**. Zero charge on empty searches. No monthly rental, no API key.

***

### FAQ

**Do I need a key?** No — the CMS NPI Registry API is fully open.

**Individuals and organizations?** Both — NPI-1 (individuals) and NPI-2 (organizations), labeled in the `type` field.

**How many results per search?** The registry caps a single query at 1,200 (paged). Narrow by city/specialty for larger universes.

**Can I verify one NPI?** Yes — pass `npiNumber` for a direct lookup.

# Actor input Schema

## `taxonomyDescription` (type: `string`):

Provider specialty (e.g. Dentist, Cardiology, Physical Therapist, Pharmacy). Partial matches allowed.

## `state` (type: `string`):

US state code (e.g. CA, NY, TX).

## `city` (type: `string`):

City name.

## `postalCode` (type: `string`):

ZIP code (supports wildcard, e.g. 902\*).

## `organizationName` (type: `string`):

Organization/practice name (supports wildcard \*).

## `firstName` (type: `string`):

Individual provider first name.

## `lastName` (type: `string`):

Individual provider last name.

## `npiNumber` (type: `string`):

Look up a specific 10-digit NPI directly.

## `maxResults` (type: `integer`):

Maximum providers to return (NPI Registry caps a single query at 1,200).

## Actor input object example

```json
{
  "taxonomyDescription": "Dentist",
  "state": "CA",
  "maxResults": 25
}
```

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "taxonomyDescription": "Dentist",
    "state": "CA",
    "maxResults": 25
};

// Run the Actor and wait for it to finish
const run = await client.actor("themineworks/npi-registry-healthcare").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "taxonomyDescription": "Dentist",
    "state": "CA",
    "maxResults": 25,
}

# Run the Actor and wait for it to finish
run = client.actor("themineworks/npi-registry-healthcare").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "taxonomyDescription": "Dentist",
  "state": "CA",
  "maxResults": 25
}' |
apify call themineworks/npi-registry-healthcare --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=themineworks/npi-registry-healthcare",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "NPI Registry Scraper - US Healthcare Providers & NPIs",
        "description": "Affordable NPI Registry scraper: US healthcare providers, NPIs & specialties. $3/1,000 results, 25 free, pay-per-result, no subscription. Works in Claude, ChatGPT & any MCP-compatible AI agent.",
        "version": "0.1",
        "x-build-id": "ytJYg1zwwoezw2WTU"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/themineworks~npi-registry-healthcare/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-themineworks-npi-registry-healthcare",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/themineworks~npi-registry-healthcare/runs": {
            "post": {
                "operationId": "runs-sync-themineworks-npi-registry-healthcare",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/themineworks~npi-registry-healthcare/run-sync": {
            "post": {
                "operationId": "run-sync-themineworks-npi-registry-healthcare",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "taxonomyDescription": {
                        "title": "Specialty / taxonomy",
                        "type": "string",
                        "description": "Provider specialty (e.g. Dentist, Cardiology, Physical Therapist, Pharmacy). Partial matches allowed."
                    },
                    "state": {
                        "title": "State (2-letter)",
                        "type": "string",
                        "description": "US state code (e.g. CA, NY, TX)."
                    },
                    "city": {
                        "title": "City",
                        "type": "string",
                        "description": "City name."
                    },
                    "postalCode": {
                        "title": "Postal code",
                        "type": "string",
                        "description": "ZIP code (supports wildcard, e.g. 902*)."
                    },
                    "organizationName": {
                        "title": "Organization name",
                        "type": "string",
                        "description": "Organization/practice name (supports wildcard *)."
                    },
                    "firstName": {
                        "title": "First name",
                        "type": "string",
                        "description": "Individual provider first name."
                    },
                    "lastName": {
                        "title": "Last name",
                        "type": "string",
                        "description": "Individual provider last name."
                    },
                    "npiNumber": {
                        "title": "NPI number",
                        "type": "string",
                        "description": "Look up a specific 10-digit NPI directly."
                    },
                    "maxResults": {
                        "title": "Max providers",
                        "minimum": 1,
                        "maximum": 1200,
                        "type": "integer",
                        "description": "Maximum providers to return (NPI Registry caps a single query at 1,200).",
                        "default": 200
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
