CMS Provider Data - hospitals, nursing homes, ratings (API) avatar

CMS Provider Data - hospitals, nursing homes, ratings (API)

Pricing

from $5.00 / 1,000 records

Go to Apify Store
CMS Provider Data - hospitals, nursing homes, ratings (API)

CMS Provider Data - hospitals, nursing homes, ratings (API)

Pull CMS Provider Data Catalog datasets - Hospital General Information, Nursing Home Provider Information, Home Health Care Agencies, Dialysis Facilities - filtered by state, city or name. One row per facility with the dataset's own columns (id, name, address, phone, type, ownership, star ratings).

Pricing

from $5.00 / 1,000 records

Rating

0.0

(0)

Developer

RetrainMap Team

RetrainMap Team

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Categories

Share

CMS Provider Data — hospitals, nursing homes, ratings (API)

One row per facility from the CMS Provider Data Catalog (https://data.cms.gov/provider-data) — the data behind Medicare Care Compare. Pick a dataset (Hospital General Information, Nursing Home Provider Information, Home Health Care Agencies, Dialysis Facility listing), filter by state, city or name, and get the dataset's own columns — facility id, name, address, city, state, zip, phone, type, ownership, star ratings and measure counts — one flat row per facility, ready for CSV or JSON.

The default input (Hospital General Information, state NC, 500 rows) succeeds within 5 minutes and returns rows (North Carolina has ~120 hospitals) — Apify auto-tests it daily.

Data source and status

PublisherCenters for Medicare & Medicaid Services (CMS) — Provider Data Catalog
APIhttps://data.cms.gov/provider-data/api/1/ — public, no key (documentation: https://data.cms.gov/provider-data/docs)
What this Actor readsThe catalog (metastore/schemas/dataset/items) once per run to resolve the dataset id by title, then the datastore query endpoint (datastore/query/{id}/0) with limit=500, offset, count=true and conditions[] for state (=), city and name (like, case-insensitive); at most two requests per second
Refresh cadenceCMS refreshes each dataset on its own schedule (hospital data roughly quarterly, nursing home data monthly, home health and dialysis data quarterly). The Actor reads live on every run; the catalog's modified date for the dataset is written to every row as _dataset_modified and _fetched_at is the fetch time
CopyrightWorks of the United States Government are not subject to copyright in the U.S. (17 U.S.C. §105). The data are public; please cite CMS as the source
Known caveatsDataset ids change when CMS re-publishes a dataset — the Actor resolves the id by exact title + theme on every run and fails with the candidate list if the title is not found; all values are strings exactly as the datastore returns them (ratings such as "4", footnote columns often empty); % and _ inside city / name filters are SQL LIKE wildcards

Honesty note: the rows are the dataset's own columns, nothing is inferred, joined or re-scored by this Actor; CMS ratings and measures are informational, not medical advice, and a run stops with an error rather than guess when the API's shape changes.

Identification: the requests carry a product-token User-Agent and the operator's contact address in the standard From: header (RFC 9110 §10.1.2).

Input

FieldTypeMeaning
datasetselecthospital_general_info (default), nursing_home_provider_info, home_health_agencies, dialysis_facilities
state2-letter codeOptional, exact match, e.g. NC (prefilled)
citystringOptional substring of the city column
name_containsstringOptional substring of the facility / provider name column
max_recordsintegerDefault 500, at most 20,000
request_interval_msintegerDefault 500 (floor 250)
contact_emailstringSent in the From: header

Example — nursing homes in Houston, Texas:

{ "dataset": "nursing_home_provider_info", "state": "TX", "city": "Houston", "max_records": 200 }

Output (dataset row)

Every column the dataset carries, unchanged, plus _dataset (the preset key), _dataset_id, _dataset_title, _dataset_modified, _source_url (the dataset's page on data.cms.gov) and _fetched_at. Common columns by dataset (measured 2026-09-04):

DatasetIdNameAddress / city / state / zipPhoneType / ownershipRatings
hospital_general_info (~5,400 rows)facility_idfacility_nameaddress, citytown, state, zip_code, countyparishtelephone_numberhospital_type, hospital_ownership, emergency_serviceshospital_overall_rating (1–5) plus mortality / safety / readmission / patient-experience / timeliness measure counts
nursing_home_provider_info (~14,700 rows)cms_certification_number_ccnprovider_name, legal_business_nameprovider_address, citytown, state, zip_code, countyparishtelephone_numberprovider_type, ownership_type, number_of_certified_beds, chain_nameoverall_rating, health_inspection_rating, qm_rating, staffing_rating, special_focus_status, abuse_icon
home_health_agencies (~11,000 rows)cms_certification_number_ccnprovider_nameaddress, citytown, state, zip_codetelephone_numbertype_of_ownership, services offered (offers_nursing_care_services …)quality_of_patient_care_star_rating plus outcome measures
dialysis_facilities (~7,700 rows)cms_certification_number_ccnfacility_nameaddress_line_1, citytown, state, zip_code, countyparishtelephone_numberprofit_or_nonprofit, chain_owned, chain_organization, of_dialysis_stationsfive_star, mortality / hospitalization / readmission categories

A run summary (dataset id and modified date, filters, the API's own match count, pages, requests, whether the pay-per-event budget stopped the run) is stored as RUN_SUMMARY in the run's key-value store.

Pricing (pay per event)

EventPrice
run-start — once per run$0.10
record — per row written$0.005

The default pull (NC hospitals, ~120 rows) costs about $0.70; 1,000 facilities cost $5.10. Rows stop when your run's maximum charge is reached; the run summary says so.

Operator

Steelyard Ventures LLC (RetrainMap) — info@steelyardclinical.com. Not affiliated with CMS. The Actor writes only to its own dataset and key-value store; it stores no credentials and sends nothing else.