NPPES Provider & Organization Change Monitor
Pricing
from $0.95 / 1,000 current nppes records
NPPES Provider & Organization Change Monitor
Look up and export official CMS NPPES provider and organization records, then track verified NEW, UPDATED, DEACTIVATED, and REACTIVATED changes from V2 releases.
Pricing
from $0.95 / 1,000 current nppes records
Rating
0.0
(0)
Developer
Luka
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Use official CMS NPPES data to check exact NPIs, find providers and healthcare organizations, export large filtered snapshots, or monitor verified provider-record changes. The Actor combines current NPPES API results with V2 monthly, weekly, and deactivation releases in one workflow.
NPPES does not publish provider email addresses, and an NPI record does not prove an active professional license. This Actor keeps those boundaries explicit.
π Start in 60 seconds
- Choose Check exact NPI status.
- Paste one or more 10-digit NPIs.
- Leave the Core profile selected for the smallest useful run.
- Run the Actor and open the Dataset.
{"workflow": "lookup","npis": ["1881018208"],"maxBuyerChargeUsd": 5}
The Actor validates and deduplicates each NPI before contacting CMS. A valid exact lookup returns one status row even when the current profile is unavailable, distinguishing an official deactivation-history match from no current or historical match.
π― Choose the right workflow
| Workflow | Use it for | Official source | Supported maximum |
|---|---|---|---|
| Check exact NPI status | Active, deactivated, or no-record checks for known NPIs | Read API 2.1 + V2 deactivation report | 5,000 NPIs |
| Search current records | Names, organization, taxonomy, city, state, ZIP, or entity type | Read API 2.1 | 1,200 rows per official query |
| Export a large current snapshot | Large filtered provider and organization exports | Monthly V2 + ordered weekly V2 + deactivation reconciliation | 100,000 rows |
| Track official changes | Repeat monitoring for NEW, UPDATED, DEACTIVATED, and REACTIVATED | Monthly baseline + ordered weekly V2 + deactivation reconciliation | 25,000 events and 100,000 tracked NPIs |
Use Search for a small current query. Use Snapshot when you need a large filtered pull or full V2 reference files. Snapshot may traverse a multi-gigabyte official release even when your delivered limit is small, so it is deliberately not the default.
Resource and cost impact
Lookup and Search use the smaller official API routes and remain the safest low-cost starting point. Snapshot and a cold Changes baseline must first download the official monthly V2 ZIP. The August file is 1,151,460,412 bytes (about 1.15 GB), so the Actor requests 1,024 MB of memory, which provides 2,048 MB of Apify disk. This built-in resource setting prevents the baseline download from running out of disk; there is no extra memory input to configure.
maxResults caps delivered and billable rows or changes, but it does not shrink the official monthly ZIP. A small Snapshot or first Changes output can therefore still require the full bulk-source download. Repeat Changes runs reuse the verified scope state, but may still process every newer official release needed to keep that state complete.
π¦ What you get
Core provider rows include:
- stable
npi:{10 digits}identity and target-scoped deduplication; - NPI-1 individual or NPI-2 organization identity;
- enumeration, update, deactivation, reactivation, and certification dates;
- primary practice and mailing addresses, phone, and fax;
- all source-published taxonomy slots and clearly named source-reported license fields;
- other identifiers, replacement-NPI field, subpart and parent fields, and organization authorized official where available;
- exact CMS route, release, period, and coverage receipt.
Full output also streams official other-name, secondary-practice-location, and endpoint reference files. Missing fields remain missing; no email, license status, credentialing status, enrollment status, or real-world practice status is inferred.
The Dataset intentionally mixes provider, npi_status, and change rows. Keep recordType visible when exporting or filtering. The change-focused view changes columns only; it does not pretend that Apify Dataset views can filter arbitrary row values.
The example below is a synthetic fixture with a synthetic identifier and no live source URL:
{"recordType": "change","stableId": "nppes-change:synthetic-example","scopeDedupeId": "nppes-scope:synthetic-example","changeId": "nppes-change:synthetic-example","changeType": "UPDATED","effectiveDate": "2026-08-23","npiStableId": "npi:9999999995","npi": "9999999995","entityType": "ORGANIZATION","npiStatus": "ACTIVE","changedFields": ["practiceAddress"],"before": {"practiceAddress": { "city": "Example City", "state": "VA" }},"after": {"practiceAddress": { "city": "Sample Harbor", "state": "VA" }},"sourceContractVersion": "nppes-v2-monthly-weekly-deactivation-api-2.1-v2","coverage": {"status": "FILTERED","scopeFingerprint": "synthetic-scope","receiptIds": ["nppes-coverage:synthetic"]}}

