NPI Lookup & Bulk Roster Validator: NPPES Active Check + Score avatar

NPI Lookup & Bulk Roster Validator: NPPES Active Check + Score

Pricing

from $1.50 / 1,000 npi validateds

Go to Apify Store
NPI Lookup & Bulk Roster Validator: NPPES Active Check + Score

NPI Lookup & Bulk Roster Validator: NPPES Active Check + Score

Bulk-validate a provider roster against the CMS NPPES NPI Registry. Each NPI gets a check-digit test, found/active status, name, state, taxonomy and ZIP mismatch flags, and a 0–100 hygiene score with reason codes. Bad check digits are flagged free.

Pricing

from $1.50 / 1,000 npi validateds

Rating

0.0

(0)

Developer

Joel Sumner

Joel Sumner

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

13 days ago

Last modified

Categories

Security

Limited permissions

Share

NPI Lookup & Bulk Roster Validator — NPPES Active Check, Field Diff, 0–100 Score

Bulk NPI lookup and NPPES roster validation for payer, provider and credentialing-ops data teams. Instead of scraping the NPI Registry, check your roster: offline check digit, found/active status, name/state/taxonomy/ZIP mismatch flags and a 0–100 data-hygiene score per NPI.

Search scraper vs roster validator

NPI Registry scrapers/search ActorsThis Actor
Inputsearch query (state, taxonomy, name)your roster (NPI + expected fields)
Outputprovider recordsone audit row per roster line: match flags + score + reason codes
Bad NPIsnot detectedLuhn check digit offline, free
Contact dataoften includedphone/fax/email always stripped

Paste a provider roster (NPI + optional name, state, taxonomy, ZIP) and get one row back per NPI:

  • Check digit (Luhn, prefix 80840) computed offline. Bad rows are flagged free with no lookup.
  • Found / active in the NPPES NPI Registry. Deactivated NPIs are not returned by the public API, so they show NOT_FOUND_OR_DEACTIVATED.
  • Entity type, primary taxonomy code and description, normalized practice address, enumeration and last-updated dates.
  • Match flags for your name, state, taxonomy and ZIP.
  • Score 0–100 with reason codes: BAD_CHECKDIGIT, BAD_FORMAT, NOT_FOUND_OR_DEACTIVATED, DEACTIVATED, NAME_MISMATCH, TAXONOMY_MISMATCH, STATE_MISMATCH, ZIP_MISMATCH, STALE_>3Y, NO_PRACTICE_ADDRESS, UNKNOWN_STATUS (registry returned no status — never assumed active).
  • A run summary in OUTPUT: score distribution and reason counts.

Example input

{"rows":[{"npi":"1234567893","name":"Jane Doe","state":"TX","taxonomy":"207Q00000X","zip":"75201"}]}

Or a plain list: {"npis":["1003000126","1336848233"]}.

Output sample (real smoke row, trimmed)

{"npi":"1336848233","checkDigitValid":true,"found":true,"status":"active","entityType":"organization",
"registryName":"1 PLUS, LLC","primaryTaxonomyCode":"251C00000X","nameMatch":true,"stateMatch":false,
"score":75,"reasonCodes":["STATE_MISMATCH","STALE_>3Y"]}

All input options

npis (list), rows (JSON), csvUrl or datasetId, using the columns npi,name,state,taxonomy,zip. Provider roster fields only. Never send patient data. Any other column is dropped before processing.

Privacy and scope

  • Phone, fax and email are always stripped in v1. There is no contact enrichment.
  • Stateless: nothing is stored between runs.
  • The tool makes one lookup per NPI (number=), paced at about 2 requests/second with backoff.

Source and disclaimer

Data comes from the CMS NPPES NPI Registry public API (v2.1). This Actor is independent and is not affiliated with or endorsed by CMS or HHS. A valid or active NPI does not mean a provider is licensed or credentialed. This tool is not credentialing advice and is not primary-source verification (PSV). It does not check state licenses, DEA or OIG exclusions.

Pricing (pay per event)

EventPrice
Run start$0.005
npi-validated (per NPI looked up, found or not found)$0.0015
score-report (optional)$0.01
1,000-row roster ≈ $1.51. Details:
$0.005 per run (Apify start event), plus $0.0015 per NPI looked up. Rows that come back not found (NOT_FOUND_OR_DEACTIVATED) are still charged $0.0015, because the registry lookup was made. Invalid check-digit / bad-format rows are free (checked offline, no lookup). Rows skipped after your max-charge limit or lookup errors are not charged. The optional score report is $0.01.

Speed, timeout and limits

  • The Actor is polite to the public registry: about 2 requests/second, so throughput is about 7,000 rows per hour. 1,000 rows ≈ 9 min; 5,000 (default maxRows) ≈ 45 min; 50,000 ≈ 7 hours.
  • Set the run timeout to fit maxRows: roughly maxRows ÷ 7000 hours plus 10% buffer (e.g. 5,000 rows → 1 h; 50,000 → 8 h). Apify's default timeout may stop large runs early; rows already validated are kept in the dataset.
  • csvUrl files are capped at 20 MB; larger files fail with a clear error — split them, or pass rows[] / datasetId.

More Actors by willed_nursery