CMS Inpatient Rehabilitation Utilization Scraper avatar

CMS Inpatient Rehabilitation Utilization Scraper

Pricing

Pay per event

Go to Apify Store
CMS Inpatient Rehabilitation Utilization Scraper

CMS Inpatient Rehabilitation Utilization Scraper

πŸ₯ Extract official CMS IRF utilization, Medicare payment, beneficiary mix, provider geography, and service breakdown data.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Stas Persiianenko

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

6 days ago

Last modified

Categories

Share

Export official CMS Inpatient Rehabilitation Facility (IRF) utilization, payment, beneficiary mix, geography, provider, and service-breakdown data from the public CMS Data API.

This actor is built for analysts who need structured Medicare IRF rows without downloading CMS files manually, writing pagination code, or normalizing numeric healthcare fields by hand.

What does CMS Inpatient Rehabilitation Utilization Scraper do?

It calls the official CMS Data API and saves clean dataset rows for Medicare Post-Acute Care Utilization β€” Inpatient Rehabilitation Facility data.

You can extract:

  • πŸ₯ Provider-level IRF rows
  • πŸ—ΊοΈ State and national summary rows
  • πŸ’΅ Charges, allowed amounts, Medicare payments, and standardized payments
  • πŸ‘₯ Beneficiary counts and demographic percentages
  • πŸ“Š Optional service and case-mix breakdown rows
  • πŸ”Ž Raw CMS fields for auditability

Who is it for?

This scraper is useful for healthcare and market-intelligence teams that need repeatable CMS IRF data exports.

Typical users include:

  • πŸ₯ Post-acute-care operators benchmarking facilities
  • πŸ’Ό Healthcare investors screening regional IRF markets
  • πŸ“ˆ Consultants preparing reimbursement and utilization studies
  • 🧾 Payers analyzing Medicare utilization patterns
  • πŸ—ΊοΈ Market strategy teams comparing states and providers
  • πŸ§ͺ Data teams building healthcare dashboards

Why use this actor?

CMS data is public, but production workflows still require paging, filtering, type conversion, and repeatable exports.

This actor handles those steps and returns analysis-ready rows in Apify datasets.

Benefits:

  • No CMS login or API key required
  • HTTP-only implementation, no browser overhead
  • Official CMS source URLs included
  • Numeric fields normalized to numbers
  • Raw CMS row included for audit trails
  • Works with Apify API, schedules, webhooks, and integrations

Data source

The actor uses public CMS datasets:

  • Medicare Post-Acute Care Utilization IRF by geography/provider
  • Medicare Post-Acute Care Utilization IRF service/case-mix breakdown

The default dataset ID is 0d9eebff-7e23-4b1e-8e29-362eea132df5.

The optional service-breakdown dataset ID is 62e62d07-1837-4dbf-bb4f-a4820e0c7b16.

What data can I extract?

The output includes provider identity, utilization metrics, payments, demographics, and service details.

FieldDescription
recordTypeutilization or service_breakdown
yearCMS fiscal year
summaryCategoryCMS summary level such as STATE or PROVIDER
providerIdCMS provider identifier
providerNameProvider or geography name
stateProvider/geography state
beneficiariesDistinct beneficiary count
staysTotal episode/stay count
serviceDaysTotal service days
totalChargesTotal charges
totalAllowedAmountTotal allowed amount
medicarePaymentAmountTotal Medicare payment amount
standardizedPaymentAmountStandardized Medicare payment amount
dualEligiblePctDual-eligible beneficiary percentage
averageAgeAverage beneficiary age
groupingDescriptionService/case-mix group description
rawOriginal CMS row

How much does it cost to scrape CMS inpatient rehabilitation utilization data?

This actor uses pay-per-event pricing.

You pay a small start fee plus a per-row charge for each saved CMS IRF dataset row.

Because the source is an official public JSON API, runs are usually inexpensive and do not require proxy traffic.

Use a low maxItems value for trial runs, then increase it for production exports.

Input options

The actor accepts filters that map to CMS fields.

InputDescription
yearsFiscal years to include
statesTwo-letter state codes
summaryCategoriesCMS summary levels such as STATE or PROVIDER
providerIdsSpecific CMS provider IDs
providerNameCase-insensitive provider-name contains filter
includeServiceBreakdownAlso export service/case-mix rows
maxItemsMaximum saved rows
pageSizeCMS API page size

Example input

{
"years": [2023],
"states": ["CA", "TX"],
"summaryCategories": ["STATE", "PROVIDER"],
"includeServiceBreakdown": false,
"maxItems": 100,
"pageSize": 500
}

Output example

{
"recordType": "utilization",
"year": 2023,
"summaryCategory": "PROVIDER",
"providerId": "050006",
"providerName": "Providence St Joseph Hospital",
"providerCity": "Eureka",
"state": "CA",
"beneficiaries": 180,
"stays": 183,
"serviceDays": 2121,
"totalCharges": 18843948,
"medicarePaymentAmount": 4989503,
"scrapedAt": "2026-07-09T00:00:00.000Z"
}

