CMS Open Payments Scraper - Physician Payments avatar

CMS Open Payments Scraper - Physician Payments

Pricing

from $2.00 / 1,000 payment relationships

Go to Apify Store
CMS Open Payments Scraper - Physician Payments

CMS Open Payments Scraper - Physician Payments

Scrape CMS Open Payments: which company paid which US physician, how much and in how many transactions. Filter by company, physician, NPI or recipient type, sorted by amount, which the source does not do. Sunshine Act data for compliance, sales and research.

Pricing

from $2.00 / 1,000 payment relationships

Rating

0.0

(0)

Developer

Tom Awake

Tom Awake

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

18 hours ago

Last modified

Share

What does CMS Open Payments Scraper do?

Who paid which US physician, how much, and across how many transactions — from CMS Open Payments, the federal register of industry payments to doctors and teaching hospitals.

No login. No API key. No proxies.

Relationships, not 16 million receipts

CMS publishes every individual payment: 16 million rows for 2025 alone, one per dinner, per consulting fee, per royalty cheque. Nobody wants that.

What a compliance officer or a medtech sales lead wants is the relationship: Dr Sethi received $154,631.57 from Medtronic across 151 payments. This Actor serves exactly that — one row per physician-company pair, with the total and the transaction count.

RecipientPaid byTotalPayments
UT MD ANDERSON CANCER CENTERPfizer Inc.$22,374,153.36469
THE CHILDREN'S HOSPITAL OF PHILADELPHIAPfizer Inc.$10,103,322.2546
NISHANT SETHIMedtronic, Inc.$154,631.57151

The bug it fixes, and why it matters

CMS sorts amounts as text, not as numbers.

Ask the source for the highest payments and it stops at $99,999.96 — not because that is the maximum, but because "171059.91" sorts below "99999.96" when the first character decides. Measured on 13 September 2026: 42,417 relationships exceed six figures, and every one of them is invisible to the source's own ranking.

The $22.4 million MD Anderson row above is precisely what that bug hides.

The same flaw breaks numeric filters: asking the source for totals above $100,000 returns 4,931,711 rows out of 4,953,301. So this Actor sorts and thresholds numerically, on its own side, and never sends a numeric comparison to the API.

If you need the largest payments — and for compliance screening that is the entire point — this distinction is the product.

Output

FieldExample
recipientNameNISHANT SETHI
firstName, lastNameNISHANT, SETHI
npi1003024811 — joins to the NPI Registry
recipientTypeCovered Recipient Physician
teachingHospitalUT MD ANDERSON CANCER CENTER
payerName, payerIdMedtronic, Inc.
paymentTypeGeneral
totalAmountUsd154631.57
transactionCount151
averagePaymentUsd1024.05
programYear, openPaymentsUrl2025, link to the CMS record

averagePaymentUsd separates cases a total alone confuses: $40,000 in one consulting fee and $40,000 across 300 meals are very different relationships.

Input

{
"payerName": "Medtronic",
"programYear": "2025",
"maxItems": 1000
}
FieldDefaultNotes
payerNameMedtronicPrefix match — the highest-value filter
programYear20252019–2025, published ~6 months in arrears
maxItems1000One row per relationship
minTotalUsdApplied numerically, after fetching
lastName, npiOne physician
recipientTypeallPhysicians, practitioners, teaching hospitals

Use cases

  • Competitive intelligence — every physician a competitor pays is a physician using their products. Medtronic alone has 79,609 relationships in 2025.
  • Compliance and conflict-of-interest screening — what did our clinicians receive, from whom, and how much.
  • Medical affairs and KOL mapping — who the industry actually funds, ranked by real amounts.
  • Due diligence and journalism — the payment trail behind a prescriber or an institution.
  • Enrichmentnpi joins straight to the NPI Registry for specialty, address and practice locations.

Limits, honestly

  • Wide queries are slow. Filtering 5 million relationships takes roughly a minute per page at the source. A large manufacturer has tens of thousands of rows; set maxItems deliberately.
  • maxItems truncates before sorting. Rows are fetched in the source's own order, then sorted numerically. Asking for 1,000 out of 79,609 gives the top of those 1,000, not the national top 1,000. Narrow the filter, or raise the limit, when you need a true ranking.
  • Teaching hospitals carry no NPI in this dataset — the column is empty for them by design, not by omission.
  • CMS restates data: figures for a year can change after publication.
  • A payment is a payment. It is not evidence of wrongdoing, and this data says nothing about whether any relationship was improper.
  • Requests are paced out of courtesy to a free public service.
  • Not affiliated with CMS.

How much does it cost?

You pay per payment relationship returned: $0.003 each, that is $3.00 per 1,000. There is no start fee, and subscription plans pay less per payment relationship.

The example input below asks for up to 500 payment relationships, so it costs $1.50 at most.

If a run reaches the spending limit you set, the output stops at that limit and never goes past it. You are never charged for rows that were not delivered.

Use CMS Open Payments Scraper as an API

Call it from your own code with the Apify client, here in Python:

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("DataIO/cms-open-payments-physicians").call(run_input={
'payerName': 'Medtronic',
'programYear': '2025',
'maxItems': 500,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)

It also works from JavaScript, Make, Zapier, n8n, and from AI agents through the Apify MCP server.

Other actors you might like

FAQ

The actor reads public data from its official source, without logging in and without bypassing any access control. What you do with the data, for example contacting people listed in it, is your responsibility under the laws that apply to you, such as GDPR in Europe.

Can I run it on a schedule?

Yes. Create a schedule in Apify Console, daily or weekly for example, and each run delivers a fresh dataset, which you can send by email, webhook or integration.

Can AI agents use it?

Yes. It is available through the Apify MCP server, and every input field is described in its input schema, so an agent can call it directly.