CMS Medicare Physician Payments Scraper avatar

CMS Medicare Physician Payments Scraper

Pricing

from $0.01 / 1,000 cms payment record extracteds

Go to Apify Store
CMS Medicare Physician Payments Scraper

CMS Medicare Physician Payments Scraper

Extract official CMS Medicare physician payment, utilization, provider, HCPCS, and geography data for reimbursement and market analysis.

Pricing

from $0.01 / 1,000 cms payment record extracteds

Rating

0.0

(0)

Developer

Stas Persiianenko

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Categories

Share

Extract Medicare Physician & Other Practitioners payment, utilization, provider, HCPCS, and geography data from official CMS public data APIs.

What does CMS Medicare Physician Payments Scraper do?

CMS Medicare Physician Payments Scraper turns the public CMS Medicare Physician & Other Practitioners files into clean Apify dataset rows.

It reads the official data.cms.gov catalog, discovers the current API endpoint, applies practical filters, and saves normalized records.

Use it when you need provider reimbursement, submitted charge, allowed amount, payment amount, service volume, beneficiary count, specialty, and source metadata.

Who is it for?

  • ๐Ÿฅ Healthcare market analysts benchmarking provider reimbursement.
  • ๐Ÿ’ณ Revenue-cycle teams comparing submitted charges and Medicare allowed amounts.
  • ๐Ÿ“Š Consulting teams sizing specialty, state, or HCPCS service markets.
  • ๐Ÿงพ Compliance researchers auditing provider/service utilization patterns.
  • ๐Ÿงฌ Data enrichment teams adding Medicare payment context to NPI lists.
  • ๐Ÿข Healthcare sales teams segmenting providers by services and geography.

Why use this scraper?

  • โœ… Uses official CMS public APIs, not browser scraping.
  • โœ… Supports provider/service, provider summary, and geography/service modes.
  • โœ… Normalizes numeric charge, allowed, payment, utilization, and beneficiary fields.
  • โœ… Includes source dataset/version metadata for reproducible analysis.
  • โœ… Keeps the raw CMS row so analysts can audit every normalized value.
  • โœ… Works without accounts, cookies, proxies, or manual CSV downloads.

Data source

The actor uses CMS data.cms.gov/data.json and the CMS Data API endpoints linked from the catalog.

The default source is the latest Medicare Physician & Other Practitioners release available in the CMS catalog.

You can also select recent years when CMS exposes them in the catalog distributions.

Dataset modes

Provider and service

Use provider-service to extract rows by rendering NPI and HCPCS service.

This is the default mode and is best for reimbursement benchmarking by code.

Provider summary

Use provider-summary to extract provider-level summary rows.

This is useful for broad provider profiling and NPI enrichment.

Geography and service

Use geography-service to extract service-level geography rows.

This is useful for state-level or market-level demand and reimbursement research.

What data can you extract?

Field groupExamples
Source metadatadataset mode, CMS dataset title, API URL, CSV URL, modified date, dataset year
Provider identityNPI, provider name, first name, last name, credentials, entity code
Provider locationaddress, city, state, ZIP5, country
Provider profilespecialty, Medicare participation indicator
Service detailsHCPCS code, HCPCS description, drug indicator, place of service
Utilizationbeneficiaries, services, beneficiary-day services
Payment fieldsaverage submitted charge, Medicare allowed amount, payment amount, standardized amount
Audit dataraw CMS row

How much does it cost to extract CMS Medicare physician payment data?

This actor uses pay-per-event pricing.

You pay a small start fee plus a per-record fee for each CMS record saved to the dataset.

Use narrow filters during exploration, then increase maxRecords when you are ready for production exports.

Input options

  • datasetMode โ€” choose provider-service, provider-summary, or geography-service.
  • datasetYear โ€” choose latest or a specific data year if CMS exposes it.
  • maxRecords โ€” cap how many rows to save.
  • npi โ€” filter to one rendering provider NPI.
  • providerName โ€” local contains filter over provider first/last/organization name.
  • state โ€” two-letter rendering provider state abbreviation.
  • specialty โ€” exact CMS provider type such as Internal Medicine.
  • zip5 โ€” five-digit provider ZIP code.
  • hcpcsCode โ€” HCPCS/CPT service code such as 99213.
  • placeOfService โ€” facility (F) or office/non-facility (O).

Example input

{
"datasetMode": "provider-service",
"datasetYear": "latest",
"state": "CA",
"hcpcsCode": "99213",
"maxRecords": 100
}

Example output

{
"datasetMode": "provider-service",
"datasetYear": 2024,
"npi": "1003000142",
"providerName": "Rashid Khalil",
"specialty": "Anesthesiology",
"state": "OH",
"hcpcsCode": "99213",
"beneficiaryCount": 20,
"serviceCount": 45,
"submittedChargeAmount": 120,
"medicareAllowedAmount": 75,
"medicarePaymentAmount": 58,
"sourceDatasetTitle": "Medicare Physician & Other Practitioners - by Provider and Service"
}