How to run the scraper

  1. Open the actor on Apify.
  2. Select fiscal years, states, and summary categories.
  3. Keep maxItems low for a first test.
  4. Enable service breakdown only when you need case-mix details.
  5. Start the run.
  6. Download the dataset as JSON, CSV, Excel, or via API.

Tips for better results

  • Use summaryCategories: ["PROVIDER"] for facility-level rows.
  • Use summaryCategories: ["STATE"] for state totals.
  • Add providerIds when monitoring known facilities.
  • Use providerName for quick provider discovery.
  • Increase pageSize for faster large exports.
  • Lower pageSize if you use a narrow provider-name text filter.

Integrations

You can connect results to healthcare analytics workflows.

Examples:

  • Send provider benchmark rows to Google Sheets.
  • Load CMS IRF utilization into BigQuery or Snowflake.
  • Trigger a webhook when new CMS runs complete.
  • Schedule monthly exports for reimbursement dashboards.
  • Combine facility utilization with internal CRM or market data.

API usage with Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/cms-inpatient-rehabilitation-utilization-scraper').call({
years: [2023],
states: ['CA'],
summaryCategories: ['PROVIDER'],
maxItems: 100,
});
console.log(run.defaultDatasetId);

API usage with Python

from apify_client import ApifyClient
client = ApifyClient('MY-APIFY-TOKEN')
run = client.actor('automation-lab/cms-inpatient-rehabilitation-utilization-scraper').call(run_input={
'years': [2023],
'states': ['CA'],
'summaryCategories': ['PROVIDER'],
'maxItems': 100,
})
print(run['defaultDatasetId'])

API usage with cURL

curl -X POST "https://api.apify.com/v2/acts/automation-lab~cms-inpatient-rehabilitation-utilization-scraper/runs?token=$APIFY_TOKEN" \
-H 'Content-Type: application/json' \
-d '{"years":[2023],"states":["CA"],"summaryCategories":["PROVIDER"],"maxItems":100}'

MCP usage

Use this actor from Claude Desktop or Claude Code through the Apify MCP server.

MCP URL:

https://mcp.apify.com/?tools=automation-lab/cms-inpatient-rehabilitation-utilization-scraper

Claude Code setup:

$claude mcp add apify-cms-irf https://mcp.apify.com/?tools=automation-lab/cms-inpatient-rehabilitation-utilization-scraper

Claude Desktop JSON configuration:

{
"mcpServers": {
"apify-cms-irf": {
"url": "https://mcp.apify.com/?tools=automation-lab/cms-inpatient-rehabilitation-utilization-scraper"
}
}
}

Example prompts:

  • "Export 2023 CMS IRF provider utilization rows for California."
  • "Get CMS inpatient rehab service-breakdown data for Texas and summarize payment per stay."
  • "Compare IRF Medicare payment amounts across CA and NY providers."

Scheduling

You can schedule this actor to refresh CMS exports periodically.

Useful schedules include:

  • Monthly provider-monitoring exports
  • Quarterly market-sizing snapshots
  • Annual CMS data refresh checks
  • Pre-investment diligence data pulls

Service-breakdown mode

Set includeServiceBreakdown to true to add case-mix and service grouping rows.

Service-breakdown rows include fields such as:

  • groupingCode
  • groupingDescription
  • caseMix
  • avgChargePerStay
  • avgPaymentPerStay
  • caseMixDayPct

When service breakdown is enabled, the actor splits the requested maxItems between utilization and service rows so the dataset includes both types.

Legality

This actor uses official public CMS API endpoints that do not require login or private credentials.

You are responsible for using exported data in compliance with applicable laws, CMS terms, privacy obligations, and your organization's policies.

The actor does not attempt to access private patient information.

FAQ

Is this CMS IRF scraper using an official source?

Yes. It uses official public CMS Data API endpoints for Medicare Post-Acute Care Utilization IRF datasets.

Can I scrape provider-level inpatient rehabilitation rows?

Yes. Set summaryCategories to PROVIDER and optionally filter by states, years, or providerIds.

Troubleshooting

Why did I get zero rows?

Check that your year, state, provider ID, and summary category combination exists in CMS data. For provider-level rows, use PROVIDER.

Why are some fields null?

CMS publishes different columns for utilization and service-breakdown rows. Fields not present in a source row are returned as null.

Why does service-breakdown output show fewer utilization rows?

When service breakdown is enabled, maxItems is shared across both record types so you can inspect both datasets in one run.

Explore related automation-lab healthcare and data actors:

Version notes

Initial version focuses on official CMS IRF utilization and optional service-breakdown datasets.

Future versions may add more CMS post-acute care datasets if users request them.