CMS Hospital Quality Data: Ratings and Measures | $1/1K avatar

CMS Hospital Quality Data: Ratings and Measures | $1/1K

Pricing

from $1.00 / 1,000 results

Go to Apify Store
CMS Hospital Quality Data: Ratings and Measures | $1/1K

CMS Hospital Quality Data: Ratings and Measures | $1/1K

$1 per 1,000 results, platform usage included. US hospital star ratings and quality measures from the official CMS Provider Data Catalog: hospital details, complications and deaths, infections, readmissions, patient survey, timely care. No key.

Pricing

from $1.00 / 1,000 results

Rating

0.0

(0)

Developer

One Dollar Store

One Dollar Store

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Categories

Share

CMS Hospital Quality: US hospital star ratings and quality measures

$1 per 1,000 rows. Platform usage included. No rental, no minimum.

The four most used CMS hospital quality actors on Apify Store charge $2.00 to $10.00 per 1,000 results (Store prices checked 20 October 2026). This actor returns the same official CMS data for $1.

Read US hospital data from the official CMS Provider Data Catalog: the hospital list with the overall star rating (1 to 5), and the five quality measure tables behind it: timely and effective care, complications and deaths, healthcare associated infections, unplanned hospital visits (readmissions) and the patient survey (HCAHPS). Filter by state, city, hospital name, CMS ID or measure. Each row names the table it came from. No API key and no account with CMS.

Open it in Apify Console

New to Apify? [Create a free account](https://www.apify.com?fpr=ymnoit) (referral link). Runs from a free plan account return the first 10 results; any paid plan returns everything you ask for, up to your limit.

What it costs

RowsThis actorMost used CMS hospital quality actors on the Store
1,000$1.00$2.00 to $10.00
10,000$10.00$20 to $100
100,000$100.00$200 to $1,000

Plus $0.001 per run. One row is one hospital in the hospital list, or one hospital and measure in a measure table. A run returns at most 10,000 rows. The full hospital list was 5,419 hospitals on 20 October 2026, about $5.42. All hospitals of one state with their star ratings is one row per hospital: California is 377 rows, about $0.38. All five measure tables for one hospital were 168 rows in our test, about $0.17.

Why people switch

  • One flat price. Compute is included, so the bill follows the number of rows and nothing else. A test run of 100 hospital rows measured about $0.007 of platform cost per 1,000 rows.
  • The whole catalog in one actor. The hospital list and five measure tables in one input. Choose one table or several, and each row says which table it came from.
  • Filters that save money. The measure tables hold tens of thousands of rows each. Narrow by state, city, name, CMS ID or measure code and pay only for the rows you need.
  • Numbers, not text. Scores, counts and percentages are numbers. Dates are ISO dates. When CMS shows "Not Available" where a number belongs, the field is left out instead of holding text.
  • Straight from CMS. It reads the Provider Data Catalog on data.cms.gov, with no key and no third party in between.

Quick start

  1. Open the actor, keep the example values, press Start.
  2. Or paste this input, which returns 100 California hospitals with their star rating:
{ "datasets": ["hospital-info"], "states": ["CA"], "maxItems": 100 }
  1. Download the results as JSON, CSV or Excel, or read them through the API.

For the hip and knee replacement complication rates of Boston hospitals, use { "datasets": ["complications-deaths"], "states": ["MA"], "city": "Boston", "measureIds": ["COMP_HIP_KNEE"] }.

Use it from code

curl -X POST "https://api.apify.com/v2/acts/one_dollar_store~cms-hospital-quality-data/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"datasets": ["hospital-info"], "states": ["CA"], "minOverallRating": 4, "maxItems": 100}'
from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("one_dollar_store/cms-hospital-quality-data").call(
run_input={"datasets": ["hospital-info"], "states": ["CA"], "minOverallRating": 4, "maxItems": 100}
)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["hospitalName"], item["city"], item["overallRating"])

