Healthcare Provider Payments Scraper - NPI & CMS Payments avatar

Healthcare Provider Payments Scraper - NPI & CMS Payments

Pricing

from $10.00 / 1,000 provider records

Go to Apify Store
Healthcare Provider Payments Scraper - NPI & CMS Payments

Healthcare Provider Payments Scraper - NPI & CMS Payments

Scrape U.S. healthcare provider profiles from the NPPES NPI Registry and match each to CMS Open Payments: general, research and ownership/investment records across 7 program years (2019-2025). Filter by name, organization or state. Export CSV, Excel, JSON. No login or API key.

Pricing

from $10.00 / 1,000 provider records

Rating

0.0

(0)

Developer

RecordsData

RecordsData

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

14 days ago

Last modified

Share

RecordsData

Healthcare Provider Payments Scraper looks up U.S. providers by NPI list, name, organization, specialty, city, ZIP or teaching hospital in the NPPES NPI Registry and matches each one to CMS Open Payments: general payments, research payments and ownership interests across program years 2019-2025. Filter payments by year, company, nature and amount, and monitor for new payments only. Export CSV, Excel, JSON or API. No login, no API key. Verified 2026-10-10. $10 per 1,000 providers.

Healthcare Provider Payments Scraper turns an NPI number, a name or a search into a provider profile plus the money drug and device companies reported paying that provider. It reads the NPI Registry and the CMS Open Payments "Sunshine Act" database across all seven published program years.

๐Ÿฉบ What does the Healthcare Provider Payments Scraper do?

  • Finds providers by NPI numbers, name, organization, specialty, city, ZIP code and state, or teaching hospitals by name or 6-digit CMS Certification Number (CCN). Inputs are merged and de-duplicated; duplicate NPIs are never billed.
  • Optionally attaches general payments, research payments and ownership or investment interests (up to 40 keys per payment), filtered by program year, paying company, nature of payment (19 CMS types) and amount range. You are billed only for payments that pass.
  • Only-new mode skips what you already received.

๐Ÿ“Š What data can you extract from the NPI Registry and CMS Open Payments?

FieldDescription
recordType, npi, ccn, enumerationTypeprovider or teaching-hospital; NPI number, or CCN for hospitals; NPI-1 individual or NPI-2 organization
firstName, middleName, lastName, nameSuffix, organizationNameProvider or organization name
credential, status, soleProprietor, primarySpecialty, primaryTaxonomyCodeCredential, registry status, sole proprietor flag, specialty and taxonomy code
locationCity, locationState, locationZipRegistered practice location
enumerationDate, certificationDate, lastUpdatedWhen the NPI was issued, certified and last changed
taxonomies, addresses, practiceLocations, otherNames, identifiers, alternateNames, organizationalSubpart, authorizedOfficialName, authorizedOfficialTitleSpecialties and licenses, addresses, locations, other names and identifiers, organization details
generalPayments, researchPayments, ownershipInterestsArrays of payment objects with up to 40, 37 and 20 keys
generalPaymentsCount, generalPaymentsTotalUsdCount and total in the row; research and ownership have the same pair
changeType, scrapedAtOnly-new mode (new or new-payments); UTC timestamp of the run

Each payment object carries fields such as programYear, dateIso, recordId, amount, natureOfPayment, payingCompany and products; research payments add clinicalTrialsId, studyName and principalInvestigators. Recipient street addresses are left out on purpose, because they are contact data of private individuals.

๐Ÿงพ Sample output from a real run

Row shape from a cloud run (example input below, general payments on), trimmed; provider fields come from an earlier run:

{
"recordType": "provider",
"npi": "1871538041",
"lastName": "SMITH",
"credential": "MD",
"status": "A",
"generalPayments": [{ "programYear": "2025", "recordId": "1238515311", "date": "05/21/2025", "amount": 25.02, "natureOfPayment": "Food and Beverage", "payingCompany": "Viatris Specialty LLC" }],
"generalPaymentsCount": 1,
"generalPaymentsTotalUsd": 25.02,
"scrapedAt": "2026-10-10T00:00:00.000Z"
}

That run charged 1 provider and 1 general payment record; scrapedAt is illustrative.

๐Ÿ’ฐ How much does it cost to scrape NPI and Open Payments data?

Pay per event, only for rows saved, never for a failed or empty run. Prices read from the live Actor on 2026-10-10.

EventFree tier (per 1,000)Gold and up (per 1,000)
Provider record (provider or teaching hospital row)$10.00$10.00
General payment record$15.00$12.75
Research payment record$18.00$15.30
Ownership interest record$20.00$17.00

Bronze and Silver sit between. Payments removed by your filters are not billed.

Worked examples (Free tier):

  • One NPI with programYears 2025, payingCompany Viatris and minAmountUsd 10: 1 provider plus 1 general payment = $0.01 + $0.015 = $0.025 (real cloud run).
  • 1,000 providers with no payments: 1,000 x $0.01 = $10.00. With 3 general payments each, $10.00 + 3,000 x $0.015 = $55.00 ($48.25 at Gold and up).

