OrbTop

CMS Medicare Provider Utilization & Payment Crawler

LEAD GENERATIONBUSINESSOTHER

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

Field Type Default Description
datasetType string clinician Dataset to query: clinician, utilization, mips_performance, or office_visit_costs
states string[] [] (all states) One or more U.S. state abbreviations. Applies to clinician and MIPS datasets.
specialty string "" (all) Primary specialty filter. For office visit costs, selects the specialty-specific dataset.
providerName string "" Filter by provider last name. Case-insensitive partial match. Applies to clinician and utilization datasets.
maxItems integer 100 Maximum number of records to return.
proxyConfiguration object disabled Proxy settings. Not required — the CMS API is a public government service.
sp_intended_usage string Required. Describe how you plan to use this data.
sp_improvement_suggestions string Required. 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"
}
Field Description
npi National Provider Identifier — the 10-digit unique provider ID
provider_name Provider full name formatted as LAST, FIRST
provider_credentials Professional credentials (MD, DO, NP, PA, etc.)
provider_gender Provider gender (M or F)
provider_specialty Primary specialty as listed in CMS
provider_secondary_specialties Secondary specialties, comma-separated
facility_name Facility or organization name
provider_street_address Street address (may include suite)
provider_city City
provider_state Two-letter state abbreviation
provider_zip ZIP code formatted as XXXXX or XXXXX-XXXX
provider_phone Phone number formatted as (XXX) XXX-XXXX
medicare_assignment Whether provider accepts Medicare assignment (Y/N)
telehealth Whether provider offers telehealth services (Y/N)
dataset_type Always 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"
}
Field Description
npi National Provider Identifier
provider_name Provider full name formatted as LAST, FIRST
procedure_category Procedure category name
procedure_count Procedure volume range (e.g. 1-10, 11-20, 51-100)
dataset_type Always 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"
}
Field Description
npi National Provider Identifier
provider_name Provider full name formatted as LAST, FIRST
mips_final_score MIPS composite score (0–100) for performance year 2023
quality_score Quality performance category score
cost_score Cost performance category score
pi_score Promoting interoperability category score
ia_score Improvement activities category score
dataset_type Always 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"
}
Field Description
specialty Specialty name as used by CMS
zip_code ZIP code for this pricing row
new_patient_cost_min Minimum Medicare pricing for a new patient office visit (USD)
new_patient_cost_max Maximum Medicare pricing for a new patient office visit (USD)
established_patient_cost_min Minimum Medicare pricing for an established patient office visit (USD)
established_patient_cost_max Maximum Medicare pricing for an established patient office visit (USD)
new_patient_copay_min Minimum patient copay for a new patient office visit (USD)
new_patient_copay_max Maximum patient copay for a new patient office visit (USD)
established_patient_copay_min Minimum patient copay for an established patient office visit (USD)
established_patient_copay_max Maximum patient copay for an established patient office visit (USD)
dataset_type Always 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.