NPI Lookup & Bulk Roster Validator: NPPES Active Check + Score
Pricing
from $1.50 / 1,000 npi validateds
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
13 days ago
Last modified
Security
Limited permissionsShare
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 Actors | This Actor | |
|---|---|---|
| Input | search query (state, taxonomy, name) | your roster (NPI + expected fields) |
| Output | provider records | one audit row per roster line: match flags + score + reason codes |
| Bad NPIs | not detected | Luhn check digit offline, free |
| Contact data | often included | phone/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)
| Event | Price |
|---|---|
| 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: roughlymaxRows ÷ 7000hours 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. csvUrlfiles are capped at 20 MB; larger files fail with a clear error — split them, or passrows[]/datasetId.
More Actors by willed_nursery
- Healthcare credentialing pair: NPI Roster Validator ↔ OIG LEIE Screener — screen the same roster for OIG exclusions next.
- KYB/lead: Maps Lead Enricher (Domain Contact Enricher)
- IP docket: USPTO Trademark Deadlines
- Financial risk: SEC Health Score