Healthcare Provider API

Provider data your app can actually use.

Search 9.8 million U.S. healthcare providers by NPI, name, specialty, and ZIP code radius. One REST API, official CMS NPPES data, updated weekly.

9.8M
Providers indexed
Weekly
NPPES sync
3
Core endpoints
GET /v1/providers/nearby?zip=49684&specialty=cardiology&radius=25 200 OK
{
  "data": [{
    "npi":             "1234567890",
    "entity_type":    "individual",
    "name":            "Sarah Johnson, MD",
    "specialty":       "Cardiovascular Disease",
    "city":            "Traverse City",
    "state":           "MI",
    "status":          "active",
    "distance_miles":  3.8
  }],
  "meta": {
    "count":        14,
    "radius_miles": 25,
    "center":       {"zip": "49684"}
  }
}

Three endpoints. Every provider use case.

GET /v1/providers/{npi}

NPI Lookup

Retrieve the full record for any provider by their 10-digit NPI. Returns name, specialty, practice address, enumeration date, status, and taxonomy codes.

curl
curl -H "Authorization: Bearer KEY" \
  "https://api.npilayer.com/v1/providers/1234567890"
GET /v1/providers/search

Provider Search

Search by name, organization, specialty, city, state, or entity type. Combine filters. Returns paginated results across all 9.8 million active and deactivated providers.

curl
curl -H "Authorization: Bearer KEY" \
  "https://api.npilayer.com/v1/providers/search?
   last_name=smith&state=MI&specialty=cardiology"
Key differentiator
GET /v1/providers/nearby

Geographic Search

Find providers within a radius of any ZIP code. Filter by specialty. Results are sorted by distance and include distance_miles for each provider.

curl
curl -H "Authorization: Bearer KEY" \
  "https://api.npilayer.com/v1/providers/nearby?
   zip=49684&specialty=cardiology&radius=25"

Built on official government data. Maintained by developers.

Official CMS NPPES source
We import directly from the CMS monthly full-replacement file and weekly incremental updates — the same authoritative dataset the government publishes.
Normalized, not raw CSV
The raw NPPES file has 300+ columns with repeating taxonomy and address fields. We normalize it into clean, consistent JSON so you don't have to.
Geographic search included
PostGIS-powered radius search by ZIP code. Find cardiologists within 25 miles, filter by specialty, sort by distance — all in one request.
No per-record fees
Simple monthly plans based on API request volume. No per-lookup charges, no seat fees, no data egress fees. Predictable cost at any scale.
GET /v1/providers/1234567890 200 OK
{
  "data": {
    "npi":          "1234567890",
    "entity_type": "individual",
    "name": {
      "first":      "Sarah",
      "last":       "Johnson",
      "credential": "MD"
    },
    "status":          "active",
    "primary_taxonomy": {
      "code":        "207RC0000X",
      "description": "Cardiovascular Disease"
    },
    "practice_address": {
      "city":  "Traverse City",
      "state": "MI",
      "zip":   "49684"
    }
  },
  "meta": {
    "source": "CMS NPPES"
  }
}

Built for every healthcare use case

From startup directories to enterprise credentialing platforms — if your product touches U.S. healthcare providers, NPILayer has the data layer you need.

Provider directories
Power searchable provider directories for health plans, hospital systems, or patient-facing apps with up-to-date NPPES data and geographic search.
Revenue cycle & billing
Validate NPIs during claim submission, auto-populate provider fields from NPI lookup, and flag deactivated providers before they cause claim rejections.
Credentialing & enrollment
Pre-populate credentialing applications from NPI data, cross-reference provider demographics, and flag NPPES status changes during re-credentialing cycles.
Referral networks
Find in-network specialists near a patient's ZIP code, filter by specialty and provider type, and surface contact information from primary practice addresses.
Telehealth platforms
Verify provider NPI before onboarding, match patients to licensed providers by state, and keep your provider roster in sync with NPPES weekly updates.
AI & healthcare apps
Give AI agents deterministic provider data — NPI lookup returns structured, verifiable records that don't hallucinate names, specialties, or addresses.

Add it in minutes

One HTTP request with your API key. JSON response. No SDK required — works with any language or HTTP client.

curl
# NPI lookup
curl \
  -H "Authorization: Bearer YOUR_API_KEY" \
  "https://api.npilayer.com/v1/providers/1234567890"

# Geographic search
curl \
  -H "Authorization: Bearer YOUR_API_KEY" \
  "https://api.npilayer.com/v1/providers/nearby?
   zip=49684&specialty=cardiology&radius=25"
JavaScript (fetch)
const res = await fetch(
  'https://api.npilayer.com/v1/providers/nearby' +
  '?zip=49684&specialty=cardiology&radius=25',
  {
    headers: {
      'Authorization': `Bearer ${API_KEY}`
    }
  }
);
const { data, meta } = await res.json();
console.log(`Found ${meta.count} providers`);
PHP
$response = file_get_contents(
  'https://api.npilayer.com/v1/providers/nearby' .
  '?zip=49684&specialty=cardiology&radius=25',
  false,
  stream_context_create(['http' => [
    'header' => 'Authorization: Bearer ' . $apiKey
  ]])
);
$data = json_decode($response, true);
$providers = $data['data'];
Python
import requests

res = requests.get(
  "https://api.npilayer.com/v1/providers/nearby",
  params={
    "zip": "49684",
    "specialty": "cardiology",
    "radius": 25,
  },
  headers={"Authorization": f"Bearer {api_key}"},
)
providers = res.json()["data"]
Full API reference

Start free. Scale when you need to.

The free plan includes 1,000 requests per month — enough to build and test your integration. Paid plans start at $29/month for 25,000 requests.

Get free API key View pricing
Free
$0
1,000 req/mo
Developer
$29/mo
25,000 req/mo
Pro
$99/mo
250,000 req/mo
Scale
$299/mo
1M req/mo

What is NPPES data?

The National Plan and Provider Enumeration System (NPPES) is the official CMS registry of National Provider Identifiers. Every U.S. healthcare provider and organization that submits claims to Medicare or Medicaid is required to obtain an NPI — making NPPES the most comprehensive authoritative source of U.S. provider identity data available.

NPILayer imports the official CMS monthly full-replacement file and applies weekly incremental updates, so the data reflects what providers have reported to CMS. An NPI record confirms that a provider or organization is enumerated in NPPES. It does not confirm that a provider is currently licensed, board-certified, accepting new patients, participating in a specific insurance network, or actively practicing at the listed address.

For applications that require licensure verification, credentialing, or network participation data, NPPES should be used as one input alongside state licensing boards and payer-specific directories.

Read the API documentation

Ready to build?

Get your free API key in 30 seconds. No credit card required.

Get free API key View documentation