Free NPI API
A free JSON API over the public NPPES registry (NPPES — May 2026 release). Look up a single NPI, batch up to 100 NPIs per request, or search providers by name, specialty, state, and city. No API key and no signup. Responses are CORS-enabled, so you can call it straight from a browser.
Endpoints
GET/api/npi/{npi}
Look up one provider by 10-digit NPI. Returns the name, entity type, specialty and taxonomy code, license, practice location, and enumeration, update, and deactivation dates. Returns 400 for a malformed NPI and 404 when the NPI isn't in the registry.
curl https://npiradar.com/api/npi/1306701685{
"npi": "1306701685",
"valid": true,
"entityType": "organization",
"name": "Dc Physical Therapy Services Pc",
"specialty": "Physical Therapy Clinic/Center",
"taxonomyCode": "261QP2000X",
"practiceLocation": {
"address1": "100 Nicolls Rd", "city": "Wheatley Heights",
"state": "NY", "zip": "11798-2315", "phone": "(516) 234-4473"
},
"enumerationDate": "2025-12-18",
"lastUpdated": "2025-12-18",
"deactivated": false,
"source": "NPPES",
"url": "https://npiradar.com/npi/1306701685"
}POST/api/npi
Bulk lookup: up to 100 NPIs in one request. The response returns results for NPIs found, plus notFound (10 digits but not in the registry) and invalid (not a 10-digit number) lists, so a messy input list is fine. Duplicates are dropped.
curl -X POST https://npiradar.com/api/npi \
-H "Content-Type: application/json" \
-d '{"npis": ["1306701685", "1234567890", "123"]}'
# → {"count": 1, "results": [ … ], "notFound": ["1234567890"], "invalid": ["123"]}GET/api/search
Find providers when you don't know the NPI. Filters: name (last or organization name prefix), specialty (a slug such as occupational-therapist, as used in specialty URLs), state (2-letter), and city (a slug; requires state). At least one of name, specialty, or state is required. Page through results with limit (max 50) and a 0-based page; hasMore tells you when to stop.
curl "https://npiradar.com/api/search?specialty=occupational-therapist&state=ca&city=pasadena&limit=2"Rate limits
Each IP gets a shared budget of 600 tokens per minute across all endpoints. A single lookup costs 1 token, a bulk request costs 1 per NPI, and a search costs 10. Every response carries X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset. Past the limit you get 429 with a Retry-After header. That's about 36,000 bulk-resolved NPIs an hour. If you need the entire registry, the monthly NPPES Downloadable File is the better tool (see NPPES explained).
How it compares to the CMS NPI Registry API
CMS runs its own free NPI Registry API over the same data. NPIRadar's API adds a true batch endpoint (100 NPIs in one call instead of 100 calls) that sorts a messy list into found, not-found, and malformed numbers, plus filtered search by specialty and city slug. Both are free. If you'd rather not write code, the bulk NPI lookup tool makes the same batch call from a web form and exports CSV.
The data is public-domain NPPES data. NPIRadar is an independent service, not affiliated with CMS. If you build on the API, please link back to npiradar.com.