# US Healthcare Organization Data — NPI Registry (NPPES) (`foxlabs/npi-healthcare-organization-data`) Actor

Look up US healthcare organizations and providers in the official NPPES NPI registry by name, NPI number, state or taxonomy. Returns NPI, legal and doing-business-as names, taxonomy specialty, licence numbers, practice and mailing addresses, phone and authorized official.

- **URL**: https://apify.com/foxlabs/npi-healthcare-organization-data.md
- **Developed by:** [Berkan Kaplan](https://apify.com/foxlabs) (community)
- **Categories:** Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$4.00 / 1,000 company records

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

## US Healthcare Organization Data — NPI Registry (NPPES) 🏥

**foXLabs US registry-data series:** [Pharma Companies (Drugs@FDA)](https://apify.com/foxlabs/fda-drug-sponsor-data) · [Device Manufacturers (FDA)](https://apify.com/foxlabs/fda-device-manufacturer-data)

🎉 Turn the US National Provider Identifier registry into clean, structured healthcare-organization data — no login, no API key, one row per organization.
Built for medical-device & pharma sales, healthcare recruiters, and credentialing / provider-network / claims-integrity teams.

### 🔍 What is the US Healthcare Organization Data — and when should you use it?

Every US entity that bills for healthcare must hold a National Provider Identifier. Give this actor an organization name (`Mayo Clinic`) or a 10-digit NPI (`1881018208`) and it returns matching organizations — name, NPI, taxonomy/specialty, practice address, phone, the **authorized official** (a named decision-maker), mailing address and practice-location count — as clean rows you can filter, export or feed to an AI agent.

**Use it when you need:** every hospital, clinic, lab, pharmacy or group practice matching a name; a specialty-targeted list by taxonomy and state; a recruiter or sales list with a named contact; or resolving a known NPI to its organization.

**Use something else when:** you need an *individual* clinician roster at scale (set `enumerationType` to NPI-1), or firmographics NPPES doesn’t hold such as revenue or tax id — pair this with a firmographic actor from [Fox Labs](https://apify.com/foxlabs).

### 🤖 Use with AI agents

**Already on the Apify MCP server?** Ask for this Actor by name: `foxlabs/npi-healthcare-organization-data`.

**Your agent can pay for its own runs.** This Actor is pay-per-event with agentic payments, so an agent can discover it, run it and settle the bill over **x402 (USDC on Base)** or **Skyfire** — no Apify account or API token of its own. Billing is the same either way: per delivered record, never for errors.

Otherwise paste this into Claude, ChatGPT, Cursor or any MCP-enabled assistant:

```
I want to pull data using the Apify Actor `foxlabs/npi-healthcare-organization-data`.

Input: `queries` is a list of organization names or 10-digit NPI numbers. `maxResultsPerQuery` caps rows per query (default 50). Optional `state` and `enumerationType` (NPI-2 organizations, NPI-1 individuals, or any).

Start with:
{ "queries": ["Mayo Clinic"], "maxResultsPerQuery": 50 }

Ask me what to look up, run the Actor, then summarise the rows as a table.
```

Things you can ask your agent for:

- "Pull every Mayo Clinic organization and group them by specialty."
- "List the clinical labs in Ohio with a named authorized official."
- "Resolve NPI 1881018208 to its organization, address and taxonomy."

The machine-readable API, MCP config and OpenAPI definition live at `apify.com/foxlabs/npi-healthcare-organization-data.md`.

### 📋 Overview

Everything you need to turn the NPPES NPI Registry — CMS’s official, keyless JSON API into clean, structured data — in one actor, with no login, cookies or API key.

**Why teams pick this actor:**

- ✅ **Whole registry, one call** — name or NPI in, matching organizations out, with a named decision-maker.
- 🎯 **Relevance-ranked** — a name search leads with the organization actually called that, not a firm that merely lists it as a former name.
- 🧭 **Specialty-native** — taxonomy code + description on every row; filter by state.
- 🧹 **No empty-promise columns** — only fields NPPES actually carries; the decision-maker is a real `authorizedOfficial` object.
- 💰 **Pay only for results** — per-row pricing, empty/failed lookups never billed.
- 🤖 **Agent-ready** — MCP + x402 agentic payments.

### ✨ Features

- 🔍 **Name or NPI lookup** — organization-name search (relevance-ranked) or exact 10-digit NPI.
- 🏥 **Full organization profile** — name, status, practice + mailing address, phone, practice-location count, DBA names.
- 🧑‍💼 **Decision-maker** — the authorized official’s name, title and phone where the registry lists one.
- 🧬 **Taxonomy** — primary + all specialty taxonomies with code, description and license.
- 📦 **Clean export** — deduplicated camelCase rows, ready for CSV/Excel/JSON.

### 🎬 Quick Start

```bash
curl -X POST "https://api.apify.com/v2/acts/foxlabs~npi-healthcare-organization-data/runs?token=YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "queries": ["Mayo Clinic"], "maxResultsPerQuery": 50 }'
```

### 🚀 Getting Started (3 steps)

1. **Choose your targets** — organization names (`Mayo Clinic`, `LabCorp`) or 10-digit NPIs.
2. **Set the cap** — `maxResultsPerQuery` limits rows per query (default 50); add `state` to narrow.
3. **Run and export** — get a clean dataset as JSON, CSV or Excel.

### 📥 Input

```json
{
  "queries": ["Mayo Clinic", "LabCorp", "1881018208"],
  "maxResultsPerQuery": 50,
  "state": "OH",
  "enumerationType": "NPI-2"
}
```

| Field | Type | Description |
|---|---|---|
| `queries` | array | Organization names or 10-digit NPI numbers. Numbers are exact lookups; names run a relevance-ranked registry search. |
| `maxResultsPerQuery` | integer | Caps rows per query (default 50, max 200 per NPPES). |
| `state` | string | Optional 2-letter state filter for name searches (e.g. `OH`). |
| `enumerationType` | string | `NPI-2` organizations (default), `NPI-1` individuals, or `any`. |
| `maxConcurrency` | integer | How many queries to fetch at once (default 5). |
| `includeRaw` | boolean | Attach the source’s untouched record under `raw`. |

### 📤 Output

One row per record, saved to the dataset. Every row also carries `query`, `scrapedAt`, and — when a lookup fails — an `error` explaining why (never silently dropped, never billed).

| Field | Type | Description |
|---|---|---|
| `companyName` | string | Organization (or individual) name |
| `registrationNumber` | string | The 10-digit NPI — the join key |
| `status` | string | `active` / `inactive` |
| `industry` / `industryCode` | string | Primary taxonomy description + code |
| `taxonomies` | array | All specialties with code, description, license, state |
| `authorizedOfficial` | object | Named decision-maker: name, title, phone |
| `address` / `city` / `postalCode` | string | Practice location |
| `mailingAddress` | string | Mailing address where it differs |
| `phone` | string | Practice phone |
| `doingBusinessAs` | array | Other / DBA names |
| `practiceLocationCount` | integer | Number of secondary practice locations |
| `sourceUrl` | string | Public NPPES provider-view URL |

```json
{
  "companyName": "MAYO CLINIC",
  "registrationNumber": "1881018208",
  "status": "active",
  "industry": "General Acute Care Hospital",
  "industryCode": "282N00000X",
  "authorizedOfficial": { "name": "…", "title": "…", "phone": "…" },
  "address": "…, ROCHESTER, MN, 55905, US",
  "practiceLocationCount": 0,
  "sourceUrl": "https://npiregistry.cms.hhs.gov/provider-view/1881018208"
}
```

### 💼 Use cases

**1. Territory + specialty targeting** — medical-device / pharma reps sizing accounts by specialty and location.
*Input:* organization names or a state + `enumerationType: NPI-2`. *Output:* organizations by taxonomy + address. *Use:* build a territory plan with named contacts.

**2. Healthcare recruiter sourcing** — find employers by type and location with a contact.
*Input:* names or `state` filter. *Output:* organizations + authorizedOfficial. *Use:* a sourcing list in minutes.

**3. Credentialing / network integrity** — verify an organization’s NPI, status and taxonomy.
*Input:* known NPIs in `queries`. *Output:* exact organization records. *Use:* reconcile a provider directory.

### 🔗 Integration

**JavaScript / Node.js**

```javascript
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });
const run = await client.actor('foxlabs/npi-healthcare-organization-data').call({ "queries": ["Mayo Clinic"], "maxResultsPerQuery": 50 });
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items[0]);
```

**Python**

```python
from apify_client import ApifyClient
client = ApifyClient('YOUR_TOKEN')
run = client.actor('foxlabs/npi-healthcare-organization-data').call(run_input={ "queries": ["Mayo Clinic"], "maxResultsPerQuery": 50 })
for item in client.dataset(run['defaultDatasetId']).iterate_items():
    print(item)
```

**Automation (n8n / Zapier / Make):** schedule or webhook → HTTP request to the actor API with your `queries` → handle the JSON dataset → push to a sheet, CRM or dashboard.

### 📊 Pricing

Pay-per-event: **$0.002 per delivered record**. Empty or failed lookups are never billed. Bulk queries scale linearly; you pay for the rows you actually get. [View current pricing.](https://apify.com/foxlabs/npi-healthcare-organization-data)

### ❓ FAQ

**Do I need an NPPES account, login or API key?** No. This reads the public CMS NPPES API — the same registry the government publishes for exactly this purpose.

**What do I search by?** An organization name (relevance-ranked) or a 10-digit NPI (exact). Set `enumerationType` to NPI-1 for individual clinicians.

**Why did a name return a differently-named organization?** NPPES also matches a query against former / "doing business as" names. We rank primary-name matches first, and the matched other-name appears in `doingBusinessAs`.

**How current is the data?** Every run queries NPPES live, so results are as fresh as the registry.

**Can I export to CSV / Excel / JSON?** Yes — directly from the Apify dataset.

### 🐛 Troubleshooting

- **Fewer rows than expected** — raise `maxResultsPerQuery` (NPPES caps a single query at 200), or drop the `state` filter.
- **A name returns an unexpected organization** — it matched a former/DBA name; check `doingBusinessAs`, or search the exact NPI.
- **No rows for a name** — NPPES needs at least two characters and matches on the registered name; try the organization’s legal name or its NPI.

### ⚠️ Trademark

Independent tool built on the public CMS NPPES NPI Registry. Not affiliated with or endorsed by CMS or any named health system. Organization names and marks belong to their owners and are used for identification only.

### ⚖️ Is it legal to scrape this data?

This actor reads organization registry data (business, not patient, data) from an official US government API published for public use. Results can still contain personal data (e.g. an official’s name); personal data is protected by the GDPR and similar laws, so only process it with a legitimate basis. See Apify’s blog post on the legality of web scraping.

### 🤝 Support & contact

- 🌐 **Website:** [data.foxlabs.com.tr](https://data.foxlabs.com.tr)
- 📧 **Email:** info@foxlabs.com.tr
- 🐛 **Issues:** open a ticket in the Actor’s **Issues** tab
- 🧠 **More clean B2B data actors:** [Fox Labs on Apify](https://apify.com/foxlabs)

### Changelog

#### 0.2 — 2026-09-06

- **Relevance-ranked name search.** NPPES matches a query against the legal name *and* every "other/DBA" name, and returns hits in NPI order — so a firm that merely lists your term as a former name could sort above the organization actually called that. Name searches now rank primary-name matches first (stable within a rank; number lookups stay exact).
- **Dropped empty-promise columns.** Removed `taxNumber`, `employees`, `capital`, `website`, `email` and `officers` — NPPES never carries them. The decision-maker is delivered in the richer `authorizedOfficial` field instead.
- **Cleaner prefills.** Default examples now return the organization you meant on the first row: `Mayo Clinic`, `LabCorp`, `Stanford Health Care`, plus a raw-NPI example (`1881018208`).
- **Output schema linked** in `actor.json` so the Store renders the Output tab.

#### 0.1

- Initial release: organization and individual-provider lookup from the NPPES NPI Registry by organization name or 10-digit NPI, returning taxonomy, authorized official, practice-location count and mailing address.

# Actor input Schema

## `queries` (type: `array`):

Organization names (`Mayo Clinic`) or 10-digit NPI numbers (`1881018208`). Numbers are exact lookups; names run a registry search.

## `maxResultsPerQuery` (type: `integer`):

How many rows a single query may produce.

## `maxConcurrency` (type: `integer`):

How many queries to run at the same time. Lower it if the source throttles you.

## `includeRaw` (type: `boolean`):

Attach the source's untouched response under `raw`. Useful when you need a field this actor does not map.

## `requestDelayMs` (type: `integer`):

Politeness delay against a public source. Raise it for large runs.

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

Optional. NPPES is an open federal API and rarely needs a proxy.

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

Two-letter state code (`CA`, `NY`). Leave empty to search nationally.

## `enumerationType` (type: `string`):

Organizations (NPI-2) or individual practitioners (NPI-1).

## Actor input object example

```json
{
  "queries": [
    "Mayo Clinic",
    "LabCorp",
    "Stanford Health Care",
    "1881018208"
  ],
  "maxResultsPerQuery": 10,
  "maxConcurrency": 5,
  "includeRaw": false,
  "requestDelayMs": 0,
  "proxyConfiguration": {
    "useApifyProxy": false
  },
  "state": "",
  "enumerationType": "NPI-2"
}
```

# Actor output Schema

## `dataset` (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 = {
    "queries": [
        "Mayo Clinic",
        "LabCorp",
        "Stanford Health Care",
        "1881018208"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("foxlabs/npi-healthcare-organization-data").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 = { "queries": [
        "Mayo Clinic",
        "LabCorp",
        "Stanford Health Care",
        "1881018208",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("foxlabs/npi-healthcare-organization-data").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 '{
  "queries": [
    "Mayo Clinic",
    "LabCorp",
    "Stanford Health Care",
    "1881018208"
  ]
}' |
apify call foxlabs/npi-healthcare-organization-data --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,foxlabs/npi-healthcare-organization-data"
        }
    }
}

```

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/V38ta23yJumuedweR/builds/s38asVSBuHhqkyAAa/openapi.json
