PoliceCensus

Home / Sources

Source inventory

Method & sources explains what Police Census is and how it reads. This page is the machine-truth companion: a live row count and the latest load status for every one of the 11 datasets behind the site, read straight from the database at request time — it cannot say something the database does not currently hold.

DatasetWhat it isLive rowsSourceLast ingestGate
Agencies
agencies
The agency spine: identity, ORI, type, county, coordinates and NIBRS status for every law enforcement agency on the FBI’s register. A full refresh and upsert on every run. Puerto Rico, the two Virgin Islands district agencies (St. Thomas and St. Croix) and Guam were added 2026-08-30 — the register held them all along, this table simply had not asked for them yet.19,625FBI Crime Data Explorerok
2026-08-30 09:18
19,625 written
A guard rejects any state code returning zero agencies unless it is on an explicit expected-empty list, so a broken fetch cannot pass as "no agencies here".
Crime & clearances
agency_crime
Per-agency reported offence and clearance counts from CDE. Not yet loaded site-wide.2,274,444FBI Crime Data Explorerok
2026-08-25 16:26
2,274,444 written
scripts/test-guard.ts proves the ingest guard (agencySeries) rejects a state- or national-level series being written in as if it were a single agency’s — the exact mistake that would silently inflate one department’s numbers with its whole state’s.
Workforce
agency_employment
Officer and civilian headcount by year, and the population the agency itself reports for, 1960–2025.736,459FBI CDE, bulk employment fileok
2026-08-25 15:02
736,459 written
No dedicated verbatim gate. Values are the FBI’s own reported series, loaded by a full refresh; nothing here is estimated or interpolated.
Military surplus (1033 programme)
agency_equipment
Equipment transferred to police under the DoD 1033 programme. DLA does not publish an ORI for recipients, so records are matched to agencies by name — 88.9% matched. An unmatched record is left unattached rather than assigned to a guess.75,087DLA Law Enforcement Support Officeok
2026-08-25 16:03
75,087 written
match_method records how (or whether) each row was matched, so a bad matching rule can be found and undone later. See /equipment for the live match rate.
Deaths during encounters
deaths
Deaths recorded during police encounters, 2013 onward, used with permission. Police Census publishes counts only — the person’s name is never rendered.15,550Mapping Police Violenceok
2026-08-25 16:30
15,550 written
scripts/gate-no-name-leak.sh scans the actual served HTML of the agencies with the most deaths on record for a real victim name, and self-tests its own detector so a broken check cannot silently pass.
Federal funding
grants
COPS Hiring, Byrne JAG and DNA Backlog Reduction awards since October 2019, reported at state and programme level only. The recipient of a federal award is usually a city, not a police department — only 2.6% of awards name a law enforcement agency directly, so no page on this site attributes an award to a specific department.13,585USAspending.govok
2026-08-25 16:35
13,585 written
Structural, not a script: the query layer has no per-agency grants function, so a per-agency figure cannot be printed even by mistake.
Legal authorities
legal_authorities
US Code sections and CFR parts that give the legal basis for something on the site.47govinfo.gov (US Code), eCFR (CFR)ok
2026-08-25 20:34
32 written
scripts/gate-legal-verbatim.sh refetches every row from its live source and asserts a token unique to that section is still present, plus that the stored body hash still matches the stored text — catching upstream drift and DB-side drift separately.
Case law
legal_cases
Case-law citations tied to a specific context on the site, e.g. Graham v. Connor for use-of-force.31CourtListener, bulk citation indexfailed
2026-08-25 20:00
30 written
Every row requires human_verified before a query can return it. A citation such as 488 U.S. 1001 can resolve to more than a dozen different CourtListener clusters, so nothing reaches the site without a human confirming which cluster is the actual case.
Federal oversight
federal_oversight
DOJ Civil Rights Division pattern-or-practice matters (34 U.S.C. § 12601) against named agencies.28DOJ Special Litigation Sectionok
2026-08-26 14:27
28 written
scripts/gate-oversight-verbatim.sh refetches DOJ’s own case list and reports a LABEL CHANGE (e.g. Enforcement → Closed) distinctly from a row DOJ has removed entirely — the two look the same in a naive diff but mean very different things to print about a named department. Every row also requires human_verified, same rule as case law.
UCR/NIBRS participation
state_participation
Reporting participation to the FBI’s UCR/NIBRS programme, by state and year.3,659FBI CDE participation filefailed
2026-08-30 09:14
State-level only by construction: this table carries no ORI and no agency rows, so it structurally cannot be reported per-agency.
Officers assaulted
leoka_assault
Assaults on officers by year and weapon type, 1995–2025. The source file carries no ORI, so agencies are matched by state and name — 78.7% matched. The FBI’s own officers-killed columns are empty on every row of the file as pulled; this table reports assaults only, and no page on this site states an officers-killed figure.381,145FBI LEOKA bulk fileok
2026-08-30 10:25
0 written
match_method records how each row was matched, the same reversible pattern as the 1033 equipment table; an unmatched row is left ori = NULL rather than guessed.

Integrity rules, in brief

Every gate above runs against the live site or the live upstream source, not against a fixture that can go stale — several of them exist specifically because a source that returned a clean 200 turned out to be a soft-404, a paywall interstitial or a relabelled case. A build-time gate also refuses to ship any page carrying a degraded-read message baked into it, because the build container has no database connection at build time and would otherwise freeze that failure into the deployed image. Datasets marked human_verified above default to false: a row is invisible to every query until a person confirms it, not once an automated match merely looks plausible.

If a number on this page or elsewhere on the site looks wrong, see Corrections for how to report it and how every published fix is logged.