CMS Medicare Provider Utilization & Payment Crawler avatar

CMS Medicare Provider Utilization & Payment Crawler

Pricing

Pay per event

Go to Apify Store
CMS Medicare Provider Utilization & Payment Crawler

CMS Medicare Provider Utilization & Payment Crawler

Crawl Medicare provider data from the CMS Provider Data API. Access 2.8M+ clinician records with credentials, specialties, and addresses. Get utilization data, MIPS quality scores, and office visit costs. Filter by state, specialty, and provider name.

Pricing

Pay per event

Rating

0.0

(0)

Developer

BowTiedRaccoon

BowTiedRaccoon

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

3 days ago

Last modified

Share

CMS Medicare Provider Utilization & Payment Data Crawler

Extract Medicare provider records from the CMS Provider Data API. Four dataset modes in one actor: clinician directory with 2.8M provider records, procedure utilization data, MIPS quality scores, and office visit costs by specialty and ZIP code. No authentication, no proxies, no scraping — pure JSON API.

CMS Medicare Provider Crawler Features

  • Pull from four CMS datasets in a single actor: clinician directory, utilization, MIPS performance, and office visit costs
  • Clinician directory covers 2.8M+ Medicare providers with credentials (MD, DO, NP, PA), specialties, practice addresses, and phone numbers
  • Filter clinician records by state, primary specialty, and provider last name — filters applied server-side where the API supports it
  • MIPS performance data for 541K+ clinicians including final composite score, quality, cost, and promoting interoperability components
  • Office visit cost data broken out by specialty (55 specialties covered) and ZIP code — min/max Medicare pricing and copay ranges for new and established patients
  • Utilization data shows procedure category and volume range per provider across 314K+ records
  • Reads CMS's structured JSON API directly — 500 records per page, no HTML parsing, no rate-limit issues
  • Pay-per-event pricing at roughly $0.001 per record

Who Uses CMS Medicare Provider Data?

  • Healthcare recruiters and staffing firms — build targeted contact lists of physicians, NPs, and PAs filtered by specialty and state, with formatted phone numbers ready to import
  • Medical device and pharma sales teams — identify high-volume providers in target specialties by cross-referencing clinician directory and utilization data
  • Health plan and network analysts — audit Medicare assignment acceptance across states and specialties, or assess telehealth adoption by region
  • Revenue cycle and consulting firms — benchmark office visit costs against Medicare rates by specialty and ZIP code for contract negotiation or patient cost estimation
  • Policy researchers and academics — analyze MIPS performance score distributions by specialty or geography for quality measurement research
  • Healthcare marketplaces and directories — seed or refresh provider databases with verified NPI, credential, address, and contact data from the authoritative government source

How CMS Medicare Provider Crawler Works

  1. You select a dataset type and optionally set filters: one or more states, a primary specialty, or a provider last name.
  2. For clinician, utilization, and MIPS datasets, the crawler paginates through the CMS API at 500 records per request with a 150ms delay between calls. State filters generate parallel queries — one per state — which run sequentially.
  3. For office visit costs, the specialty selection maps to one of 55 specialty-specific CMS datasets. The crawler fetches that dataset in full.
  4. Records are normalized into a consistent output schema regardless of which dataset you ran.

Input

Clinician directory: all cardiologists in Texas and Florida

{
"datasetType": "clinician",
"states": ["TX", "FL"],
"specialty": "Cardiology",
"maxItems": 500,
"sp_intended_usage": "Lead generation for a medical device company",
"sp_improvement_suggestions": "none"
}

MIPS performance: national run, no filters

{
"datasetType": "mips_performance",
"maxItems": 1000,
"sp_intended_usage": "Quality score benchmarking study",
"sp_improvement_suggestions": "none"
}

Office visit costs: Internal Medicine pricing by ZIP

{
"datasetType": "office_visit_costs",
"specialty": "Internal Medicine",
"maxItems": 500,
"sp_intended_usage": "Patient cost estimation tool",
"sp_improvement_suggestions": "none"
}

Input Parameters

FieldTypeDefaultDescription
datasetTypestringclinicianDataset to query: clinician, utilization, mips_performance, or office_visit_costs
statesstring[][] (all states)One or more U.S. state abbreviations. Applies to clinician and MIPS datasets.
specialtystring"" (all)Primary specialty filter. For office visit costs, selects the specialty-specific dataset.
providerNamestring""Filter by provider last name. Case-insensitive partial match. Applies to clinician and utilization datasets.
maxItemsinteger100Maximum number of records to return.
proxyConfigurationobjectdisabledProxy settings. Not required — the CMS API is a public government service.
sp_intended_usagestringRequired. Describe how you plan to use this data.
sp_improvement_suggestionsstringRequired. Feedback or suggestions for this actor.

CMS Medicare Provider Crawler Output Fields

Output fields are shared across all four datasets. A given record will only have fields populated that apply to its dataset type. The dataset_type field always indicates which mode produced the record.

Clinician Directory Output

