Health — entry 018 of 23

NPPES

Verified Jul 2026

NPPES is the CMS registry of every NPI issued to US healthcare providers and organizations, searchable by name, NPI number, taxonomy, or location and returning full enumeration records including addresses, credentials, and specialty codes. It requires no registration or key and is rate-limited only informally by fair-use expectations. A live Origin-header probe against npiregistry.cms.hhs.gov/api returns no Access-Control-Allow-Origin header, so browser-side calls need a proxy.

NPPES is the CMS registry of every NPI issued to US healthcare providers and organizations, searchable by name, NPI number, taxonomy, or location and returning full enumeration records including addresses, credentials, and specialty codes. It requires no registration or key, but every call must carry a version query param — a live GET this run with version omitted returned an HTTP 200 with an Errors envelope rather than a 4xx.

healthcaregovernmentnpiprovider-lookupopen-data
AuthenticationNone requiredCall it straight away — no key, no signup.
HTTPSSupportedTraffic is encrypted in transit.
CORSDisabledBrowser calls need a server-side proxy.
PricingFreeNo paid tier — free for the documented use case.
FormatsJSONResponses can be requested as JSON.

GreatAPIs Score

Score74out of 100
Authentication25/25No authentication required
Pricing20/20Free to use
Docs0/20No docs or spec available
Formats9/15Single response format
Freshness20/20Verified within 6 months

Embed this badge

Scored 74 on greatapis.com
<a href="https://greatapis.com/api/nppes/"><img src="https://greatapis.com/badge/nppes.svg" alt="Scored 74 on greatapis.com"></a>

Auth quickstart

  1. No API key or registration required. Every call must include version=2.1 (the current documented version) — omitting it does not 404, it returns HTTP 200 with {"Errors":[{"description":"Unsupported Version","field":"version","number":"17"}]}, confirmed live this run.
Stored keyNo key stored

Your key is stored only in this browser (localStorage) and sent directly to the API — never to greatapis.

Search providers by city and state

GEThttps://npiregistry.cms.hhs.gov/api/?version=2.1&city=Baltimore&state=MD&limit=1

200 application/json

{"result_count":1,"results":[{"addresses":[{"address_1":"103 E READ ST","address_purpose":"MAILING","address_type":"DOM","city":"BALTIMORE","country_code":"US","country_name":"United States","fax_number":"410-659-1943","postal_code":"212022403","state":"MD","telephone_number":"410-234-0007"},{"address_1":"103 E READ ST","address_purpose":"LOCATION","address_type":"DOM","city":"BALTIMORE","country_code":"US","country_name":"United States","fax_number":"410-659-1943","postal_code":"212022403","state":"MD","telephone_number":"410-234-0007"}],"basic":{"credential":"Ph.D.","enumeration_date":"2007-04-23","first_name":"STEFFI","last_name":".RESNICK","last_updated":"2025-09-11","middle_name":"BETH","name_prefix":"Dr.","name_suffix":"--","sex":"F","sole_proprietor":"NO","status":"A"},"created_epoch":"1177362431000","endpoints":[],"enumeration_type":"NPI-1","identifiers":[{"code":"01","desc":"Other (non-Medicare)","identifier":"32448","issuer":"MAMSI","state":"MD"},{"code":"01","desc":"Other (non-Medicare)","identifier":"428144001","issuer":"CIGNA","state":"MD"},{"code":"01","desc":"Other (non-Medicare)","identifier":"4673985","issuer":"AETNA","state":"MD"},{"code":"01","desc":"Other (non-Medicare)","identifier":"521456813","issuer":"UNITED HEALTHCARE","state":"MD"},{"code":"01","desc":"Other (non-Medicare)","identifier":"H412S","issuer":"CAREFIRST BC BS MD","state":"MD"},{"code":"01","desc":"Other (non-Medicare)","identifier":"J210","issuer":"CAREFIRST BC BS NCA","state":"MD"}],"last_updated_epoch":"1757623214000","number":"1073731121","other_names":[],"practiceLocations":[],"taxonomies":[{"code":"231H00000X","desc":"Audiologist","license":"0176","primary":false,"state":"MD","taxonomy_group":""},{"code":"237600000X","desc":"Audiologist-Hearing Aid Fitter","license":"0176","primary":true,"state":"MD","taxonomy_group":""}]}]}

Developer reference

Base URLhttps://npiregistry.cms.hhs.gov/api/

Gotchas & limits

  • A search for a nonexistent-but-well-formed NPI is an HTTP 200 with an empty result, not a 404: a live GET /api/?version=2.1&number=1234567893 this run returned {"result_count":0,"results":[]} at status 200 — check result_count, never the HTTP status, to detect a no-match.
  • A malformed number param is also a 200, wrapped in the same Errors envelope used for the missing-version case: a live GET /api/?version=2.1&number=123 this run returned {"Errors":[{"description":"NPI must be 10 digits","field":"number","number":"06"}]} at status 200 — always check for an Errors key before reading results.
  • limit silently clamps at 200 instead of erroring: a live GET with limit=201 this run still returned exactly "result_count":200 in the body, with no warning or error about the requested value being out of range.
  • No CORS header is sent under any condition: a live GET with an Origin: https://example.com request header this run returned no access-control-allow-origin in the response at all, confirming the stored cors: no — browser-side calls need a server-side proxy.