Use it from an AI assistant

Claude, ChatGPT, Cursor and other assistants can call this actor through Apify's MCP server. Add it with this server address:

https://mcp.apify.com?tools=one_dollar_store/cms-hospital-quality-data

Then ask, for example: "List the hospitals in Minnesota with at least 4 stars and show their star ratings." or "Get the patient survey results for the hospital with CMS ID 050002."

Switching from another CMS hospital actor

The tables are chosen in datasets. Place filters are states (two letter codes), city and hospitalName. A single hospital is facilityIds (the six character CMS ID). Measures are measureIds. Star rating is minOverallRating. The core output fields are dataset, facilityId, hospitalName, city, state, measureId, measureName, score and overallRating. One row is one hospital in the hospital list, or one hospital and measure in a measure table.

Input

FieldTypeDefaultWhat it does
datasetslist of choiceshospital-infohospital-info (hospital list with the star rating), timely-effective-care, complications-deaths, healthcare-infections, unplanned-visits or patient-survey. Pick one or several.
stateslist of textallTwo letter state codes, for example CA or NY. Empty means all states and territories.
citytextnoneOnly hospitals in this city or town, for example Boston.
hospitalNametextnoneOnly hospitals whose name contains this text, without regard to case, for example Mayo.
facilityIdslist of textnoneSix character CMS Certification Numbers (CCN), for example 010001.
measureIdslist of textnoneOnly these measures, for example MORT_30_AMI or HAI_1_SIR. Applies to the measure tables, not to the hospital list.
minOverallRatingnumber0Only hospitals rated at least this many stars (1 to 5). Hospitals without a rating are left out. Applies to the hospital list only.
maxItemsnumber100Most rows in the run. Minimum 10, maximum 10,000.

Filters combine: a state plus a city plus a name narrows the list. Several states, CMS IDs or measures are read one combination at a time, up to 300 combinations per run.

Output fields

Every row has dataset, the hospital columns and scrapedAt. The other fields depend on the table. Fields CMS leaves empty are left out, and so is a "Not Available" in a number field. Text fields such as comparedToNational keep CMS's own words, including "Not Available".

FieldMeaning
datasetThe CMS table the row comes from, for example Hospital General Information or Complications and Deaths.
facilityIdSix character CMS Certification Number of the hospital.
hospitalName, address, city, state, zipCode, county, phoneWhere the hospital is and how to reach it, as CMS lists it.
hospitalType, ownershipHospital list only. For example Acute Care Hospitals, and Proprietary.
emergencyServicesHospital list only. True when the hospital provides emergency services.
birthingFriendlyHospital list only. True when CMS lists the hospital as meeting the Birthing-Friendly criteria.
overallRating, overallRatingNoteHospital list only. CMS overall star rating from 1 to 5, and the footnote code when it is missing.
ratingGroupsHospital list only. How many measures sit behind the rating, by group (mortality, safety, readmission, patientExperience, timelyEffectiveCare), with better, noDifferent and worse counts where CMS gives them.
measureId, measureNameMeasure tables. The CMS measure code and name, or the survey question for patient survey rows.
conditionTimely and effective care only. The condition group, for example Emergency Department.
score, scoreTextThe score as a number. When CMS gives a category instead (for example medium or very high) it is in scoreText.
comparedToNationalHow the hospital compares with the national rate, as CMS words it.
denominator, lowerEstimate, higherEstimateCases behind the score and the interval around it, when CMS gives them.
sample, patients, patientsReturnedSample size, and the patient counts of the unplanned visits table.
answer, answerPercent, starRating, linearMeanValuePatient survey only. The answer category, the share of patients who gave it, the survey star rating and the linear mean score.
completedSurveys, responseRatePercentPatient survey only. Number of completed surveys and the response rate.
startDate, endDateThe reporting period of the measure, as ISO dates.
footnoteCMS footnote code or text for the row.
scrapedAtWhen the actor read the data.

