Start with the record type and its own identifier. A Chicago permit number follows the permit timeline. A violation ID and inspection number follow an enforcement timeline. Put their dates beside one another as two timelines rather than forcing a one-row match; neither is the complete property history.
Keep four record functions separate
The City's Building Permits metadata documents a permit tracking number, database ID, status, milestone and issue date. Status and milestone appear only for some permit types. For the search steps around a permit address, use the separate Chicago permit-search guide; the comparison below begins after you have a candidate permit row.
The City's Building Violations metadata describes a different row set. Use the record functions this way:
| Record function | Preserve this key and date | Read the result narrowly |
|---|---|---|
| Permit | Permit number, database ID, issue date, status and milestone | Shows the permit record's own progress; violation closure and inspection results are separate entries |
| Violation | Violation ID, code, citation date, status and status date | Shows the cited item and its recorded status; the permit timeline and today's condition are separate questions |
| Inspection | Inspection number, category, status and relevant comments | Connects the violation to its inspection context; multiple violation rows may belong to one inspection |
| Property match | Violation address components and Property Group | Reconciles point, range or building addresses among violation rows; APNs, title identifiers and permit keys are separate |
The violations metadata defines NO ENTRY as an inspector being unable to gain access. It is not a complied result. Keep the violation's citation date and later status date distinct from the inspection status.
Reconcile one fictional record chain
Consider a wholly fictional file with permit P-100, violations V-1 and V-2, and inspection I-9. The permit uses a point address; one violation uses a range address and the other a different frontage. Both violation rows carry the same inspection number and Property Group, but the permit metadata has no Property Group field or shared violation ID.
First, log the permit issue date and latest available milestone. Next, log each violation's citation date and status date. Then place inspection I-9 on its own line and record its status. The shared inspection number explains why two violation rows can belong to one inspection record, while Property Group helps reconcile the two violation addresses. Compare the permit manually by address, date and work scope; the match is your judgment, and the records stay unlinked.
If V-2 is marked NO ENTRY, leave that result as written. If V-1 has a later status date, keep that date and status with V-1 only. The inspection-status guide explains why a visit, field result and final approval remain separate records.
Treat 2006 as the Chicago dataset’s stated start
The permit and violation metadata each describe records from 2006 onward. Earlier records, later events missing online or a separate older file may still exist. Record the dataset name and the date you checked it alongside each result.
The permit metadata's description and status summary disagree: its description says permits later voided or revoked are excluded, while cached status values include REVOKED. Preserve the displayed status and flag the discrepancy rather than turning either statement into a universal rule.
To see how often a Chicago no-permit violation was followed by a permit or a hearing, read our analysis of 1,446 Chicago building violations from 2024.
Build a packet for a missing inspection or violation
The Department of Buildings' Building Records application says it provides public access to permit and inspection records, while its agreement warns that the material may be incomplete, out of sequence, untimely or inaccurate.
For a missing named record, prepare a narrow packet with:
- the record type and exact missing object;
- permit number, violation ID and inspection number, when known;
- the permit address components and the violation row's Property Group as separate matching clues;
- citation and status dates, any dated inspection evidence, and the permit issue date and milestone copied separately; and
- the mismatch observed, such as a range address, absent inspection row or unavailable comments.
Ask the Department of Buildings which City-held record and request route apply to that named object. Treat a portal result as one source, and ask the Department of Buildings about older copies. A missing online match does not prove that no violation or inspection existed, that a cited item was complied, or that a permit received final or occupancy approval.
For how many 2024 Chicago building violations are still open and how long the complied ones took, compared with New York City, Austin and Seattle, see our code violation lookup by address.
Chicago City documentation checked October 8, 2026.