Download the data
Everything the pages on this site show comes from two files. Both are here whole, with what each column holds. They are built from the monthly editions the Centers for Medicare & Medicaid Services publishes and then archives; CMS's current file keeps about three years, and these keep every edition back to January 2019.
Every penalty in CMS's archive
One row for each penalty CMS has published against a nursing home, with the first and last edition that listed it and whether CMS still does.
penalties_history.csv.gz · 83,712 rows · 13,976 homes · 1.7 MB, gzip-compressed CSV, UTF-8
Penalties dated 2016-01-04 to 2026-08-17, through CMS's file of 2026-10-08. 74,199 are fines and 9,513 are payment denials. 68,293 of the 83,712 are no longer in CMS's current file.
| Column | What it holds |
|---|---|
ccn | CMS Certification Number of the home, six characters, zero-padded. |
name | The home's name as CMS last published it with this penalty. |
address | Street address, as CMS published it. |
city | City. |
state | Two-letter state or territory code. |
zip | ZIP code. |
date | The penalty's date in CMS's file (YYYY-MM-DD). |
kind | Fine (a civil money penalty) or Payment Denial (a denial of payment for new admissions). The two are never summed. |
fine_id | CMS's identifier for a fine, in editions that carry one; blank before CMS published it and for payment denials. |
amount | A fine's amount in dollars, as last published. Blank for a payment denial. |
denial_start | The date a payment denial began. Blank for a fine. |
denial_days | The length of a payment denial in days, as last published. Blank for a fine. |
first_amount | The amount as FIRST published, when CMS later revised it; blank when it never changed. |
first_denial_days | The denial's length as first published, when CMS later revised it. |
revisions | How many times CMS changed the amount or length while it listed the penalty. |
first_seen | The date of the first archived monthly edition that lists the penalty. |
last_seen | The date of the last archived edition, or weekly capture, that lists it. |
appearances | How many editions list it. |
gaps | How many times it left CMS's file and came back. |
in_latest | yes if CMS's latest file still lists it; no if CMS has stopped publishing it. |
Star ratings, edition by edition
One row for each stretch of editions in which a home's four ratings did not change.
ratings_history.csv.gz · 327,232 rows · 16,069 homes · 1.8 MB, gzip-compressed CSV, UTF-8
Editions 2019-01-17 to 2026-10-08.
| Column | What it holds |
|---|---|
ccn | CMS Certification Number of the home. |
from_edition | The first archived monthly edition in this run of unchanged ratings. |
to_edition | The last edition in the run. |
editions | How many editions the run covers. |
overall | Overall star rating, 1 to 5; blank where CMS published none. |
inspection | Health inspection rating. |
quality | Quality measures rating. |
staffing | Staffing rating. |
in_latest | yes if the run reaches CMS's latest archived edition. |
How to cite it
Nursing Home Penalty Ledger, penalty history through CMS's file of 2026-10-08, https://penalty-ledger.pages.dev/data. Built from the Centers for Medicare & Medicaid Services' Provider Data Catalog and its archive of monthly editions (data.cms.gov).
Give the date: the files grow each month, and a count quoted without one cannot be checked. For a single home, cite its page, which links each penalty to the CMS edition that carried it.
What it is, and what it is not
- The facts are CMS's public record. This site arranges them and adds nothing: every row can be found in the CMS edition named by its
first_seendate. - A penalty CMS no longer publishes was not withdrawn or overturned by that. CMS's file is a rolling window, and a row leaves it by age.
- An amount can change while CMS lists it.
amountis the last one published andfirst_amountthe first; a source quoting either may be right. - Fines and payment denials are different penalties and are never added together here.
- A star rating moves when a home changes and also when CMS changes its method. The file cannot tell the two apart.
- In CMS's edition of 2019-10-09, 101 home numbers were stored as numbers (
14E169as1.40E+170). Each is restored here where exactly one home it could be is known from the editions on either side.