Sample results

Real rows from test runs on 20 October 2026: three California hospitals from the hospital list, then one row each from the timely and effective care table and the complications and deaths table.

[
{"dataset": "Hospital General Information", "facilityId": "050002", "hospitalName": "ST ROSE HOSPITAL", "address": "27200 CALAROGA AVE", "city": "HAYWARD", "state": "CA", "zipCode": "94545", "county": "ALAMEDA", "phone": "(510) 782-6200", "hospitalType": "Acute Care Hospitals", "ownership": "Voluntary non-profit - Church", "emergencyServices": false, "overallRating": 1, "ratingGroups": {"mortality": {"measuresReported": 6, "better": 0, "noDifferent": 6, "worse": 0}, "safety": {"measuresReported": 5, "better": 0, "noDifferent": 5, "worse": 0}, "readmission": {"measuresReported": 5, "better": 0, "noDifferent": 3, "worse": 2}, "patientExperience": {"measuresReported": 15}, "timelyEffectiveCare": {"measuresReported": 6}}, "scrapedAt": "2026-10-20T08:43:24.379Z"},
{"dataset": "Hospital General Information", "facilityId": "050006", "hospitalName": "PROVIDENCE ST JOSEPH HOSPITAL", "address": "2700 DOLBEER ST", "city": "EUREKA", "state": "CA", "zipCode": "95501", "county": "HUMBOLDT", "phone": "(707) 445-8121", "hospitalType": "Acute Care Hospitals", "ownership": "Voluntary non-profit - Private", "emergencyServices": true, "birthingFriendly": true, "overallRating": 4, "ratingGroups": {"mortality": {"measuresReported": 8, "better": 0, "noDifferent": 8, "worse": 0}, "safety": {"measuresReported": 7, "better": 1, "noDifferent": 6, "worse": 0}, "readmission": {"measuresReported": 11, "better": 3, "noDifferent": 8, "worse": 0}, "patientExperience": {"measuresReported": 15}, "timelyEffectiveCare": {"measuresReported": 10}}, "scrapedAt": "2026-10-20T08:43:24.379Z"},
{"dataset": "Hospital General Information", "facilityId": "050008", "hospitalName": "CALIFORNIA PACIFIC MEDICAL CTR-DAVIES CAMPUS HOSP", "address": "601 DUBOCE AVENUE", "city": "SAN FRANCISCO", "state": "CA", "zipCode": "94117", "county": "SAN FRANCISCO", "phone": "(415) 600-6000", "hospitalType": "Acute Care Hospitals", "ownership": "Voluntary non-profit - Other", "emergencyServices": false, "overallRating": 3, "ratingGroups": {"mortality": {"measuresReported": 4, "better": 0, "noDifferent": 4, "worse": 0}, "safety": {"measuresReported": 6, "better": 1, "noDifferent": 5, "worse": 0}, "readmission": {"measuresReported": 5, "better": 0, "noDifferent": 4, "worse": 1}, "patientExperience": {"measuresReported": 15}, "timelyEffectiveCare": {"measuresReported": 6}}, "scrapedAt": "2026-10-20T08:43:24.379Z"},
{"dataset": "Timely and Effective Care", "facilityId": "050002", "hospitalName": "ST ROSE HOSPITAL", "address": "27200 CALAROGA AVE", "city": "HAYWARD", "state": "CA", "zipCode": "94545", "county": "ALAMEDA", "phone": "(510) 782-6200", "measureId": "EDV", "measureName": "Emergency department volume", "condition": "Emergency Department", "startDate": "2024-01-01", "endDate": "2024-12-31", "scoreText": "medium", "scrapedAt": "2026-10-20T06:12:28.388Z"},
{"dataset": "Complications and Deaths", "facilityId": "050002", "hospitalName": "ST ROSE HOSPITAL", "address": "27200 CALAROGA AVE", "city": "HAYWARD", "state": "CA", "zipCode": "94545", "county": "ALAMEDA", "phone": "(510) 782-6200", "measureId": "COMP_HIP_KNEE", "measureName": "Rate of complications for hip/knee replacement patients", "startDate": "2023-04-01", "endDate": "2025-03-31", "comparedToNational": "Not Available", "score": 4.6, "denominator": 97, "scrapedAt": "2026-10-20T06:12:28.388Z"}
]