ποΈ Input guide
Start and volume
| Input | What it changes |
|---|---|
workflow | Chooses exact status, current search, large snapshot, or repeat monitoring. It changes the source work, result type, state behavior, and price events. |
npis | Exact target list for Lookup; optional precise filter elsewhere. Values are checksum-validated and deduplicated. |
maxResults | Delivered-row and price-event boundary. The mode-specific ceiling is enforced even though one shared form control supports all workflows. For Snapshot and Changes it does not shrink the official monthly ZIP. Reaching the boundary reports CAPPED. |
maxBuyerChargeUsd | Stops before source work if the maximum requested event vector could exceed this Actor-charge ceiling. It does not force the Actor to spend the ceiling. |
Provider and organization filters
| Input | What it changes |
|---|---|
firstName, lastName | Match official NPI-1 name fields. |
organizationName | Match the official NPI-2 legal business name. |
entityType | Keep both entity types, NPI-1 individuals, or NPI-2 organizations. |
taxonomyCodes | Match official taxonomy codes. Search accepts one source value; bulk workflows accept several. |
states, cities, postalPrefixes | Match official primary, mailing, or secondary-practice addresses. Search accepts one value per source filter. |
nameContains | Broad bulk-only match across normalized official person and organization names. |
status | Keep all, active, deactivated, or active-with-reactivation-history records. This is NPPES status, not license status. |
enumeratedFrom / enumeratedThrough | Inclusive Provider Enumeration Date window. |
updatedFrom / updatedThrough | Inclusive Last Update Date window. A changed date alone does not create a paid UPDATED event. |
deactivatedFrom / deactivatedThrough | Inclusive official deactivation-date window. |
reactivatedFrom / reactivatedThrough | Inclusive official reactivation-date window. |
Detail and repeat monitoring
| Input | What it changes |
|---|---|
outputProfile | Core returns the smaller provider record used by the safe default. Full adds official V2 reference-file traversal for other names, practice locations, endpoints, identifiers, and authorized-official detail. |
asOfDate | Uses official releases available through a historical cutoff. Missing required releases fail closed; filenames are never guessed. |
stateNamespace | Separates intentional Changes states. Every result-changing input and boundary is still included in the state fingerprint. |
maxTrackedNpis | State capacity for Changes. It must cover the event limit and cannot exceed the tested 100,000-NPI contract. |
The source-transfer, request, runtime, archive-size, Zip64, entry-count, and expansion-ratio guards are fixed internal safeguards. They are not buyer tuning controls.
π° Pricing
The complete formula is:
run charge = verified workflow scan + delivered provider/status/change rows
Coverage receipts, state, summaries, warnings, duplicates, suppressed events, and unchanged observations are free. A blocked or failed source attempt is not charged. Rates come from the Actor's exact pricing schedule and remain separate by Apify plan when any event differs.
| Plan | Search: start + row | Snapshot: scan + row | Changes: scan + event | Exact status: index + NPI |
|---|---|---|---|---|
| Free | $0.00950 + $0.000950 | $0.50 + $0.00275 | $0.121 + $0.00829 | $0.00950 + $0.000950 |
| Bronze | $0.00950 + $0.000950 | $0.50 + $0.00270 | $0.121 + $0.00829 | $0.00950 + $0.000950 |
| Silver | $0.00950 + $0.000950 | $0.50 + $0.00265 | $0.121 + $0.00829 | $0.00950 + $0.000950 |
| Gold | $0.00950 + $0.000950 | $0.50 + $0.00260 | $0.121 + $0.00829 | $0.00950 + $0.000950 |
| Platinum | $0.00950 + $0.000950 | $0.50 + $0.00260 | $0.121 + $0.00829 | $0.00950 + $0.000950 |
| Diamond | $0.00950 + $0.000950 | $0.50 + $0.00260 | $0.121 + $0.00829 | $0.00950 + $0.000950 |
These are the Actor's active prices. The exact base NPPES lookup/search comparator charges $0.01 start + $0.001/provider; its optional phone, email, and web enrichment charge events are excluded from this separately selectable base workflow. This Actor still returns phone fields published by NPPES and charges exactly 5% less for the complete base slice. The closest monitor charges $0.00005 + $0.01/change. A cold full Changes run has a higher measured source cost, so truthful no-loss pricing cannot undercut that monitor at zero or one change while preserving the required 40% contribution margin. At 100, 1,000, and 25,000 changes this Actor is 5.00%, 15.89%, and 17.05% lower.
Examples below use the Free tier where a tier differs:
- one exact status check:
$0.00950 + 1 Γ $0.000950 = $0.01045; - 10 Search rows:
$0.00950 + 10 Γ $0.000950 = $0.01900; - 1,000 Snapshot rows:
$0.50 + 1,000 Γ $0.00275 = $3.25; - 100 verified changes:
$0.121 + 100 Γ $0.00829 = $0.95000; - a complete zero-change monitoring scan:
$0.121.
β Coverage you can trust
COMPLETEβ every requested unfiltered source part was validated and exhausted.FILTEREDβ the declared filters bound the visible comparable scope, and every required source part for that scope was exhausted.CAPPEDβ a result, state, resource, or charge boundary stopped the job while more may exist.PARTIALβ useful source rows exist, but one required period or reference did not complete.BLOCKEDβ the official source could not be trusted or reached before billable delivery.FAILEDβ input, source shape, parser, state, or invariant validation failed.EMPTY_CONFIRMEDβ the exact requested scope was positively exhausted with no matches or no new release/change.
PARTIAL, CAPPED, BLOCKED, and FAILED never prove that a provider disappeared. This Actor does not create a removal event from absence.
First and repeat Changes runs
On the first run, Changes builds a baseline for the exact monitoring scope and returns no paid change rows. A later run with the identical scope applies every ordered missed weekly release, reconciles a newer monthly baseline when one appears, joins the cumulative deactivation history, and emits only verified NEW, UPDATED, DEACTIVATED, or REACTIVATED events.
Deactivation-only rows do not publish entity type or full identity. The Actor preserves last-known verified identity as historical context when state has it; otherwise the event remains UNKNOWN. Absence from the cumulative deactivation report never proves reactivation.
Run two jobs with the same monitoring scope sequentially. The state pointer changes only after confirmed Dataset delivery and authoritative run-summary persistence.
π API and automation
You can run the Actor from the Apify Console, API, client libraries, or your own automation. Use the Dataset for delivered rows and the OUTPUT record for coverage, source releases, state outcome, and resource receipts. When creating your own schedule, keep one Changes run per state scope active at a time.
Example API input:
{"workflow": "changes","entityType": "organization","states": ["VA", "MD", "DC"],"taxonomyCodes": ["261Q00000X"],"maxResults": 500,"maxTrackedNpis": 10000,"stateNamespace": "mid-atlantic-health-centers","maxBuyerChargeUsd": 10}
β FAQ and support
Does this Actor find provider emails?
No. NPPES does not publish email addresses in these official surfaces, and the Actor does not infer or purchase them elsewhere.
Does an active NPI mean the person has an active license?
No. NPPES taxonomy and license-number fields are source-reported registry fields. Check the relevant licensing board for professional-license status.
Why is Snapshot slower than Search?
Search reads a bounded API query. Snapshot validates and streams the roughly 1.15 GB official monthly Zip64 archive, then ordered weekly releases and requested reference files so high-volume coverage is honest. The built-in 1,024 MB memory setting supplies 2,048 MB of disk for this route.
Why did a run return CAPPED?
A declared result, state, resource, or charge boundary stopped traversal. Increase only the relevant buyer boundary or narrow the filters; do not interpret capped absence as a removal.
What should I include in a support request?
Include the run ID, workflow, coverage status, and sanitized input. Remove secrets or unrelated private data.