# NPI Registry Scraper CHEAP 💰 | Providers (`ahmed_jasarevic/medical-scraper`) Actor

Extract healthcare provider data from the NPI Registry — NPI numbers, specialties, addresses, phone numbers and insurance participation. Search by NPI, name, specialty, city or state.

- **URL**: https://apify.com/ahmed\_jasarevic/medical-scraper.md
- **Developed by:** [Ahmed Jasarevic](https://apify.com/ahmed_jasarevic) (community)
- **Categories:** Automation, Developer tools, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.90 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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 Scraper — Healthcare Provider & Insurance Data

Extract **healthcare provider data** from the NPI Registry — names, specialties, addresses, phone numbers, taxonomy codes and insurance participation. Search by **NPI number, name, specialty, city, state** or organization.

### Main Use Cases

- **Healthcare lead generation** — collect provider contact data
- **Insurance network building** — find providers by specialty and location
- **Medical practice research** — analyze provider density by area
- **Compliance verification** — validate NPI numbers and credentials
- **Referral network mapping** — understand provider relationships
- **Healthcare market research** — analyze specialty distribution

### Output Fields

| Field | Type | Description |
|---|---|---|
| `npiNumber` | string | NPI identifier |
| `firstName` | string | Provider first name |
| `lastName` | string | Provider last name |
| `organizationName` | string | Practice/organization name |
| `taxonomyCodes` | array | Specialty taxonomy codes |
| `primaryTaxonomy` | string | Primary specialty |
| `address` | string | Practice address |
| `city` | string | City |
| `state` | string | State |
| `postalCode` | string | ZIP code |
| `phone` | string | Phone number |
| `fax` | string | Fax number |
| `enumerationDate` | string | NPI enumeration date |
| `lastUpdateDate` | string | Last update |
| `providerType` | string | Individual or organization |
| `scrapedAt` | string | Extraction timestamp |

### Input

| Field | Type | Default | Notes |
|---|---|---|---|
| `npiNumber` | string | — | Specific NPI number |
| `firstName` | string | — | Provider first name |
| `lastName` | string | — | Provider last name |
| `organizationName` | string | — | Organization name |
| `specialty` | string | — | Taxonomy code or keyword |
| `city` | string | — | City filter |
| `state` | string | — | State filter |
| `postalCode` | string | — | ZIP filter |
| `providerType` | string | — | NPI-1 (individual) or NPI-2 (org) |
| `maxItems` | integer | `50` | Max providers |

### Example Input

```json
{
  "specialty": "Cardiology",
  "state": "CA",
  "maxItems": 100
}
```

### FAQ

#### What is the NPI Registry?

The National Plan and Provider Enumeration System (NPPES) maintains the NPI Registry — a free public database of all healthcare providers with NPI numbers.

#### Is this data free?

Yes. The NPI Registry is a free public database. This actor extracts the publicly available data.

#### Can I search by specialty?

Yes. Use taxonomy codes (e.g. "207C00000X" for Cardiology) or specialty keywords.

### For AI Agents & LLM Apps

**Purpose:** Extract healthcare provider data from the NPI Registry — NPI numbers, specialties, addresses and contact info.

**Minimal working input:**

```json
{
  "specialty": "Family Medicine",
  "state": "NY",
  "maxItems": 20
}
```

**Output fields:** `npiNumber`, `firstName`, `lastName`, `organizationName`, `taxonomyCodes`, `primaryTaxonomy`, `address`, `city`, `state`, `postalCode`, `phone`, `enumerationDate`, `providerType`, `scrapedAt`.

**Behaviors an agent should know:**

- Search by NPI number, name, specialty, location or combination.
- `providerType`: "NPI-1" = individual, "NPI-2" = organization.
- Data is from the free NPI Registry API.

**Billing:** Free.

### Legal & Compliance Disclaimer

This actor extracts data from the public NPI Registry. NPI data is publicly available under federal law. Users are responsible for compliance with applicable healthcare data regulations (HIPAA, etc.) when using this data.

### SEO Keywords

npi registry scraper, npi data, healthcare provider data, medical provider database, doctor directory, physician contact data, npi lookup, healthcare lead generation, medical practice data, provider specialty data, insurance network data, npi number lookup, healthcare market research, medical provider directory, clinic contact data, healthcare compliance data, provider credential data, medical referral network, healthcare data extraction, npi api alternative

### Related Actors

Verified related actors on Apify that pair well with this one. All links point to real, publicly available actors.

- [Google Maps Places](https://apify.com/compass/crawler-google-places)
- [Google Maps Reviews Scraper](https://apify.com/compass/Google-Maps-Reviews-Scraper)
- [Yelp Reviews Scraper](https://apify.com/web_wanderer/yelp-reviews-scraper)

# Actor input Schema

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

Direct lookup by a specific 10-digit NPI number. Overrides all other search criteria.

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

First name of an individual provider (e.g. 'Jane'). Best combined with Last Name and a location.

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

Last name of an individual provider (e.g. 'Smith'). Best combined with First Name and a location.

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

Name of a medical practice or organization (e.g. 'Boston Children's Hospital'). Works best together with State.

## `specialty` (type: `string`):

Provider specialty/taxonomy description, e.g. 'Dermatology', 'Family Medicine', 'Dentist', 'Physical Therapist'.

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

City to search in, e.g. 'Boston'.

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

Two-letter US state code, e.g. 'MA', 'CA', 'TX'. Strongly recommended to narrow results.

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

5-digit ZIP code or its first 3 digits (e.g. '021' matches all ZIPs starting with 021).

## `providerType` (type: `string`):

Filter by individual providers (NPI-1) or organizations/practices (NPI-2).

## `maxItems` (type: `integer`):

Maximum number of providers to extract per run. The NPI Registry API returns at most ~1200 records per query (its own pagination cap).

## `proxyConfiguration` (type: `object`):

Proxy settings. Apify proxy is used by default so your IP is never exposed.

## Actor input object example

```json
{
  "specialty": "Dermatology",
  "providerType": "any",
  "maxItems": 100,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("ahmed_jasarevic/medical-scraper").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 = {}

# Run the Actor and wait for it to finish
run = client.actor("ahmed_jasarevic/medical-scraper").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{}' |
apify call ahmed_jasarevic/medical-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,ahmed_jasarevic/medical-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/JrKqWrJE8pK55jDfu/builds/RVRWGVVS2aG1POJfN/openapi.json
