Chicago Ordinance Violations - Cases, Fines & Hearings
Pricing
from $0.03 / 1,000 chicago ordinance violation records
Chicago Ordinance Violations - Cases, Fines & Hearings
Chicago ordinance-violation citations from administrative hearings (824,745 rows): docket and notice numbers, address and ward, violation code and description, respondents, hearing date, disposition, imposed fine and costs, with a change stamp. Filter by address, ward, code or date.
Pricing
from $0.03 / 1,000 chicago ordinance violation records
Rating
0.0
(0)
Developer
Wenhao Yang
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
Chicago Ordinance Violations
Every ordinance-violation citation heard by Chicago's Department of Administrative Hearings - the docket, the cited address and ward, the violation code, the respondent, the hearing outcome, the fine imposed and the administrative costs.
Low cost
Ordinance-violation records: from $0.00005 per record, down to $0.00003 at Gold.
What you get
violationId,docketNumber,novNumber- the case and notice keysaddress,streetNumber,streetDirection,streetName,streetType,wardviolationCode,violationDescription- the violation code (mostly numeric, some with a suffix such as001000FR) and the ordinance textviolationDate,dateSuspect- the violation date and a flag when the city's date is not a real datehearingDate,caseDispositionimposedFine,adminCosts- dollarsrespondents- the cited party name(s), as publishedissuingDepartment- "Buildings" on every row in this extractlastModifiedDate- the city's real change stamp, usable for daily or weekly deltas viaupdatedSincelatitude,longitude
Examples
The 50 most recently modified citations:
{ "mode": "rows", "maxResults": 50 }
One ward:
{ "ward": 27, "maxResults": 100 }
One address:
{ "address": "543 N LAWNDALE", "maxResults": 50 }
One violation code:
{ "violationCode": "061014", "maxResults": 100 }
A code family (prefix match):
{ "violationCode": "0610", "maxResults": 200 }
Liable cases with a fine above $10,000:
{ "disposition": "Liable", "minFine": 10000, "maxResults": 100 }
Hearings scheduled in a window (future hearing dates are included):
{ "hearingFrom": "2026-11-01", "hearingTo": "2027-02-28", "maxResults": 200 }
Everything the city changed since a date - a delta pull:
{ "updatedSince": "2026-10-20", "maxResults": 500 }
Case-level view of one ward - one row per docket and hearing date, each fine counted once:
{ "mode": "cases", "ward": 27, "maxResults": 200 }
Respondent search:
{ "respondent": "HOMAN", "maxResults": 50 }
Citations by ward:
{ "mode": "aggregate", "groupBy": "ward" }
Citations by year:
{ "mode": "aggregate", "groupBy": "year" }
Coverage and honest limits
- 824,745 citations measured 2026-10-28 (city dataset last updated 2026-10-28; newest change stamp in the data is 2026-10-27).
- 🔴 This is not the Chicago building-violations dataset. The city runs two separate regimes: this corpus is
6br9-quuz(ordinance violations heard by the Department of Administrative Hearings). Building-code violations (22u3-xenr, 2.0M rows) are published separately and are a different corpus - see Related below. - One row is one citation. A single case can carry several citations (one per violation code); they share a
docketNumberbut have differentviolationIds. Counting rows is not counting cases. 119 citations carry no docket number (and no hearing date), so they appear in rows mode but in neithermode=casesnor the docket-level view. caseDispositionis blank on 18,377 rows - no hearing outcome recorded yet, not "not liable". Dispositions in the corpus (2026-10-28): Liable 291,307 / Non-Suit 255,245 / Default 116,599 / Not Liable 106,562 / Continuance 31,360 / Adjudication Performance / Other 4,238 / Dismissed Without Prejudice 664 / Judgment Vacated 393.- 🔴 Some
violationDatevalues are not dates. 94 rows sit after 2027 and a handful carry impossible years (4201, 5112, 6111); 89 rows have no violation date at all. Those rows are returned withdateSuspect=true, and theyearaggregate buckets every one of them assuspectso the totals still add up to the corpus. - 🔴
imposedFineandadminCostsare hearing-level values repeated on every citation row of that hearing. Docket12BT01656A, for example, has 130 citation rows and every one of them carriesimposed_fine = 5000. A docket heard more than once carries a different fine and disposition per hearing, so there is no dollar aggregate in this actor: summing the column multiplies each hearing's fine by its citation count.mode=casesreturns one row per docket and hearing date - that hearing's fine counted once, withcitationCountsaying how many citations it folds in. Within one hearing the city can still cite several properties and occasionally carry conflicting outcomes:address,ward,caseDispositionandimposedFineare then the maximum value in that hearing, andaddressCount,wardCount,dispositionVariantsandfineVariantssay how many distinct values were folded (for example docket09BS09261Aon 2015-12-04 carries 36 Continuance and 36 Default citations). Filters are applied to the individual citations before the fold, so a filteredmode=casescounts only the citations that matched. imposedFineis the fine the hearing imposed, not the amount collected. The source publishes no payment or collection column.violationCodehas 1,260 distinct values in the corpus;groupBy=violationCodereturns all of them (billed per aggregate row).groupBy=wardreturns 52 groups: wards 1-50, plus(blank)(2,919 rows) and0(71 rows) as the city publishes them.issuingDepartmentis "Buildings" on every row - it is kept for compatibility, not as a useful dimension.respondentsis the cited party as the city publishes it (public administrative record). It is not a person-level profile and must not be used for consumer screening.
Related
Also available in this account: Chicago Building Violations (22u3-xenr, 2.0M building-code violations), Chicago Building Permits and Chicago Business Licenses.