How to scrape CMS Medicare physician payment data

  1. Open the actor on Apify.
  2. Select the dataset mode.
  3. Keep datasetYear as latest unless your workflow needs a historical year.
  4. Add one or more filters such as state, NPI, specialty, HCPCS, or place of service.
  5. Set maxRecords.
  6. Run the actor.
  7. Export the dataset as JSON, CSV, Excel, XML, or via API.

Tips for better results

  • Use state plus hcpcsCode for practical reimbursement benchmarks.
  • Use npi when enriching a known provider list.
  • Use specialty with state for provider market sizing.
  • Use providerName with another filter because name matching is applied locally after CMS API paging.
  • Use geography-service for market-level analysis instead of provider-level rows.

Common workflows

NPI reimbursement enrichment

Run one NPI at a time or batch NPI inputs through the Apify API.

Join results to your CRM, provider master, or credentialing database.

HCPCS benchmarking

Filter by HCPCS and state to compare average submitted charges, allowed amounts, and payments.

Use this for reimbursement analytics and market pricing research.

Specialty market sizing

Filter by specialty and state, then aggregate services and beneficiaries downstream.

This helps estimate demand by specialty and geography.

Compliance review

Export raw and normalized rows together so reviewers can trace every value to CMS source data.

Integrations

  • Send output to Google Sheets for analyst review.
  • Export to BigQuery, Snowflake, or S3 for recurring data pipelines.
  • Use Apify webhooks to trigger downstream ETL jobs.
  • Call the actor from Python or Node.js when enriching provider lists.
  • Connect with Apify MCP for natural-language research workflows.

API usage

Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/cms-medicare-physician-payments-scraper').call({
datasetMode: 'provider-service',
state: 'CA',
hcpcsCode: '99213',
maxRecords: 100,
});
console.log(run.defaultDatasetId);

Python

from apify_client import ApifyClient
import os
client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('automation-lab/cms-medicare-physician-payments-scraper').call(run_input={
'datasetMode': 'provider-service',
'state': 'CA',
'hcpcsCode': '99213',
'maxRecords': 100,
})
print(run['defaultDatasetId'])

cURL

curl -X POST "https://api.apify.com/v2/acts/automation-lab~cms-medicare-physician-payments-scraper/runs?token=$APIFY_TOKEN" \
-H 'Content-Type: application/json' \
-d '{"datasetMode":"provider-service","state":"CA","hcpcsCode":"99213","maxRecords":100}'

MCP usage

Use Apify MCP with this tool enabled:

https://mcp.apify.com/?tools=automation-lab/cms-medicare-physician-payments-scraper

Add it to Claude Code with:

claude mcp add apify-cms-medicare-physician-payments \
"https://mcp.apify.com/?tools=automation-lab/cms-medicare-physician-payments-scraper"

Claude Desktop JSON configuration:

{
"mcpServers": {
"apify-cms-medicare-physician-payments": {
"url": "https://mcp.apify.com/?tools=automation-lab/cms-medicare-physician-payments-scraper"
}
}
}

Example prompts:

  • "Extract Medicare physician payment records for HCPCS 99213 in California."
  • "Find Medicare provider-service rows for this NPI and summarize payment amounts."
  • "Compare beneficiary and service counts for a specialty across states."

Data freshness

The actor discovers the latest CMS catalog distribution at run time.

CMS release dates and modified dates are included in output metadata when available.

Limitations

CMS API filters are exact-match for fields such as state, NPI, HCPCS, ZIP5, and specialty.

Provider-name search is local after CMS paging, so combine it with narrower filters for large searches.

CMS can revise datasets, field names, or release availability; source metadata is included to help track changes.

Legality

CMS Medicare Physician & Other Practitioners files are public government datasets.

You are responsible for using healthcare data in compliance with applicable laws, payer contracts, privacy rules, and business policies.

Do not use output for unlawful discrimination, credentialing shortcuts, or unsupported clinical conclusions.

FAQ

Is this official CMS data?

Yes. The actor reads public CMS Data API endpoints discovered from data.cms.gov/data.json and includes source metadata in every row.

Can I search by provider name?

Yes, but provider-name matching is applied locally after CMS API paging. Combine it with state, NPI, specialty, ZIP5, or HCPCS filters for efficient runs.

Troubleshooting

Why did I get zero records?

Check exact spelling and formatting. CMS filters are exact-match. Try removing specialty or ZIP5 first, then add filters back.

Why is providerName slow or incomplete?

The CMS API does not provide a general contains search endpoint for provider names. The actor applies providerName locally after fetching pages.

Why are some fields empty?

Different CMS dataset modes expose different fields. Geography rows may not include NPI-level provider details, and summary rows may not include every service field.

Explore related healthcare and government data actors from Automation Lab:

Support

If you need a missing CMS field, historical release, or workflow-specific output shape, open an issue on the actor page with an example input and expected output.

Changelog

0.1

Initial private build with CMS catalog discovery, provider/service, provider summary, geography/service modes, normalized payment fields, and raw row audit data.