CMS Inpatient Rehabilitation Utilization Scraper
Pricing
Pay per event
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
Maintained by CommunityActor 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.
| Field | Description |
|---|---|
recordType | utilization or service_breakdown |
year | CMS fiscal year |
summaryCategory | CMS summary level such as STATE or PROVIDER |
providerId | CMS provider identifier |
providerName | Provider or geography name |
state | Provider/geography state |
beneficiaries | Distinct beneficiary count |
stays | Total episode/stay count |
serviceDays | Total service days |
totalCharges | Total charges |
totalAllowedAmount | Total allowed amount |
medicarePaymentAmount | Total Medicare payment amount |
standardizedPaymentAmount | Standardized Medicare payment amount |
dualEligiblePct | Dual-eligible beneficiary percentage |
averageAge | Average beneficiary age |
groupingDescription | Service/case-mix group description |
raw | Original 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.
| Input | Description |
|---|---|
years | Fiscal years to include |
states | Two-letter state codes |
summaryCategories | CMS summary levels such as STATE or PROVIDER |
providerIds | Specific CMS provider IDs |
providerName | Case-insensitive provider-name contains filter |
includeServiceBreakdown | Also export service/case-mix rows |
maxItems | Maximum saved rows |
pageSize | CMS 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
- Open the actor on Apify.
- Select fiscal years, states, and summary categories.
- Keep
maxItemslow for a first test. - Enable service breakdown only when you need case-mix details.
- Start the run.
- 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
providerIdswhen monitoring known facilities. - Use
providerNamefor quick provider discovery. - Increase
pageSizefor faster large exports. - Lower
pageSizeif 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 ApifyClientclient = 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:
groupingCodegroupingDescriptioncaseMixavgChargePerStayavgPaymentPerStaycaseMixDayPct
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.
Related scrapers
Explore related automation-lab healthcare and data actors:
- https://apify.com/automation-lab/cms-hospital-compare-scraper
- https://apify.com/automation-lab/cms-nursing-home-compare-scraper
- https://apify.com/automation-lab/medicare-care-compare-scraper
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.