NPI Append: Match Clinician Names to NPI Numbers avatar

NPI Append: Match Clinician Names to NPI Numbers

Pricing

$5.00 / 1,000 results

Go to Apify Store
NPI Append: Match Clinician Names to NPI Numbers

NPI Append: Match Clinician Names to NPI Numbers

Append NPIs to a list of clinicians by first and last name, state, and city. One row per record: the resolved NPI with a plain match tier, credential, specialty, licensed states, Medicare enrollment, OIG exclusion flag, and active status. Paste records or link a CSV. $5 per 1,000 records.

Pricing

$5.00 / 1,000 results

Rating

0.0

(0)

Developer

Aaron Melton

Aaron Melton

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

You have a list of clinicians. You need their NPIs and the compliance and specialty facts that hang off them.

Paste your list (or link a CSV) with first and last names and, ideally, state and city. Get one row back per person: the NPI we resolved, how confident the match is, and the provider's primary credential, specialty, practice location, licensed states, Medicare enrollment, OIG exclusion status, and whether the NPI is still active. Matching runs against our normalized copy of the full NPPES registry (9.4M providers), with nickname handling (Bill finds William) and compound-surname handling (Van Der Berg finds Berg) built in.

Every record gets an answer, and every answer is billed

Each record you submit returns exactly one row with a tier that tells you how much to trust it:

  • A_state_city: one provider fits, and both the state and the city agree. The strongest match.
  • B_state: one provider fits and the state agrees, but the city does not (or you gave no city).
  • C_name_unique_nationwide: only one provider in the country carries this name, but the state you gave does not corroborate it (or you gave none, or the only agreement rests on a nickname or partial surname plus a license in that state). Worth a quick look before you rely on it.
  • ambiguous: several providers fit equally well. No NPI is returned; turn on include_alternates to see up to 3 of them.
  • no_match: we searched the registry with your first and last name (and their nickname and surname variants) and found no individual provider carrying it.
  • invalid_input: the record could not be searched. The reasons field says why: first_name_missing (no first name, or fewer than 2 letters), last_name_missing, last_name_no_letters, or api_rejected.

The reasons field on searched rows adds detail such as nickname_variant, compound_fallback, weak_evidence, inactive, class_mismatch (the job title you gave does not fit the provider's specialty), or no_state_given.

Ambiguous, no_match, and invalid_input rows are billed like matches. They are still answers: we looked at that record and are telling you what we found. That includes records without a first name, which cannot be matched and come back as invalid_input with reason first_name_missing. Duplicate records in your list are resolved and billed each time.

What you get on a matched row

FieldWhat it holds
npithe resolved 10-digit NPI
first_name, middle_name, last_namethe name as NPPES has it
primary_credential, credential_rawe.g. MD parsed from M.D., FACC
taxonomy_code, taxonomy_classification, taxonomy_groupingprimary specialty
practice_city, practice_state, practice_postal_codepractice location
licensed_statesevery state with a license on file
is_active, deactivation_dateNPI status
accepts_medicareMedicare enrollment (CMS PECOS)
career_stagederived from the enumeration date
nppes_last_updatedwhen the provider last updated their record
oig_excluded, oig_exclusion_date, oig_exclusion_type, oig_exclusion_reasonHHS OIG LEIE exclusion by NPI match
leie_as_ofthe LEIE publication date checked against (same on every row of a run)
n_candidates, n_tied, reasonshow the match was decided

Every row also echoes your input (id, input_first_name, input_last_name, input_state, input_city, input_title) so you can join results back to your list. Rows without a match carry the same fields with nulls; oig_excluded is null (not false) when no NPI was resolved.

OIG screening

Every matched row says whether the resolved NPI appears on the HHS OIG List of Excluded Individuals/Entities (LEIE), with the exclusion date, type, and reason when it does. This checks the LEIE by NPI match only: many older LEIE records carry no NPI, and full screening programs also check SAM.gov and state Medicaid lists. It complements a full multi-source screening program. It does not replace one.

Worked example

Input record:

{"id": "row-1", "first_name": "Alex", "last_name": "Testperson", "state": "TX", "city": "Austin", "title": "Family Nurse Practitioner"}

Output row (illustrative values; "Alex" was matched to "Alexandra" through the nickname table):

{
"id": "row-1",
"input_first_name": "Alex", "input_last_name": "Testperson",
"input_state": "TX", "input_city": "Austin", "input_title": "Family Nurse Practitioner",
"tier": "A_state_city",
"npi": "1000000001",
"first_name": "Alexandra", "middle_name": "J", "last_name": "Testperson",
"primary_credential": "FNP", "credential_raw": "MSN, APRN, FNP-C",
"taxonomy_code": "363LF0000X",
"taxonomy_classification": "Nurse Practitioner",
"taxonomy_grouping": "Advanced Practice Providers",
"practice_city": "Austin", "practice_state": "TX", "practice_postal_code": "78701",
"licensed_states": ["TX"],
"is_active": true, "deactivation_date": null,
"accepts_medicare": true, "career_stage": "mid",
"nppes_last_updated": "2026-05-14",
"oig_excluded": false, "oig_exclusion_date": null,
"oig_exclusion_type": null, "oig_exclusion_reason": null,
"leie_as_of": "2026-09-01",
"n_candidates": 3, "n_tied": 1,
"reasons": ["nickname_variant"],
"alternates": []
}

Input

Provide either records or csv_url, not both. If both are filled in, the run stops before resolving or billing anything: clear the records field (including the prefilled examples) to use a CSV, or remove the CSV link to use records.

A first name is required to get a match. Records need a first name with at least 2 letters and a last name. A record without a usable first name returns invalid_input with reason first_name_missing and is billed.

  • records: a JSON list of objects with first_name and last_name; middle_name, state (2-letter code or full name), city, title, and id are optional. The more you give, the more records land in the confident tiers.
  • csv_url: a link to a CSV file that anyone can download without logging in. It needs a header row with first_name and last_name columns (the run stops if either is missing); middle_name, state, city, title, and id columns are used when present, and any other columns are ignored. Headers are matched ignoring case, spaces, and underscores, so First Name, first_name, and FIRSTNAME all work. Files saved by Excel (with a byte-order mark or Windows line endings) are fine.
  • include_alternates: when on, ambiguous rows list up to 3 candidate providers with their scores so you can choose by hand.

Limit: 10,000 records per run. A longer list is truncated; the run's status message and log say how many records were dropped. Split larger lists across runs.

Typical uses

  • Append NPIs to a CRM or marketing list that only has names and locations
  • Add credential, specialty, and Medicare enrollment to a prospect list before a campaign
  • Flag contacts whose NPI is deactivated or on the OIG exclusion list

What this does not do

Matching is by name and location only. It does not use email addresses or phone numbers, and it does not catch a surname change with no shared part (a maiden name replaced entirely). Organizations are not matched; this is for individual clinicians. Registry data is as reported by providers to CMS, not independently checked.

Use from AI agents (MCP)

This actor works as an MCP tool out of the box. Point your agent at mcp.apify.com with this actor enabled and it can resolve names directly ("find the NPIs for these 40 cardiologists in Ohio"). Results land in a dataset your agent can read back.

Pricing

$5 per 1,000 records ($0.005 per row). Every record you submit returns exactly one row, whatever its tier, and each row is one billable event. Appending NPIs to a 2,000-name list costs $10.

Data source

CMS NPPES registry (public federal data on healthcare providers), with Medicare enrollment from CMS PECOS and exclusions from the HHS OIG LEIE. Provider enrollment data only; no patient data, no HIPAA scope.