# NPI Registry API

> NPI Registry returns healthcare provider details and is available as a workflow and API.

NPI Registry, also called NPPES, searches providers by name and optional place, specialty, and provider type; a name is required. Get provider returns public details and registry dates for a required 10-digit NPI number; some fields may be missing.

- Page: https://fous.com/workflows/npi-registry
- Handle: `@npi-registry`
- Category: [Health](https://fous.com/workflows/category/health)
- Source website: https://npiregistry.cms.hhs.gov
- Last verified: Sep 29, 2026
- Fous is not affiliated with NPI Registry.

## Methods

### Get provider

Operation `get_provider`, version 1. 1 credit per call.

Get a provider’s public name, specialties, addresses, contact details and registry dates from a 10-digit NPI number. Some fields may be missing; deactivated NPIs may have no public record.

**Input**

| Field | Type | Required | Example | Description |
|---|---|---|---|---|
| `npi_number` | string | yes | `"1003000126"` | The 10-digit NPI number shown on a medical bill, prescription or claim, for example 1003000126. |

**Input schema**

```json
{
  "type": "object",
  "required": [
    "npi_number"
  ],
  "properties": {
    "npi_number": {
      "type": "string",
      "description": "The 10-digit NPI number shown on a medical bill, prescription or claim, for example 1003000126.",
      "examples": [
        "1003000126",
        "1881018208",
        "1003000142"
      ]
    }
  },
  "additionalProperties": false,
  "examples": [
    {
      "npi_number": "1003000126"
    },
    {
      "npi_number": "1881018208"
    },
    {
      "npi_number": "1003000142"
    }
  ]
}
```

**Output**

| Field | Type | Example | Description |
|---|---|---|---|
| `fax` | string or null | `"419-517-7656"` |  |
| `name` | string | `"ARDALAN ENKESHAFI, M.D."` | Provider name with credentials when listed. |
| `phone` | string or null | `"443-602-6207"` |  |
| `status` | string | `"active"` |  |
| `specialties` | array |  |  |
| `specialties[].name` | string | `"Internal Medicine"` |  |
| `specialties[].is_primary` | boolean | `false` |  |
| `specialties[].license_state` | string or null | `"MD"` |  |
| `license_state` | string or null | `"DC"` | State of the primary specialty license, when listed. |
| `provider_type` | string | `"individual"` |  |
| `registry_link` | string | `"https://npiregistry.cms.hhs.gov/provider-view/1003000126"` |  |
| `mailing_address` | string or null | `"6410 ROCKLEDGE DR STE 304, BETHESDA, MD 20817-1841"` |  |
| `practice_address` | string or null | `"6410 ROCKLEDGE DR STE 304, BETHESDA, MD 20817-1841"` |  |
| `date_last_updated` | string or null | `"2025-05-28"` |  |
| `date_first_registered` | string or null | `"2007-08-31"` |  |

**Example input**

```json
{
  "npi_number": "1003000126"
}
```

**Example output**

```json
{
  "fax": null,
  "name": "ARDALAN ENKESHAFI, M.D.",
  "phone": "443-602-6207",
  "status": "active",
  "specialties": [
    {
      "name": "Internal Medicine",
      "is_primary": false,
      "license_state": "MD"
    },
    {
      "name": "Internal Medicine",
      "is_primary": false,
      "license_state": "MD"
    },
    {
      "name": "Internal Medicine",
      "is_primary": false,
      "license_state": "VA"
    }
  ],
  "license_state": "DC",
  "provider_type": "individual",
  "registry_link": "https://npiregistry.cms.hhs.gov/provider-view/1003000126",
  "mailing_address": "6410 ROCKLEDGE DR STE 304, BETHESDA, MD 20817-1841",
  "practice_address": "6410 ROCKLEDGE DR STE 304, BETHESDA, MD 20817-1841",
  "date_last_updated": "2025-05-28",
  "date_first_registered": "2007-08-31"
}
```

### Search providers

Operation `search_providers`, version 1. 1 credit per call.

Find US healthcare providers by name, place, specialty and provider type. Includes registered practice contact details and primary taxonomy; search results may include providers with similar names.

**Input**

| Field | Type | Required | Example | Description |
|---|---|---|---|---|
| `city` | string | no | `"Cleveland"` | Practice city, for example "Cleveland". |
| `name` | string | yes | `"Cleveland Clinic"` | Person or organization name, for example "John Smith" or "Cleveland Clinic". |
| `state` | string | no | `"Ohio"` | US state name or two-letter code, for example "Ohio" or "OH". |
| `specialty` | string | no | `"cardiology"` | Specialty in plain words, for example "cardiology" or "Family Medicine". |
| `max_results` | integer | no | `3` | Maximum providers to return, for example 20 (up to 200). |
| `provider_type` | string | no | `"organization"` | Type of provider to find, for example "individual". |

**Input schema**

```json
{
  "type": "object",
  "required": [
    "name"
  ],
  "properties": {
    "city": {
      "type": "string",
      "default": "",
      "description": "Practice city, for example \"Cleveland\".",
      "examples": [
        "Cleveland"
      ]
    },
    "name": {
      "type": "string",
      "description": "Person or organization name, for example \"John Smith\" or \"Cleveland Clinic\".",
      "examples": [
        "Cleveland Clinic",
        "John Smith",
        "Unlikelyuniquez Providerwxyz"
      ]
    },
    "state": {
      "type": "string",
      "default": "",
      "description": "US state name or two-letter code, for example \"Ohio\" or \"OH\".",
      "examples": [
        "Ohio",
        "OH"
      ]
    },
    "specialty": {
      "type": "string",
      "default": "",
      "description": "Specialty in plain words, for example \"cardiology\" or \"Family Medicine\".",
      "examples": [
        "cardiology"
      ]
    },
    "max_results": {
      "type": "integer",
      "default": 20,
      "maximum": 200,
      "minimum": 1,
      "description": "Maximum providers to return, for example 20 (up to 200).",
      "x-fous-developer": true,
      "examples": [
        3,
        2,
        4
      ]
    },
    "provider_type": {
      "enum": [
        "any",
        "individual",
        "organization"
      ],
      "type": "string",
      "default": "any",
      "description": "Type of provider to find, for example \"individual\".",
      "examples": [
        "organization",
        "individual",
        "any"
      ]
    }
  },
  "additionalProperties": false,
  "examples": [
    {
      "city": "Cleveland",
      "name": "Cleveland Clinic",
      "state": "Ohio",
      "max_results": 3,
      "provider_type": "organization"
    },
    {
      "city": "Cleveland",
      "name": "John Smith",
      "state": "OH",
      "max_results": 3,
      "provider_type": "individual"
    },
    {
      "name": "John Smith",
      "specialty": "cardiology",
      "max_results": 2,
      "provider_type": "individual"
    }
  ]
}
```

**Output**

| Field | Type | Example | Description |
|---|---|---|---|
| `providers` | array |  | Matching healthcare providers. |
| `providers[].name` | string or null | `"Cleveland Clinic"` | Provider name and credentials, if listed. |
| `providers[].phone` | string or null | `"216-444-2136"` | Practice location phone number. |
| `providers[].active` | string or null | `"yes"` | yes or no according to the NPI record. |
| `providers[].npi_number` | string | `"1275791162"` | National Provider Identifier number. |
| `providers[].license_state` | string or null | `"OH"` | State of the primary specialty license. |
| `providers[].provider_type` | string | `"Organization"` | Individual or Organization. |
| `providers[].registry_link` | string | `"https://npiregistry.cms.hhs.gov/provider-view/1275791162"` | Link to the provider record in the NPI Registry. |
| `providers[].practice_address` | string or null | `"9500 Euclid Ave, Department Of Radiology- HB6, Cleveland, OH 44195-0001"` | Practice location address. |
| `providers[].primary_specialty` | string or null | `"General Acute Care Hospital"` | Primary registered specialty. |

**Example input**

```json
{
  "city": "Cleveland",
  "name": "Cleveland Clinic",
  "state": "Ohio",
  "max_results": 3,
  "provider_type": "organization"
}
```

**Example output**

```json
{
  "providers": [
    {
      "name": "Cleveland Clinic",
      "phone": "216-444-2136",
      "active": "yes",
      "npi_number": "1275791162",
      "license_state": null,
      "provider_type": "Organization",
      "registry_link": "https://npiregistry.cms.hhs.gov/provider-view/1275791162",
      "practice_address": "9500 Euclid Ave, Department Of Radiology- HB6, Cleveland, OH 44195-0001",
      "primary_specialty": "General Acute Care Hospital"
    },
    {
      "name": "Cleveland Clinic",
      "phone": "216-444-6781",
      "active": "yes",
      "npi_number": "1356508964",
      "license_state": null,
      "provider_type": "Organization",
      "registry_link": "https://npiregistry.cms.hhs.gov/provider-view/1356508964",
      "practice_address": "9500 Euclid Ave, Cleveland, OH 44195-0001",
      "primary_specialty": "Chronic Disease Hospital"
    },
    {
      "name": "Cleveland Clinic",
      "phone": "216-526-5430",
      "active": "yes",
      "npi_number": "1336316389",
      "license_state": null,
      "provider_type": "Organization",
      "registry_link": "https://npiregistry.cms.hhs.gov/provider-view/1336316389",
      "practice_address": "Cleveland Clinic 9500 Euclid Ave H35, Cardiothoracic Surgery,, Cleveland, OH 44195-0001",
      "primary_specialty": "General Acute Care Hospital"
    }
  ]
}
```

## Quick start

Call the API with a Fous API key (`FOUS_API_KEY`). To create one, turn on Developer mode in Fous Studio, then open Keys & connections → API keys (https://app.fous.com/keys).

```bash
# First set your key: export FOUS_API_KEY='YOUR_FOUS_API_KEY'
: "${FOUS_API_KEY:?Set FOUS_API_KEY before running this example}"

curl 'https://api.fous.com/v1/query' \
  --fail-with-body --silent --show-error --max-time 120 \
  -H "Authorization: Bearer $FOUS_API_KEY" \
  -H 'Content-Type: application/json' \
  --data-raw '{
  "api": "@npi-registry",
  "visibility": "public",
  "operation": "get_provider",
  "version": 1,
  "input": {
    "npi_number": "1003000126"
  },
  "response": {
    "format": "json"
  }
}'
```

```python
# Save as fous.py and run with python3 fous.py. No packages needed.
# First set your key: export FOUS_API_KEY='YOUR_FOUS_API_KEY'
import json
import os
import urllib.error
import urllib.request

api_key = os.environ.get("FOUS_API_KEY")
if not api_key:
    raise RuntimeError("Set FOUS_API_KEY before running this example")

body = json.loads("{\n  \"api\": \"@npi-registry\",\n  \"visibility\": \"public\",\n  \"operation\": \"get_provider\",\n  \"version\": 1,\n  \"input\": {\n    \"npi_number\": \"1003000126\"\n  },\n  \"response\": {\n    \"format\": \"json\"\n  }\n}")
request = urllib.request.Request(
    "https://api.fous.com/v1/query",
    data=json.dumps(body).encode("utf-8"),
    headers={
        "Authorization": f"Bearer {api_key}",
        "Content-Type": "application/json",
    },
    method="POST",
)
try:
    with urllib.request.urlopen(request, timeout=120) as response:
        result = json.load(response)
except urllib.error.HTTPError as error:
    raise RuntimeError(f"HTTP {error.code}: {error.read().decode('utf-8', errors='replace')}") from error
if result.get("success") is False:
    raise RuntimeError(result.get("error", {}).get("message", "Request failed"))
print(json.dumps(result["data"]["output"], indent=2))
```

```typescript
// Save as fous.mts and run with npx tsx fous.mts.
// First set your key: export FOUS_API_KEY='YOUR_FOUS_API_KEY'
const apiKey = process.env.FOUS_API_KEY;
if (!apiKey) throw new Error("Set FOUS_API_KEY before running this example");

const response = await fetch("https://api.fous.com/v1/query", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${apiKey}`,
    "Content-Type": "application/json",
  },
  signal: AbortSignal.timeout(120_000),
  body: JSON.stringify({
  "api": "@npi-registry",
  "visibility": "public",
  "operation": "get_provider",
  "version": 1,
  "input": {
    "npi_number": "1003000126"
  },
  "response": {
    "format": "json"
  }
}),
});
type ApiResult = { success: boolean; data?: { output: unknown }; error?: { message: string } };
const result: ApiResult = await response.json();
if (!response.ok || result.success === false) {
  throw new Error(result.error?.message ?? `HTTP ${response.status}`);
}
if (!result.data) throw new Error("Missing API response data");
console.log(result.data.output);
```

Or describe the data in plain language: send `{"api":"@npi-registry","prompt":"Describe the data you need, with every detail"}` to the same URL. Fous fills in the input, runs the method that fits and returns only the fields you asked for; `data.route.calls[].request` is the exact call it made. Routing is free; the run costs the same.

## Use cases

- Find providers by name, place, specialty, or type
- Look up a provider using an NPI number
- Review registered practice contact details
- Check a provider’s primary specialty and license state

## FAQ

### Is Fous affiliated with NPI Registry?

No. Fous is not affiliated with NPI Registry. This workflow reads the public npiregistry.cms.hhs.gov website and returns its data.

### How much does it cost?

Each run costs 1 credit. With pay-as-you-go, a credit costs 1¢; monthly plans cost less per credit.

### Do I need a NPI Registry account?

No. You only need a Fous account.

### How current is the data?

Fous gets the data from npiregistry.cms.hhs.gov when you run it; repeating the same request within a day may return the saved result. Fous checks this workflow automatically; it last passed a check on Sep 29, 2026.

### How can I find a provider by name and location?

Use Search providers with a name and optionally a city, state, specialty, or provider type.

### What details are available for an NPI number?

Use Get provider with the 10-digit NPI number to retrieve public provider details, specialties, addresses, contact details, and registry dates.

## Related

- [Medicare Care Compare API](https://fous.com/workflows/medicare-care-compare.md): Medicare Care Compare provides public Medicare quality ratings and details for U.S. hospitals and nursing homes; nursing home results include active facilities in the current public listing and fines from the past three years.
- [ProPublica Nonprofit Explorer API](https://fous.com/workflows/propublica-nonprofit-explorer.md): ProPublica Nonprofit Explorer searches U.S. tax-exempt organizations and shows available latest revenue, assets, filing-year finances, and top reported pay; reporting years and records vary.
- [NHS API](https://fous.com/workflows/nhs.md): NHS provides condition and medicine guidance, with condition dates reflecting the latest pages used, and nearby England service listings ordered by distance; availability details may be missing.
- [PubMed API](https://fous.com/workflows/pubmed.md): PubMed searches medical and life-science articles by topic and retrieves one article’s abstract and publication details; abstracts and free full-text links may be unavailable.
- [NPR API](https://fous.com/workflows/npr.md): NPR returns displayed section headlines, searchable articles with summaries and publication details, and available article text; date-filtered searches may miss older stories edited much later.
- [ClinicalTrials.gov API](https://fous.com/workflows/clinicaltrials-gov.md): ClinicalTrials.gov helps users find studies and view public trial records, including sponsor-run or funded studies; site distances are approximate, and contacts, eligibility, or exact dates may be missing.
- [National Park Service API](https://fous.com/workflows/national-park-service.md): The National Park Service provides official park and site information, visiting details, and current alerts; schedules and booking rules can change, and alert update dates may be unavailable.
- [NIH RePORTER API](https://fous.com/workflows/nih-reporter.md): Public research funding and project records from the National Institutes of Health.
- [All Health workflows](https://fous.com/workflows/category/health)
