NPPES Provider & Organization Change Monitor avatar

NPPES Provider & Organization Change Monitor

Pricing

from $0.95 / 1,000 current nppes records

Go to Apify Store
NPPES Provider & Organization Change Monitor

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

Luka

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

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

  1. Choose Check exact NPI status.
  2. Paste one or more 10-digit NPIs.
  3. Leave the Core profile selected for the smallest useful run.
  4. 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

WorkflowUse it forOfficial sourceSupported maximum
Check exact NPI statusActive, deactivated, or no-record checks for known NPIsRead API 2.1 + V2 deactivation report5,000 NPIs
Search current recordsNames, organization, taxonomy, city, state, ZIP, or entity typeRead API 2.11,200 rows per official query
Export a large current snapshotLarge filtered provider and organization exportsMonthly V2 + ordered weekly V2 + deactivation reconciliation100,000 rows
Track official changesRepeat monitoring for NEW, UPDATED, DEACTIVATED, and REACTIVATEDMonthly baseline + ordered weekly V2 + deactivation reconciliation25,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"]
}
}

NPPES provider and change rows in the Actor Dataset

πŸŽ›οΈ Input guide

Start and volume

InputWhat it changes
workflowChooses exact status, current search, large snapshot, or repeat monitoring. It changes the source work, result type, state behavior, and price events.
npisExact target list for Lookup; optional precise filter elsewhere. Values are checksum-validated and deduplicated.
maxResultsDelivered-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.
maxBuyerChargeUsdStops 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

InputWhat it changes
firstName, lastNameMatch official NPI-1 name fields.
organizationNameMatch the official NPI-2 legal business name.
entityTypeKeep both entity types, NPI-1 individuals, or NPI-2 organizations.
taxonomyCodesMatch official taxonomy codes. Search accepts one source value; bulk workflows accept several.
states, cities, postalPrefixesMatch official primary, mailing, or secondary-practice addresses. Search accepts one value per source filter.
nameContainsBroad bulk-only match across normalized official person and organization names.
statusKeep all, active, deactivated, or active-with-reactivation-history records. This is NPPES status, not license status.
enumeratedFrom / enumeratedThroughInclusive Provider Enumeration Date window.
updatedFrom / updatedThroughInclusive Last Update Date window. A changed date alone does not create a paid UPDATED event.
deactivatedFrom / deactivatedThroughInclusive official deactivation-date window.
reactivatedFrom / reactivatedThroughInclusive official reactivation-date window.

Detail and repeat monitoring

InputWhat it changes
outputProfileCore 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.
asOfDateUses official releases available through a historical cutoff. Missing required releases fail closed; filenames are never guessed.
stateNamespaceSeparates intentional Changes states. Every result-changing input and boundary is still included in the state fingerprint.
maxTrackedNpisState 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.

PlanSearch: start + rowSnapshot: scan + rowChanges: scan + eventExact 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.

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.