The Actor stops cleanly with "Stopped at your max charge limit" at your max total charge. Free plan: 10 providers per run.

๐Ÿš€ How to scrape the NPI Registry and Open Payments (3 steps)

  1. Fill at least one search field (NPI, name, organization, specialty, city, ZIP or teaching hospital); state alone is not enough.
  2. Switch on the payment categories you need and set caps and filters.
  3. Click Start and download CSV, Excel, JSON or XML.

โš™๏ธ Input

FieldTypeDefaultNotes
npilist of stringsemptyExact 10-digit NPIs; unknown ones are skipped and named
providerName, organizationName, specialty, city, postalCodestringnoneName (one word is a last name), facility, NPPES taxonomy description, city, 5-digit ZIP
state, enumerationTypestring, selectnone, ANY2-letter state (narrows searches, not enough alone); ANY, NPI-1 or NPI-2
teachingHospitalstringnonePart of a hospital name or a 6-digit CCN
maxItemsinteger10Provider rows to return (free plan: 10)
includeGeneralPayments, includeResearchPayments, includeOwnershipInterestsbooleanfalseAttach each payment category
maxGeneralPayments, maxResearchPayments, maxOwnershipInterestsinteger50, 50, 20Per provider caps, up to 5000, 5000, 1000
programYearslist of stringsallChecked against the CMS catalog
payingCompanystringnoneCase-insensitive "contains"
natureOfPaymentmulti-selectall19 CMS values; general payments only
minAmountUsd, maxAmountUsdnumber0General and research payments; 0 means no limit
onlyNew, stateKey, resetSeenboolean, string, booleanfalse, empty, falseOnly-new monitoring and its memory

Example input:

{
"npi": ["1871538041"],
"programYears": ["2025"],
"payingCompany": "Viatris",
"minAmountUsd": 10,
"includeGeneralPayments": true,
"maxItems": 10
}

No search field, only state, or a wrong value (NPI not 10 digits, bad ZIP or year, minimum above maximum) gives one free error row with errorType: "invalid-input".

๐Ÿ“ฆ Output

One dataset row per provider (recordType: "provider") or teaching hospital (recordType: "teaching-hospital"), with an Overview view and a full view. Provider rows have 40 top-level data columns, plus error, errorType and hint on error rows.

โš–๏ธ Healthcare provider payments scraper vs alternatives

Listings read from the Apify Store on 2026-10-10 (Free tier unless noted).

This Actorscrapers_latautomation-lab
PriceProvider $0.01, general $0.015, research $0.018, ownership $0.02From $6.15 per 1,000; $0.008 to $0.009231 per row$0.005 start plus $0.0096 per item (Bronze)
NPI Registry profile joinedYes, in every rowNot stated in their listingNot stated in their listing
Payment typesGeneral, research, ownershipGeneral, research, ownershipGeneral payments
FiltersNPI list, years, company, nature, amountNPI, year, company, nature; no amount filter listedNPI, years, manufacturer, nature, amount
Only-new monitoringYes, with changeTypeNot stated in their listingNone; compare datasets yourself

The cheapest per payment row is not us: our general payment costs $15 per 1,000 on the Free tier, against $8 to $9.23 (scrapers_lat) and about $11 (automation-lab, plus its start fee). nexgendata lists $0.05 per record and parseforge $0.012 per result, neither with an NPI join. We charge more because each row carries the NPPES profile, filters run before billing, and only-new mode skips what you already have. If you only need raw payment rows, a cheaper actor fits.

๐ŸŽฏ Use cases

Compliance review, pharma and medtech intelligence, investment due diligence, journalism, and scheduled monitoring of NPIs.

๐Ÿ”Œ Run it by API, schedule it, connect it

