Healthcare Provider NPI Enricher

live$0.002/providerEnrichment

Last updated November 8, 2026

Enrich a list of NPIs or provider names from the official US NPI Registry: one row per provider with taxonomy, license, practice address and phone, and organization official. Invalid and unmatched lookups are free. For healthcare lead lists and provider checks.

Features

  • NPIs, individual names, organization names, or a taxonomy search in one run.
  • Taxonomy, license, practice address and phone, and organization official on each row.
  • An NPI that fails its check digit or has no record is one free row.
  • A repeat of a provider in one run is not charged twice.
  • Pay per event: Provider row at $0.002.

Input

npisarrayoptional

10 digit NPIs. Each returns its record. An invalid NPI or one with no record is a free row.

individual_namesarrayoptional

People, as Jane Doe, Doe, Jane, or Dr. Jane Doe MD. The registry also matches common first name aliases. A trailing * after 2 or more letters is a wildcard. Add state to narrow common names.

organization_namesarrayoptional

Organizations. The registry matches whole words, so add a trailing *, such as kaiser*, to widen the match.

taxonomystringoptional

Filter or search by the registry's taxonomy wording, such as cardiovascular disease, or cardio* as a wildcard. Cardiology alone matches only Pharmacist, Cardiology. Applies to names and to the search. Does not apply to NPIs.

statestringoptional

Two letter state code. Applies to names and to the search. The registry refuses state alone, so give it with a name, taxonomy, city, or postal code.

citystringoptional

City filter. Applies to names and to the search.

postal_codestringoptional

5 or 9 digit postal code, with a trailing * after 2 or more digits as a wildcard.

provider_typestringoptional

For the taxonomy, city, or postal code search: both (default), individual, or organization.

max_results_per_lookupstringoptional

Provider rows per name or search, from 1 to 1200. Default 25. The registry serves at most 1200 records per search.

max_charge_usdstringoptional

Optional. The run stops before a charge that would pass this amount. Summary rows are always returned.

Output schema

json
{
  "row_type": "string",
  "input": "string",
  "lookup_kind": "string",
  "npi": "string",
  "provider_type": "string",
  "status": "string",
  "name": "string",
  "first_name": "string",
  "middle_name": "string",
  "last_name": "string",
  "credential": "string",
  "sole_proprietor": "string",
  "organization_name": "string",
  "authorized_official": "string",
  "authorized_official_phone": "string",
  "primary_taxonomy_code": "string",
  "primary_taxonomy": "string",
  "primary_license": "string",
  "primary_license_state": "string",
  "taxonomies": "array",
  "practice_address": "string",
  "practice_city": "string",
  "practice_state": "string",
  "practice_postal_code": "string",
  "practice_country": "string",
  "practice_phone": "string",
  "practice_fax": "string",
  "mailing_address": "string",
  "practice_locations": "array",
  "other_identifiers": "array",
  "other_names": "array",
  "endpoints": "array",
  "enumeration_date": "string",
  "last_updated": "string",
  "registry_url": "string",
  "match_count": "integer",
  "matches_read": "integer",
  "rows_returned": "integer",
  "duplicates_skipped": "integer",
  "row_status": "string",
  "error_reason": "string",
  "billable_events_json": "string",
  "scraped_at": "string"
}

Pricing

$0.002per provider
EventFree plan price
Provider row$0.002
Actor Start$0.002

Pay per event on the Apify platform. Paid Apify plans pay less per event. No subscription, no seat license.

On the Apify free plan the actor stops at $1.50 of charges a month, about 750 providers. Any paid Apify plan removes the cap.

Limits

  • Rows hold only what the registry publishes, as providers entered it. There is no personal email, and this actor does not look for one. Gender is in the registry and is left out of the rows.
  • A practice or mailing address can be a provider's own, and a phone can be out of date. Providers keep these records themselves.
  • No Medicare enrollment flag: the registry does not publish one. other_identifiers shows the identifiers a provider chose to list.
  • A name lookup matches every person with that name. Check match_count, and narrow with state, city, or taxonomy. A name alone cannot prove a row is the person you mean.
  • taxonomy matches the registry's own wording, not the common name of a specialty. In testing, cardiology in Boston returned 6 records, all Pharmacist, Cardiology, because cardiologists are filed under Cardiovascular Disease. cardio* returned the wider set. Read primary_taxonomy on the rows.
  • An organization name also matches the record's other names, so kaiser* can return a provider whose legal name does not contain it.
  • A list of mostly misses stops: after more than 5 free rows, plus 50 for each provider row, the run writes a free row saying how many lookups were not read. Run the rest after checking the list.
  • The registry serves at most 1,200 records per search, and this actor does not split a search to pass that. Run one search per state or city for more.
  • Every record read in testing had status A. A no_results row on an NPI can mean it was never issued or is no longer served, and the actor cannot tell which.
  • US providers only, because the registry covers those holding an NPI.

Available on