Civilian Complaint Review Board: Penalties
A table listing recommended and final penalties for each officer with a substantiated complaint of misconduct since the year 2000. Non-charges cases go through the Department Advocate's Office (DAO) and are recorded as non-APU where relevant in the table, while charges cases are prosecuted by the Administrative Prosecution Unit (APU) and are marked as APU penalties and recommendations. In all cases the NYPD Commissioner will issue a final penalty, labeled as "NYPD Officer Penalty" in the dataset. The dataset is part of a database of all public police misconduct records the Civilian Complaint Review Board (CCRB) maintains on complaints against New York Police Department uniformed members of service received in CCRB's jurisdiction since the year 2000, when CCRB's database was first built. This data is published as four tables: Civilian Complaint Review Board: Police Officers Civilian Complaint Review Board: Complaints Against Police Officers Civilian Complaint Review Board: Allegations Against Police Officers Civilian Complaint Review Board: Penalties A single complaint can include multiple allegations, and those allegations may include multiple subject officers and multiple complainants. Public records exclude complaints and allegations that were closed as Mediated, Mediation Attempted, Administrative Closure, Conciliated (for some complaints prior to the year 2000), or closed as Other Possible Misconduct Noted. This database is inclusive of prior datasets held on Open Data (previously maintained as "Civilian Complaint Review Board (CCRB) - Complaints Received," "Civilian Complaint Review Board (CCRB) - Complaints Closed," and "Civilian Complaint Review Board (CCRB) - Allegations Closed") but includes information and records made public by the June 2020 repeal of New York Civil Rights law 50-a, which precipitated a full revision of what CCRB data could be considered public.
Open in the graph · Relate this dataset · What these columns mean
Freshness
The publisher's promise
How the agency that publishes this data says it keeps the data current.
Due
- Says it updates
- Daily
- Actually updates about every
- 1 days
- Publisher last updated the data
- Oct 3, 2026
Our mirror
Whether our copy of this data is current with the source.
Sync error
- We last synced
- Oct 1, 2026, 10:03 AM
- Rows in our copy
- 15,282
- Rows at the source
- 15,315
- Our copy trails the source by
- 2 days
Columns
Each source column, with the name and type we use to store it.
0 of 13 columns carry a concept; 13 carry a description from the publisher. Read the concept column before you join. A column with no concept carries no claim from us, and a name that looks like a key is not one.
| Source field | Display name | What the publisher says it is | Concept | Source type | Stored as | Stored type | Row identifier | Unit |
|---|---|---|---|---|---|---|---|---|
as_of_date | As Of Date | The date this data was generated. | Not bound | Calendar date | as_of_date | timestamp | — | |
complaint_id | Complaint Id | CCRB's complaint ID. | Not bound | Number | complaint_id | numeric | — | |
tax_id | Tax ID | This is a unique identifier that differentiates members of service. NYPD Tax IDs are nine digit numbers unique to each officer. While some officers while change shield numbers over the course of their time in the NYPD, Tax IDs are meant to be unique identifiers for each NYPD officer. | Not bound | Number | tax_id | numeric | — | |
ccrb_substantiated_officer_disposition | CCRB Substantiated Officer Disposition | CCRB's board disposition for the allegation. | Not bound | Text | ccrb_substantiated_officer_disposition | text | — | |
board_discipline_recommendation | Board Discipline Recommendation | CCRB's Board Discipline Recommendation. |
Download
This file was produced on Oct 1, 2026, 10:17 PM.
Refresh this dataset
Source and attribution
Where this data comes from, which version we hold, and what we changed.
- Source
- https://data.cityofnewyork.us/d/keep-pkmh
- Version
- Content hash:
6261ab7510023cfc6ca7ba228646374ccae2f8aeefd4b6e5a62535f4b5009c1c - What we changed
- We did not change the data. We stored it as published.
- Publisher
- codenownyc
- We retrieved it
- Oct 1, 2026, 10:03 AM
Update history
| Started | Kind | Result | Rows written | Produced by |
|---|---|---|---|---|
| Oct 3, 2026, 11:15 PM | full_replace | failed | — | codenow-nycmesh-container-oci.jfrog.io/codenow/citytap-pull:0.1.84 |
| Oct 3, 2026, 7:00 AM | full_replace | failed | — | codenow-nycmesh-container-oci.jfrog.io/codenow/citytap-pull:0.1.84 |
| Oct 2, 2026, 10:45 PM | full_replace | failed | — | codenow-nycmesh-container-oci.jfrog.io/codenow/citytap-pull:0.1.84 |
| Oct 2, 2026, 6:45 PM | full_replace | failed | — | codenow-nycmesh-container-oci.jfrog.io/codenow/citytap-pull:0.1.84 |
| Oct 2, 2026, 4:17 PM | full_replace | failed | — | codenow-nycmesh-container-oci.jfrog.io/codenow/citytap-pull:0.1.84 |
| Oct 2, 2026, 3:15 PM | full_replace | failed | — | codenow-nycmesh-container-oci.jfrog.io/codenow/citytap-pull:0.1.84 |
| Oct 1, 2026, 3:05 PM | full_replace | success | 15,282 | codenow-nycmesh-container-oci.jfrog.io/codenow/citytap-pull:0.1.84 |
| Sep 30, 2026, 3:05 PM | full_replace | success | 15,282 | codenow-nycmesh-container-oci.jfrog.io/codenow/citytap-pull:0.1.84 |
| Sep 29, 2026, 3:21 PM | full_replace | success | 15,266 | codenow-nycmesh-container-oci.jfrog.io/codenow/citytap-pull:0.1.84 |
| Sep 28, 2026, 3:18 PM | full_replace | success | 15,266 | codenow-nycmesh-container-oci.jfrog.io/codenow/citytap-pull:0.1.84 |