Call the Actor with the Apify API (curl POST https://api.apify.com/v2/acts/recordsdata~healthcare-provider-payments-scraper/runs), schedule it, and push results to Google Sheets, Make, Zapier, n8n or Airbyte.

๐Ÿ”” Monitor new payments (only-new mode)

Set onlyNew to true and keep the same stateKey (or leave it empty to derive it from your inputs). The Actor stores what it delivered in the named store healthcare-payments-seen and skips providers and payment record ids already delivered, before the cap and before charging. An NPI list is the safest monitor.

๐Ÿค– Healthcare Provider Payments Scraper MCP server for AI agents

Agents can call this Actor through the Apify MCP server at https://mcp.apify.com?tools=RecordsData/healthcare-provider-payments-scraper. The URL loads only this Actor as a tool.

Example agent prompt: "Use the Healthcare Provider Payments Scraper for NPI 1871538041 with general payments on, year 2025 and only Viatris payments of at least $10, then list each payment with date, amount and nature."

Tool description for agents: "Look up U.S. healthcare providers or teaching hospitals in the NPPES NPI Registry and attach CMS Open Payments general, research and ownership records, filtered by year, company, nature and amount." Choose it when an agent needs a provider's identity together with the industry money reported to CMS. It takes the same fields as the Input table.

Both sources are public U.S. government datasets without login. The Actor reads public APIs only. You are responsible for how you use the data. This is an independent tool, not affiliated with CMS or HHS.

โ“ Frequently asked questions

Do I need an API key for NPPES or CMS Open Payments?

No. Healthcare Provider Payments Scraper reads the public NPPES NPI Registry and the public CMS Open Payments database, and neither source needs registration or an API key. You only need an Apify account; Free-plan users get up to 10 providers per run.

Why did my Healthcare Provider Payments Scraper run return 0 results?

The search matched no NPI record, or a payment filter removed every payment. Try a more exact name, drop the state filter, or search by NPI. A search with no matches finishes successfully with "No providers matched this search (nothing charged)", so it costs nothing.

Why did my Healthcare Provider Payments Scraper run fail?

It fails with a clear message, and charges nothing, when the NPI Registry or the CMS Open Payments catalog cannot be reached, or when every provider was skipped because a CMS query failed. An empty search ends as SUCCEEDED instead. Start the run again later.

What happens if I send an empty or invalid input?

The run ends as SUCCEEDED and charges nothing. It saves a single free error row with errorType: "invalid-input", the exact message and a hint, for example when no search field is filled, an NPI is not 10 digits, or a year has no published data.

Why is researchPayments or ownershipInterests missing from a row?

The key is left out when the provider has no such records after your filters, or the category is off. In a real run of 10 providers named John Smith, 4 had general payments and none had research payments or ownership interests.

How far back do the CMS Open Payments records go?

The scraper sweeps every program year that CMS lists in its public Open Payments catalog, newest first. At the time of writing that is seven program years, 2019 to 2025, for all three payment categories, up to your per-provider cap. Use programYears to query only some years.

How fresh is the NPI and Open Payments data?

The data is as fresh as NPPES and CMS Open Payments themselves, since both are read live. The NPI Registry updates frequently, while Open Payments publishes once per program year. Both are queried live, and every row has a scrapedAt timestamp.

Can I search the NPI Registry by NPI number?

Yes. Put one or more 10-digit numbers in npi, one per line. Each provider is delivered once, and a number that does not exist is skipped and named in the run message. A value that is not 10 digits gives a free error row.

Does it match research payments where the doctor is only the principal investigator?

Not yet. The scraper matches only payments where the provider is the covered recipient in CMS Open Payments. Research payments list the principalInvestigators, but a physician who is only the investigator and not the formal recipient is not matched, because that CMS lookup is slow.

How long does a Healthcare Provider Payments Scraper run take?

Small runs finish in seconds: in 16 cloud runs of 1 to 5 providers the median was 3.6 seconds and the longest 25 seconds. A run of 10 providers with all three payment checks across seven program years took about 292 seconds before the payment filters were added. Set programYears to shorten runs.

Which payment filters are available and how does the amount filter work?

Filter by programYears, payingCompany, natureOfPayment (19 CMS values, general payments only) and minAmountUsd or maxAmountUsd (general and research). CMS stores amounts as text, so the Actor applies the range itself, scanning about 4,000 rows per provider and payment type or 60 seconds.

Can I search teaching hospitals, and what is a CCN?

Yes. Teaching hospitals have no NPI; CMS reports their payments under a CCN. Enter part of a name or a 6-digit CCN in teachingHospital, with an optional state, to search 1,522 hospitals. Each match is one teaching-hospital row, billed as a provider record, with no ownership interests.

How does only-new monitoring work and when is a known provider billed again?

With onlyNew, the Actor remembers delivered providers and payment record ids under your stateKey. A new provider returns with changeType: "new". A known provider with undelivered payments comes back as new-payments with only those payments, billed as one provider record plus the payments. Nothing new means no charge.

Why did the column order of my export change?

Provider rows grew from 19 to 40 top-level data columns, and the 21 new ones (such as ccn, middleName and the payment counts and totals) sit among the old ones. Old names are unchanged, but a CSV or Excel export has a different column order, so read columns by name.

What happens if a CMS query fails during a run?

The scraper fails closed, so you never get partial payment data without knowing. After retries on network errors, HTTP 429 and 5xx, a provider whose CMS payment query still fails is skipped, not delivered and not charged, instead of silently losing a program year of data.

Are recipient street addresses included in the payments?

No, on purpose. CMS publishes the recipient's street address lines in the payment data, but they are contact details of private individuals, so the scraper leaves them out. Each payment keeps the recipient specialty, city, state and ZIP. NPPES practice addresses remain in addresses.

๐Ÿ†˜ Support

Open an issue on the Actor's Issues tab or write to contact.punkrecordsdata@gmail.com.

Last updated: 2026-10-11