GET /provider/{npi}

Provider API

One NPI. Provider name, specialty, practice address, and registry status.

Try it

Example response/provider/1881018208
{
  "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.js

Try 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.

HTML
<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.

Set up this exampleDownload complete HTML

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.