Search by task, endpoint, field, or error.
Provider API
A US provider, specialty, address, and registry status.
Pass an NPI to get a provider name, primary specialty, practice address, and registry status. Individuals and organizations use the same response.
Lookup
Parameters 3
- npistring · path · required
NPI text, at most 64 characters. Whitespace, periods, hyphens, and parentheses are removed. Other characters fail validation. Pass raw text to an SDK, or URL-encode once for HTTP.
- langstring · query · optional
Display language as one BCP 47 tag, such as fr or zh-Hant. Changes supported display labels only; IDs, codes, native names, facts, parsing and deep access stay unchanged. Omit for the original response. Unsupported regions use the supported language base; unsupported languages or scripts use English. Missing labels retain their source value. Accept-Language is not read automatically. Available on the current API contract; frozen 1.0.0 is unchanged.
- deepboolean · query · optional
Deactivation date and Medicare enrollment detail. Included on paid plans.
import { parseAPI } from '@parseapi/sdk';
const parse = parseAPI("YOUR_API_KEY");
const result = await parse.provider("1881018208");
console.log(result);Run on your server with a secret key. Calling from a browser or app?
{
"npi": "1881018208",
"valid": true,
"registered": true,
"active": true,
"excluded": false,
"type": "organization",
"name": "Mayo Clinic",
"first": null,
"last": null,
"credential": null,
"specialty": "Multi-Specialty Clinic/Center",
"taxonomy": "261QM1300X",
"address": "200 1st St SW",
"city": "Rochester",
"state": "MN",
"state_name": "Minnesota",
"postal": "55905-0001",
"country": "US",
"phone": "+15072842511",
"sources": {
"nppes": null,
"leie": null,
"pecos": null,
"optout": null
}
}Read the result
- valid
- The format and checksum passed. Registration is a separate result.
- registered
- A record exists in the imported directory. false means no record found.
- active
- The imported NPI record is not deactivated. It does not establish licensure or current practice.
- excluded
- The recorded exclusion flag matches by NPI only. false is not clearance.
Unknown fields stay null. A format or checksum failure returns HTTP 200 with valid: false. A store failure with no cached answer returns 503, never a directory miss. Directory records can lag published changes. Core sources reports source editions when known; missing edition evidence stays null. Source publication, coverage and completed import dates are separate.
Input and more examples
Pass text, at most 64 characters. Whitespace, periods, hyphens, and parentheses are removed. Other characters fail validation. Use raw text with an SDK or URL-encode once for HTTP. The lookup returns one primary taxonomy and practice address. Name search and secondary locations are not available.
import { parseAPI } from '@parseapi/sdk';
const parse = parseAPI("YOUR_API_KEY");
const result = await parse.provider("1891058467");
console.log(result);Run on your server with a secret key. Calling from a browser or app?
{
"npi": "1891058467",
"valid": true,
"registered": true,
"active": true,
"excluded": false,
"type": "individual",
"name": "Rasha Abdelsalam",
"first": "Rasha",
"last": "Abdelsalam",
"credential": "MD",
"specialty": "Family Medicine Physician",
"taxonomy": "207Q00000X",
"address": "2283 S Monaco Pkwy Ste 105",
"city": "Denver",
"state": "CO",
"state_name": "Colorado",
"postal": "80222",
"country": "US",
"phone": "+17205312370",
"sources": {
"nppes": null,
"leie": null,
"pecos": null,
"optout": null
}
}import { parseAPI } from '@parseapi/sdk';
const parse = parseAPI("YOUR_API_KEY");
const result = await parse.provider("1891-058-467");
console.log(result);Run on your server with a secret key. Calling from a browser or app?
{
"npi": "1891058467",
"valid": true,
"registered": true,
"active": true,
"excluded": false,
"type": "individual",
"name": "Rasha Abdelsalam",
"first": "Rasha",
"last": "Abdelsalam",
"credential": "MD",
"specialty": "Family Medicine Physician",
"taxonomy": "207Q00000X",
"address": "2283 S Monaco Pkwy Ste 105",
"city": "Denver",
"state": "CO",
"state_name": "Colorado",
"postal": "80222",
"country": "US",
"phone": "+17205312370",
"sources": {
"nppes": null,
"leie": null,
"pecos": null,
"optout": null
}
}import { parseAPI } from '@parseapi/sdk';
const parse = parseAPI("YOUR_API_KEY");
const result = await parse.provider("1234567890");
console.log(result);Run on your server with a secret key. Calling from a browser or app?
{
"npi": "1234567890",
"valid": false,
"registered": null,
"active": null,
"excluded": null,
"type": null,
"name": null,
"first": null,
"last": null,
"credential": null,
"specialty": null,
"taxonomy": null,
"address": null,
"city": null,
"state": null,
"state_name": null,
"postal": null,
"country": null,
"phone": null
}More provider details with deep
Add ?deep=true for the deactivation date, Medicare FFS enrollment, opt-out status, all published taxonomies with reported license numbers and states, and enumeration, record-update and reactivation dates. Included on paid plans with no per-lookup deep charge. Core fields stay the same. Free returns deep: {}. Without the option, deep is omitted.
An empty enrollment list is a known empty result. null means the details are unknown or unavailable. Medicare and opt-out flags do not establish credentialing or payment eligibility. License details are provider-reported; record dates are not source-freshness dates.
Run Provider Deep with a paid-plan key. Provider details are included without a separate lookup charge.
import { parseAPI } from '@parseapi/sdk';
const parse = parseAPI("YOUR_API_KEY");
const result = await parse.provider("1881018208", { deep: true });
console.log(result);Run on your server with a secret key. Calling from a browser or app?
{
"npi": "1881018208",
"valid": true,
"registered": true,
"active": true,
"excluded": false,
"type": "organization",
"name": "Mayo Clinic",
"first": null,
"last": null,
"credential": null,
"specialty": "Multi-Specialty Clinic/Center",
"taxonomy": "261QM1300X",
"address": "200 1st St SW",
"city": "Rochester",
"state": "MN",
"state_name": "Minnesota",
"postal": "55905-0001",
"country": "US",
"phone": "+15072842511",
"sources": {
"nppes": null,
"leie": null,
"pecos": null,
"optout": null
},
"deep": {
"deactivated_at": null,
"enumerated_at": null,
"updated_at": null,
"reactivated_at": null,
"taxonomies": null,
"medicare": true,
"opt_out": false,
"enrollments": [
{
"type": "part_b",
"state": "MN",
"specialty": "Clinic/Group Practice"
}
]
}
}Deep fields
- deep.deactivated_at
- Date CMS deactivated the NPI, YYYY-MM-DD. null when the number is still active or not registered
- deep.medicare
- In the published Medicare FFS enrollment extract. false is not a clearance. null when not registered or not yet stamped. Paid plans
- deep.opt_out
- On the CMS opt-out affidavit list, matched by NPI only. false is not clearance. Paid plans
- deep.enrollments
- Enrollment rows (type, specialty, state). [] when medicare is false or a known empty list. null when details are unknown, unavailable, or not registered. Paid plans
- deep.enumerated_at
- Published NPPES enumeration date. null when unavailable
- deep.updated_at
- Provider record update date, not source or request freshness
- deep.reactivated_at
- Published reactivation date. null when unavailable
- deep.taxonomies
- All published taxonomies in source order: taxonomy, specialty, primary, license and state. Reported licenses are not verified. null means unavailable; [] means observed empty
Response fields
- npi
- Input after removing whitespace, periods, hyphens, and parentheses. Other characters remain invalid. null when empty
- valid
- 10 ASCII digits and the Luhn check digit with the 80840 prefix holds. Does not establish registration or licensure
- registered
- Record found in the imported NPPES directory. false is a directory miss, null means invalid or unknown
- active
- Not deactivated in the imported record. Does not establish licensure or current practice. null when unknown
- excluded
- On the OIG LEIE exclusion list, matched by NPI only. false is not clearance: many LEIE rows carry no NPI. null when not registered
- type
- individual or organization
- name
- Provider name. Organizations ship the legal business name
- first
- First name. null for organizations
- last
- Last name. null for organizations
- credential
- Credential as the provider registered it (MD, DDS). null for organizations
- specialty
- Primary taxonomy display name from the NUCC code set
- taxonomy
- The primary NUCC taxonomy code
- address
- Primary practice location street line. Other locations are not returned
- city
- Practice location city
- state
- Practice location state code
- state_name
- State display name
- postal
- Practice location postal code, ZIP+4 when NPPES has it
- country
- Recorded practice location country, ISO 3166-1 alpha-2. null when absent
- phone
- Practice phone in E.164 for recognized US/CA numbers. Otherwise recorded digits, or null when absent
- sources
- NPPES, LEIE, PECOS and opt-out edition metadata on every plan. Unknown sources stay null; dates distinguish publication, coverage and completed import
Display language
Pass lang with a language tag such as fr, pt-BR, or zh-Hant. Separately sourced state_name when available. Person names, provider names and addresses stay unchanged.
Omitting lang preserves the original response. Codes, IDs, numeric facts and native-name fields stay unchanged. Missing translations keep their existing source value; unknown values stay null. A preserved name_local may equal the translated name.
Send a chosen browser preference explicitly, for example { lang: navigator.language } in your JavaScript SDK options. The API does not read Accept-Language automatically. Unsupported regions fall back to their supported base language; unsupported languages or scripts use English. Empty, invalid or repeated tags return 400.
Content-Language identifies languages used in translated display fields and known English fallbacks. This option follows the current API contract. Requests selecting frozen 1.0.0 retain that contract. Select API 2.0.0 to use display language.
41 display language choices
| Language tag | Language |
|---|---|
| en | American English |
| zh-Hans | 简体中文 |
| fr | français (France) |
| de | Deutsch |
| it | italiano |
| ja | 日本語 |
| ko | 한국어 |
| es | español de España |
| ar | العربية |
| bg | български |
| ca | català |
| hr | hrvatski |
| cs | čeština |
| da | dansk |
| nl | Nederlands |
| fi | suomi |
| el | Ελληνικά |
| he | עברית |
| hi | हिन्दी |
| hu | magyar |
| id | Indonesia |
| kk | қазақ тілі |
| ms | Melayu |
| nb | norsk bokmål |
| pl | polski |
| pt | português (Brasil) |
| ro | română |
| ru | русский |
| sk | slovenčina |
| sv | svenska |
| th | ไทย |
| tr | Türkçe |
| uk | українська |
| vi | Tiếng Việt |
| zh-Hant | 繁體中文 |
| en-AU | Australian English |
| en-GB | British English |
| fr-CA | français canadien |
| es-419 | español latinoamericano |
| pt-PT | português europeu |
| zh-Hant-HK | 繁體中文(中國香港特別行政區) |
Build with Provider
All tutorials →Questions? Email