{
"npi": "1234567890",
"provider_name": "SMITH, JENNIFER",
"provider_credentials": "MD",
"provider_gender": "F",
"provider_specialty": "CARDIOLOGY",
"provider_secondary_specialties": "INTERNAL MEDICINE",
"facility_name": "Houston Heart Center",
"provider_street_address": "1200 Binz St, Suite 400",
"provider_city": "HOUSTON",
"provider_state": "TX",
"provider_zip": "77004-6832",
"provider_phone": "(713) 555-0192",
"medicare_assignment": "Y",
"telehealth": "Y",
"dataset_type": "clinician"
}
FieldDescription
npiNational Provider Identifier — the 10-digit unique provider ID
provider_nameProvider full name formatted as LAST, FIRST
provider_credentialsProfessional credentials (MD, DO, NP, PA, etc.)
provider_genderProvider gender (M or F)
provider_specialtyPrimary specialty as listed in CMS
provider_secondary_specialtiesSecondary specialties, comma-separated
facility_nameFacility or organization name
provider_street_addressStreet address (may include suite)
provider_cityCity
provider_stateTwo-letter state abbreviation
provider_zipZIP code formatted as XXXXX or XXXXX-XXXX
provider_phonePhone number formatted as (XXX) XXX-XXXX
medicare_assignmentWhether provider accepts Medicare assignment (Y/N)
telehealthWhether provider offers telehealth services (Y/N)
dataset_typeAlways clinician for this mode

Utilization Data Output

{
"npi": "1234567890",
"provider_name": "JONES, MICHAEL",
"procedure_category": "Major Joint Replacement or Reattachment of Lower Extremity",
"procedure_count": "51-100",
"dataset_type": "utilization"
}
FieldDescription
npiNational Provider Identifier
provider_nameProvider full name formatted as LAST, FIRST
procedure_categoryProcedure category name
procedure_countProcedure volume range (e.g. 1-10, 11-20, 51-100)
dataset_typeAlways utilization for this mode

MIPS Performance Output

{
"npi": "1234567890",
"provider_name": "PATEL, ANITA",
"mips_final_score": 87.4,
"quality_score": 45.0,
"cost_score": 18.2,
"pi_score": 25.0,
"ia_score": 0.0,
"dataset_type": "mips_performance"
}
FieldDescription
npiNational Provider Identifier
provider_nameProvider full name formatted as LAST, FIRST
mips_final_scoreMIPS composite score (0–100) for performance year 2023
quality_scoreQuality performance category score
cost_scoreCost performance category score
pi_scorePromoting interoperability category score
ia_scoreImprovement activities category score
dataset_typeAlways mips_performance for this mode

Office Visit Costs Output

{
"specialty": "Internal Medicine",
"zip_code": "77004",
"new_patient_cost_min": 112.50,
"new_patient_cost_max": 209.75,
"established_patient_cost_min": 68.30,
"established_patient_cost_max": 154.00,
"new_patient_copay_min": 28.13,
"new_patient_copay_max": 52.44,
"established_patient_copay_min": 17.08,
"established_patient_copay_max": 38.50,
"dataset_type": "office_visit_costs"
}
FieldDescription
specialtySpecialty name as used by CMS
zip_codeZIP code for this pricing row
new_patient_cost_minMinimum Medicare pricing for a new patient office visit (USD)
new_patient_cost_maxMaximum Medicare pricing for a new patient office visit (USD)
established_patient_cost_minMinimum Medicare pricing for an established patient office visit (USD)
established_patient_cost_maxMaximum Medicare pricing for an established patient office visit (USD)
new_patient_copay_minMinimum patient copay for a new patient office visit (USD)
new_patient_copay_maxMaximum patient copay for a new patient office visit (USD)
established_patient_copay_minMinimum patient copay for an established patient office visit (USD)
established_patient_copay_maxMaximum patient copay for an established patient office visit (USD)
dataset_typeAlways office_visit_costs for this mode

FAQ

How many providers does the CMS clinician directory cover? The CMS National Downloadable File contains 2.8 million Medicare provider records — every clinician enrolled in Medicare, including physicians, nurse practitioners, physician assistants, dentists, and other practitioners.

Can I get the full dataset without filters? Yes. Leave states and specialty empty and the actor will paginate through the entire dataset up to your maxItems limit. A full national clinician pull at 2.8M records will take several hours. Use state or specialty filters if you only need a subset.

Do I need proxies to run this actor? No. The CMS Provider Data API is a U.S. government public service that requires no authentication and imposes no strict rate limits. The actor runs proxy-disabled by default and adds a 150ms delay between requests as a courtesy.

What is the difference between utilization and clinician data? The clinician dataset contains contact and credential information — who providers are, where they practice, and whether they accept Medicare. The utilization dataset shows what procedures they perform and in what volume. Both records carry the NPI key, so you can join them if needed.

Which specialties are available for office visit costs? 55 specialties are covered, including Internal Medicine, Family Practice, Cardiology, Orthopedic Surgery, Neurology, Psychiatry, Nurse Practitioner, Physician Assistant, and others. The specialty filter maps directly to a specialty-specific CMS dataset. If a specialty is not in the dropdown, it is not available in the underlying CMS data.

What performance year does MIPS data cover? The MIPS performance dataset covers performance year 2023 (PY 2023) — the most recent CMS public reporting data at time of build.

Can I filter utilization or MIPS data by state? State filtering applies to the clinician dataset only. The CMS API exposes a state field on that dataset but not on utilization or MIPS schemas. For those modes, filter by provider last name or run the full national dataset and post-filter on your side.

Need More Features?

Need a specialty not in the list, a different filter combination, or a scheduled run that refreshes on CMS update cycles? File an issue or get in touch.

Why Use CMS Medicare Provider Crawler?

  • Four datasets, one actor — Clinician directory, utilization, MIPS performance, and office visit costs are all accessible from a single configured run, not four separate tools to manage and pay for separately.
  • Government source, no intermediary — Data comes directly from the CMS Provider Data API, the same source that powers Medicare's official provider search tools. No reseller markup, no stale cache.
  • Priced per record — A targeted state-specialty filter returning 2,000 cardiologists in Texas costs a fraction of a full national pull. Both are priced per event, not per subscription seat.