BYTETOOLS

CMS Provider Data Catalog API

Free CMS Provider Data Catalog API with no key: hospital, nursing home, hospice and dialysis quality ratings, measure scores and facility details for the United States.

No API key requiredHTTPSFree tier

Endpoint tested and returned HTTP 200 on 2026-08-21

What is the CMS Provider Data Catalog API?

The CMS Provider Data Catalog API is a free, key-free service publishing the datasets behind Medicare's Care Compare tools. It returns facility records for hospitals, nursing homes, hospices, home health agencies and dialysis centres, with quality star ratings and the measure counts behind them.

These are the datasets that power Medicare's public comparison tools, exposed through a DKAN-based datastore query API. A hospital record carries far more than an address: the example includes ownership type, whether emergency services are offered, a birthing-friendly designation, an overall star rating, and then counts of how many mortality, safety, readmission, patient-experience and timely-care measures the facility performed better, no differently, or worse than the national average.

That structure is the key to using the data honestly. The overall rating is a compressed summary of dozens of measures, and the group counts are what let you see whether a four-star hospital is uniformly good or strong on safety while weak on readmissions. Footnote fields sit alongside each group and carry the reason a value is missing — too few cases, data not submitted — which is why blank means "not reported" rather than "zero". Small facilities frequently have too few cases to be rated at all. Values arrive as strings, including the ratings, and the `facility_id` is the CMS Certification Number that joins these datasets to each other.

Quick facts

Base URL
https://data.cms.gov/provider-data/api/1
Authentication
No API key or account. CMS provider data is US government work in the public domain, published for public comparison of care providers.
Rate limit
No published limit. Full dataset downloads are available and are the better route for whole-country analysis.
Pricing
Free, public domain.
CORS
Not enabled — call it from your server
Official docs
Read the docs

How to use the CMS Provider Data Catalog API

Every request below was executed against the live API on 2026-08-21, and the response shown is the real body it returned — not an illustration.

1. Query the hospital general information dataset

GET https://data.cms.gov/provider-data/api/1/datastore/query/xubh-q36u/0?limit=2

curl
curl 'https://data.cms.gov/provider-data/api/1/datastore/query/xubh-q36u/0?limit=2' \
  -H 'Accept: application/json'
JavaScript (fetch)
const res = await fetch("https://data.cms.gov/provider-data/api/1/datastore/query/xubh-q36u/0?limit=2", {
  headers: {
    "Accept": "application/json",
  },
});
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);
Python (requests)
import requests

headers = {
    "Accept": "application/json",
}

