GET /provider/{npi}
Provider API
One NPI. Provider name, specialty, practice address, and registry status.
Try it
{
"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",
"nppes": null,
"leie": null,
"pecos": null,
"optout": null
},
?deep=true
}1M requests · $20/mo. Get started
Fill a provider form.
Enter an NPI. Fill the provider name and specialty with form.js. Both fields stay editable.
Working example
HTML + form.jsTry 1881018208. Changing the NPI clears the previous autofill. This example uses the core lookup.
Add this to your form
Include form.js once and connect the fields below. Replace YOUR_PUBLIC_API_KEY with a public key restricted to your site’s domain.
<script src="https://cdn.parseapi.com/v1/form.js" data-key="YOUR_PUBLIC_API_KEY" defer></script>
<div class="field">
<label for="npi">NPI</label>
<input id="npi" name="npi" data-parse="npi" inputmode="numeric" autocomplete="off" placeholder="1881018208">
</div>
<div class="field">
<label for="provider">Provider name</label>
<input id="provider" name="provider_name" data-parse-from="npi" data-parse-fill="name">
</div>
<div class="field">
<label for="specialty">Specialty</label>
<input id="specialty" name="specialty" data-parse-from="npi" data-parse-fill="specialty">
</div>Your form controls submission. Recheck the NPI on your server before relying on submitted details.
Coverage
US provider directory records for individuals and organizations. Primary specialty and practice address.
Pass an NPI. Ten digits. Whitespace, periods, hyphens, and parentheses fold out. Get the checksum verdict and provider record: name, type, credential, primary specialty and taxonomy, practice address, and phone. active says the number is not deactivated. excluded checks the exclusion list by NPI.
Paid deep adds all published taxonomies with reported license details, provider record dates, deactivation date, and Medicare enrollment. Core source metadata distinguishes publication, coverage and completed import; unavailable evidence stays null. Junk and a failed checksum answer valid: false as a 200. A checksum-valid number absent from the imported directory answers registered: false. Unknown fields stay null. Directory records do not establish licensure, credentialing, or payment eligibility.
Make your first request.
One key works across the APIs. Copy a request in your language and get JSON back.
curl "https://api.parseapi.com/provider/1881018208" \
-H "X-API-Key: YOUR_API_KEY" \
-H "Parse-Version: 2.0.0"// Example response · 200{"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 } }
API referenceSDKsKeys and authentication
Every response field
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
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
Build with Provider
All tutorials →QUESTIONS
What if it is not an NPI?
A format or checksum failure returns HTTP 200 with valid: false and null provider fields. The npi field keeps the input after supported separators are removed.
What does registered: false mean?
The checksum passed, but the imported directory has no record of the number. Provider fields are null. A store failure returns 503 instead of registered: false.
What does active: false mean?
The NPI was deactivated. Paid deep.deactivated_at gives the published date. Name and address may be null when the registry blanks them.
How current is a result?
Results use imported provider directory records and may lag published changes. Core sources reports the edition, publication date, coverage end and completed import when known. Unavailable evidence stays null. Provider updated_at is a separate record date; active describes the imported NPI record.
Is an NPI proof of licensure?
No. An NPI is not proof of licensure. CMS says so and so do we. Licenses belong to the state boards.
What is excluded?
Whether the NPI is on the OIG LEIE exclusion list, matched by NPI only. excluded: false is not clearance. LEIE rows without an NPI cannot be matched by number.
What does deep add?
All published taxonomies with reported license numbers and states, provider enumeration/update/reactivation dates, deactivation date, and Medicare enrollment detail. Included on paid plans. Reported licenses are not verified licenses. Unknown details stay null; known empty lists are [].
Does Provider need a separate key?
No. Use the same ParseAPI key and request pool as your other lookups. Your team's rate limit applies.
Can I search by name?
Lookup takes an NPI. Name, specialty, and location search are not available.
What does it cost?
One pooled request on every plan. Paid deep adds taxonomies, reported license details, provider dates and Medicare enrollment without a separate meter. Source-edition metadata stays core.
Know the provider.
Provider identity on every plan. More provider detail on paid plans.
Start includes 1M API requests a month for $20/mo.