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.
Length: 0 to 64 characters
- 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.
Length: 2 to 64 characters
- 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?
This example shows selected fields or shortened lists. Run the request for the full response.
{
"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_atstring or null
- Date CMS deactivated the NPI, YYYY-MM-DD. null when the number is still active or not registered
- deep.medicareboolean or null
- In the published Medicare FFS enrollment extract. false is not a clearance. null when not registered or not yet stamped. Paid plans
- deep.opt_outboolean or null
- On the CMS opt-out affidavit list, matched by NPI only. false is not clearance. Paid plans
- deep.enrollmentsarray or null
- 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_atstring or null
- Published NPPES enumeration date. null when unavailable
- deep.updated_atstring or null
- Provider record update date, not source or request freshness
- deep.reactivated_atstring or null
- Published reactivation date. null when unavailable
- deep.taxonomiesarray or null
- 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
- npistring or null
- Input after removing whitespace, periods, hyphens, and parentheses. Other characters remain invalid. null when empty
- validboolean
- 10 ASCII digits and the Luhn check digit with the 80840 prefix holds. Does not establish registration or licensure
- registeredboolean or null
- Record found in the imported NPPES directory. false is a directory miss, null means invalid or unknown
- activeboolean or null
- Not deactivated in the imported record. Does not establish licensure or current practice. null when unknown
- excludedboolean or null
- On the OIG LEIE exclusion list, matched by NPI only. false is not clearance: many LEIE rows carry no NPI. null when not registered
- typestring or null
- individual or organization
- namestring or null
- Provider name. Organizations ship the legal business name
- firststring or null
- First name. null for organizations
- laststring or null
- Last name. null for organizations
- credentialstring or null
- Credential as the provider registered it (MD, DDS). null for organizations
- specialtystring or null
- Primary taxonomy display name from the NUCC code set
- taxonomystring or null
- The primary NUCC taxonomy code
- addressstring or null
- Primary practice location street line. Other locations are not returned
- citystring or null
- Practice location city
- statestring or null
- Practice location state code
- state_namestring or null
- State display name
- postalstring or null
- Practice location postal code, ZIP+4 when NPPES has it
- countrystring or null
- Recorded practice location country, ISO 3166-1 alpha-2. null when absent
- phonestring or null
- Practice phone in E.164 for recognized US/CA numbers. Otherwise recorded digits, or null when absent
- sourcesobject
- 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