NPPES NPI Registry

Health API · United States · Provider identity lookup

TL;DR

The NPPES NPI Registry API provides access to the official US government database of healthcare providers. Search by NPI number (10-digit unique identifier), provider name, or taxonomy code. Each result contains the provider's legal name, practice address, phone number, taxonomy classification (e.g., "Internal Medicine," "Physical Therapist"), and enumeration date. This is the authoritative source for NPI data — maintained by CMS and used across the US healthcare system for claims processing, credentialing, and provider directories.

Quick start: https://npiregistry.cms.hhs.gov/api/?version=2.1&number=1234567893

No API key needed — just make a request!

Look up NPI 1234567893: https://npiregistry.cms.hhs.gov/api/?version=2.1&number=1234567893

How to Use This API

1. Lookup by NPI Number

https://npiregistry.cms.hhs.gov/api/?version=2.1&number=1234567893

2. Search by Provider Name

https://npiregistry.cms.hhs.gov/api/?version=2.1&first_name=John&last_name=Smith

3. Search by Taxonomy Code

https://npiregistry.cms.hhs.gov/api/?version=2.1&taxonomy_description=Internal%20Medicine

4. Filter by City & State

https://npiregistry.cms.hhs.gov/api/?version=2.1&city=Chicago&state=IL&limit=10

5. JavaScript — Find Provider

async function findNPI(first, last) {
  const resp = await fetch(
    `https://npiregistry.cms.hhs.gov/api/?version=2.1&` +
    `first_name=${first}&last_name=${last}&limit=5`
  );
  const data = await resp.json();
  
  data.results.forEach(p => {
    const addr = p.addresses[0];
    console.log(`${p.basic.first_name} ${p.basic.last_name}`);
    console.log(`NPI: ${p.number}`);
    console.log(`Address: ${addr.address_1}, ${addr.city}, ${addr.state}`);
    console.log('---');
  });
}

findNPI('Emily', 'Johnson');

6. Python — Bulk Provider Search

import requests

specialties = [
    'Internal Medicine',
    'Family Medicine',
    'Pediatrics',
    'Cardiology'
]

for spec in specialties:
    resp = requests.get(
        'https://npiregistry.cms.hhs.gov/api/',
        params={
            'version': '2.1',
            'taxonomy_description': spec,
            'limit': 3
        }
    )
    data = resp.json()
    count = data['result_count']
    print(f"{spec}: {count} providers found")

Frequently Asked Questions

What is an NPI number?
A National Provider Identifier (NPI) is a unique 10-digit identification number for healthcare providers in the United States, required for all HIPAA-covered transactions.
Do I need an API key?
No. The NPPES registry is a public government API with no authentication required.
What data fields are available?
Provider name, NPI number, taxonomy codes and descriptions, practice addresses (mailing and physical), phone numbers, credentials, and enumeration date.
How recent is the data?
The NPPES database is updated daily by CMS. When you query the API, you're getting the current official record on file.
What's the difference between Individual and Organization NPIs?
Type 1 NPIs are for individual providers (doctors, nurses). Type 2 NPIs are for organizations (hospitals, clinics, group practices). The response includes enumeration_type to distinguish them.
Are there rate limits?
No official limits, but responsible usage is expected. Include reasonable delays between bulk requests.

API Details

API URL
https://npiregistry.cms.hhs.gov/api/
Documentation
npiregistry.cms.hhs.gov
Category
Health
Authentication
Not Required
Geographic Coverage
United States

What You Can Build