← Back to home
Obtained via FOIA from the City of Chicago

Check our numbers yourself.

Every stat we publish comes from public records we requested from the City. Below are the two datasets that back them — the raw files plus the City's own response letters — so you can reproduce the numbers from scratch.

35,734,751ticket recordsissued January 2018 through December 2025
3,066,667contest-hearing recordsfrom two requests covering 2012–2025
2,997,347rulings with the reason recordedof 2,997,348 decided Liable or Not Liable
FOIA #F118906-110325 · Dept. of Finance

Every Chicago ticket, 2019–2024

Ticket-level records for six years — 26,823,488 tickets. Each row carries the City's own money columns — what was paid and what's still owed — so you can reproduce the billed figure straight from it. Files are $-delimited text inside a zip, one per year.

What this proves

the $429M billed citywide figure. Add up two columns — Total Payments (what drivers paid) plus Current Amount Due (what they still owe) — across every ticket. (The win rate comes from a different file — the hearings data below.)

City response letter
Columns
Ticket Number · Issue Date/Time · Street Num/Dir/Name · Plate State · Plate Type · Zipcode · Violation Code · Violation Desc · Unit · Unit Description · Vehicle Make · Fine Level 1 · Fine Level 2 · Current Amount Due · Total Payments · Ticket Queue · Queue Date · Notice Level · Dispo · Notice · Officer

How to reproduce the billed figure: billed = Total Payments + Current Amount Due (what drivers actually paid plus what they still owe), averaged over the three matured years 2022–24 ≈ $429M/yr. Of that, ~$140M is late penalty (billed minus Fine Level 1). We do not sum Fine Level 2 across all tickets — that would assume every ticket escalates to the late price and overstates the total by roughly a third. The exact formulas are on The Math and By The Numbers.

FOIA #H118909-110325 · Dept. of Administrative Hearings

Every contest outcome, 2019–2025

1,198,075 administrative-hearing records, 1,171,926 of them decided Not Liable or Liable. This is the cleanest source for the win rate broken out by how a ticket was contested — by mail, in person, or virtually. Delivered as a $-delimited text file (gzipped).

What this proves

the contest win rate — including our headline 59% mail-in number. Each row is one decision, and one column is the ruling: "Not Liable" means the driver won, "Liable" means they lost. This is the only file that reproduces the 59% — it's the share of mail contests decided in 2023–2025 that came back Not Liable (185,170 of 316,144).

City response (GovQA)

The request & response: the City's Department of Administrative Hearings replied through GovQA (its FOIA portal) on Nov 10, 2025 — restating the full request (“all hearing outcome records for parking, traffic, and camera enforcement, 2019–present”) and producing the data file A52156_20251106. The PDF above is that City response, sent from chicagoil@govqa.us under request #H118909-110325.

Columns
TCKT_NUM · ISS_DT_TIME · ST_NUM · ST_DIR · ST_NM · WARD · VIOL_CD · VIOL_DESC · DISPO_DT · CRT_CNTST_QUE_NM (contest method) · HEAR_OFFICE · HEAR_LOC · DISPO (the ruling — “Not Liable” = won) · RSN (why) · NOTE

How to check the 59% yourself: open the file and keep only the rows where the contest-method column says Mail and the decision lands in 2023–2025. Count the rulings: 185,170 came back "Not Liable" (won) out of 316,144 decided = 59%. Want the in-person or virtual numbers? Same steps, just pick that method instead. The live data page does it all for you.

Later requests · not posted for download yet

Also in our database

Two later requests extended both datasets. They aren't posted on this page yet — email the address below if you need a copy.

FOIA #F129773-022626 · Dept. of FinanceTickets issued in 2018 and 20258,909,120 tickets, same columns as the files above
FOIA #F145741-071626 · Dept. of FinanceTickets issued 2019 through August 202634,478,509 tickets, same columns again. This export refreshes the 2019–2025 rows and adds a part-year 2026 (2,406,637 tickets), which the counts above deliberately exclude so “through December 2025” stays true. Note the City freezes payment history for older issue years: in this export, tickets issued 2019–2023 carry payments only through November 4, 2025.
FOIA #H150277-083126 · Dept. of Administrative HearingsContest outcomes for tickets issued 2012–20181,902,885 records. Older export: a different column order, no decision-date column, and up to two extra lines of findings per case.

Cases in both hearing files: 34,424 rows in the 2019–2025 file are for tickets that also appear in the 2012–2018 file — tickets issued by 2018 but decided in 2019 or later. Our 3,066,667 total counts each of those cases once.

Why each case was decided: the RSN column holds one of 54 set reasons the hearing officer picks — for example “Signs were Missing or Obscured” or “Violation is Factually Inconsistent”. It is filled in on 2,997,347 of the 2,997,348 decided cases across both files, and 1,931,051 also carry the officer's written note.

See how we use it

Questions about the data or the requests? Email randyvollrath@gmail.com.