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.