Limits

  • 10,000 rows per run. The measure tables are large (on 20 October 2026: timely and effective care 138,084 rows, complications and deaths 95,800, healthcare associated infections 172,440, unplanned hospital visits 67,060, patient survey 325,720). Filter by state, hospital ID or measure, or run once per state.
  • CMS can be slow. On the day we built this, the CMS service sometimes answered with a "Technical Difficulties" page or took 15 to 30 seconds for one request. The actor waits up to 40 seconds for each try and keeps trying one request for up to about 2.5 minutes (at most six tries, with growing pauses), so a run with many pages can take minutes on a bad day. If CMS does not answer at all, the run ends with an error that says so, and no rows are charged.
  • Rate limit. We found no published request limit for this service. The actor reads 500 rows per request, one request at a time, at most five per second, with a User-Agent that names the actor.
  • Reporting periods differ. Every measure has its own period. startDate and endDate give it. A hospital may be missing a measure because it had too few cases, and then CMS gives a footnote code instead of a score.
  • Star ratings are CMS's. Some hospitals have no overall rating. The rating is read as published and is not recalculated. ratingGroups shows the measure counts CMS publishes behind it.
  • Star rating filter. minOverallRating is applied after the hospitals are read, so the run reads every hospital that matches your other filters and then drops the lower rated ones. Hospitals without a rating are dropped when you set it.
  • Name search. hospitalName matches a piece of the name, without regard to case. Hospitals appear under the name CMS holds, which can be a legal or campus name.
  • Not medical or legal advice. The rows are CMS statistics. They describe groups of patients over a period and do not rate any single doctor or treatment.

FAQ

What is the cheapest CMS hospital quality scraper on Apify? This actor costs $1 per 1,000 rows with platform usage included. The four most used CMS hospital quality actors on the Store charged $2.00 to $10.00 per 1,000 when we checked on 20 October 2026.

How much does it cost to scrape 10,000 hospital quality rows? $10, plus $0.001 for each run.

Do I pay for compute or proxy on top? No. Platform usage is included in the $1 per 1,000 price. No proxy is used.

Do I need an API key or a CMS account? No. The actor reads the public CMS Provider Data Catalog.

How do I find a hospital's CMS ID? Run the hospital list with a state, city or name filter. Each row has facilityId, the six character CMS Certification Number. Use it in facilityIds to read that hospital in the measure tables.

How current is the data? The actor reads the CMS tables at the moment you run it. CMS refreshes each table on its own schedule, so the reporting period of a row (startDate and endDate) tells you how recent it is.

Is it legal? The actor reads data that CMS publishes openly on its open data websites for anyone to use. It does not log in to anything. How you use the data is up to you: follow CMS's terms and the law where you live.

Is this an official CMS product? No. It is an independent tool and is not affiliated with or endorsed by the Centers for Medicare and Medicaid Services.

Do I need an Apify account? Yes. Actors run from an Apify account, and a free account is enough to start: it includes $5 of platform usage every month. You can sign up here. This is a referral link and it costs you nothing.

Is there a limit on the free plan? Yes. A run started from a free plan account delivers the first 10 results, then ends with a message and a link to the plans. Any paid plan returns everything you ask for, up to your own limit. The price per result is the same on every plan.

More from The One Dollar Store

Every actor here costs $1 per 1,000 results, platform usage included. See the whole store: https://apify.com/one_dollar_store

Health and science

Changelog

  • October 2026: first release.