res = requests.get("https://data.cms.gov/provider-data/api/1/datastore/query/xubh-q36u/0?limit=2", headers=headers, timeout=20)
res.raise_for_status()
print(res.json())
Response — HTTP 200 (truncated)
{
  "results": [
    {
      "facility_id": "010001",
      "facility_name": "SOUTHEAST HEALTH MEDICAL CENTER",
      "address": "1108 ROSS CLARK CIRCLE",
      "citytown": "DOTHAN",
      "state": "AL",
      "zip_code": "36301",
      "countyparish": "HOUSTON",
      "telephone_number": "(334) 793-8701",
      "hospital_type": "Acute Care Hospitals",
      "hospital_ownership": "Government - Hospital District or Authority",
      "emergency_services": "Yes",
      "meets_criteria_for_birthing_friendly_designation": "Y",
      "hospital_overall_rating": "4",
      "hospital_overall_rating_footnote": "",
      "mort_group_measure_count": "8",
      "count_of_facility_mort_measures": "8",
      "count_of_mort_measures_better": "0",
      "count_of_mort_measures_no_different": "8",
      "count_of_mort_measures_worse": "0",
      "mort_group_footnote": "",
      "safety_group_measure_count": "8",
      "count_of_facility_safety_measures": "7",
      "count_of_safety_measures_better": "3",
      "count_of_safety_measures_no_different": "4",
      "count_of_safety_measures_worse": "0",
      "safety_group_footnote": "",
      "readm_group_measure_count": "11",
      "count_of_facility_readm_measures": "11",
      "count_of_readm_measures_better": "1",
      "count_of_readm_measures_no_different": "9",
      "count_of_readm_measures_worse": "1",
      "readm_group_footnote": "",
      "pt_exp_group_measure_count": "15",
      "count_of_facility_pt_exp_measures": "15",
      "pt_exp_group_footnote": "",
      "te_group_measure_count": "10",
      "count_of_facility_te_measures":

Parameters

ParameterTypeRequiredDescription
(dataset id)path segmentRequiredDataset identifier in the datastore query path. `xubh-q36u` is hospital general information. xubh-q36u
(index)path segmentRequiredDistribution index within the dataset, almost always `0`. 0
limitqueryOptionalRows per page. Defaults are small, so set it explicitly. 2
offsetqueryOptionalZero-based offset for paging. 0
conditionsqueryOptionalFilter conditions as indexed parameters over a property, operator and value. conditions[0][property]=state
(endpoint) /metastore/schemas/dataset/itemspathOptionalList every dataset in the catalogue with its identifier and description. /metastore/schemas/dataset/items

Response fields

results[]array
The matched rows. All values are strings, including ratings and counts.
results[].facility_idstring
CMS Certification Number. The join key across every CMS provider dataset, with leading zeros that must be preserved.
results[].facility_name / address / citytown / state / zip_codestring
Facility identity and location fields.
results[].hospital_typestring
Such as `Acute Care Hospitals` or `Critical Access Hospitals`. Ratings are not comparable across types.
results[].hospital_ownershipstring
Ownership category — government, proprietary, voluntary non-profit and so on.
results[].hospital_overall_ratingstring
One to five stars as a string, or blank when the facility has too few cases to rate.
results[].count_of_*_measures_better / no_different / worsestring
How many measures in each group beat, matched or trailed the national average. The detail behind the star rating.
results[].*_group_footnotestring
Why a group is missing or suppressed. Blank values are frequently explained here.

What you can build with the CMS Provider Data Catalog API

  • Compare hospital quality ratings within a state or region
  • Build a provider lookup with quality context
  • Analyse the relationship between ownership type and outcomes
  • Identify facilities with unreported or suppressed measures
  • Join provider quality data to other CMS datasets by certification number

Common errors and how to fix them

Leading zeros lost from facility_id

Certification numbers were cast to integers.

Fix: `010001` is a fixed-width string. Casting it to a number breaks every join across CMS datasets.

Blank rating treated as zero

Blank means not rated, not bad.

Fix: Read the corresponding footnote field. Small facilities routinely have too few cases for a rating to be calculated.

Ratings compared across facility types

Different measure sets apply.

Fix: Critical access hospitals and acute care hospitals are assessed differently. Filter on `hospital_type` before comparing.

Only a few rows returned

Default paging is small.

Fix: Set `limit` and page with `offset`, or download the full dataset distribution for national analysis.

CMS Provider Data Catalog API — frequently asked questions

Is the CMS Provider Data API free?

Yes, free with no key or registration. It is US government work in the public domain, published specifically so that the public can compare care providers.

What is the facility_id?

The CMS Certification Number, a fixed-width identifier assigned to Medicare-certified facilities. It joins the provider datasets to one another, and its leading zeros are significant — treat it as a string throughout.

Does a five-star rating mean a hospital is better?

It means the facility scored well on the specific measures CMS aggregates, which cover mortality, safety, readmission, patient experience and timeliness. It does not account for case mix beyond CMS's own adjustments, does not cover every service a hospital provides, and is not comparable across facility types. The per-group measure counts give a far more informative picture than the star alone.

Why do some hospitals have no rating at all?

Usually because they had too few cases for the measures to be statistically reliable, or did not submit the required data. The footnote fields alongside each measure group state the reason, which is why blank must not be read as a poor score.

Tools that pair with this API

CMS Provider Data Catalog is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-21; always check the official documentation before relying on this API in production, as terms and limits can change.