Brick & Mortar · datasets

Every housing, fire and nuisance inspection

The file

353,954 inspections on Minneapolis violation cases, completed 2016 to 2026, on 353,523 rows the city tied to a parcel — the case, the kind of inspection and its result. One file per year; newest row 2026-09-23.

353,954 rows

Counties in this file: Hennepin · 15 columns available · free, no account, no rate limit.

Joins to an address on lat, lon, so it can be pointed at one property rather than read whole.

What the rows look like

10 real rows from this file, spread evenly across it rather than taken off the top — every file here is written in some order, so its first rows are never a fair sample of it. These are the default columns, which is what the download button hands over.

completedaddresscase type (city's code)inspectionresult (city's code)case number
2016-01-04628 FRANKLIN AVE EVBRKIVA InspectionConductCE1108673
2018-01-162321 QUEEN AVE NHISReinspectionVSCE1146526
2018-10-301701 36TH AVE NEHISReinspectionCancelCE1174791
2019-09-162222 PENN AVE NNuisanceReinspectionAuthCE1219613
2020-12-285032 LYNDALE AVE SHISReinspectionAdminExtCE1255533
2022-06-223132 CEDAR AVE SHISReinspectionFinalCE1290610
2023-09-253324 22ND AVE SHISReinspectionConductCitCE1323418
2024-11-072919 KNOX AVE NNuisanceReinspectionAuthCE1352788
2025-12-08701 15TH AVE SEFISReinspectionAdminWarnCE1379049
—4809 BLOOMINGTON AVEHISCompliance Tier 3 Inspection—CE1392269

An em dash means the record is blank, and that is the source's gap rather than ours. Across the whole file: completed is blank on 1.8% of rows, result (city's code) is blank on 1.8% of rows.

The cuts of this file

Every cut is the same columns, filtered. Pick one and the row count changes; the file does not.

12 scopes
CutRowsFile
2016 3,772 CSV
2017 34,613 CSV
2018 46,288 CSV
2019 46,076 CSV
2020 26,824 CSV
2021 26,470 CSV
2022 30,389 CSV
2023 28,766 CSV
2024 35,907 CSV
2025 37,179 CSV
2026 31,222 CSV
not completed, or no usable date 6,448 CSV

Every column in this file

Columns marked default come down unless you pick your own with &columns=.

15 columns
ColumnWhat it isIn the default file
completed completed default
address address default
case_type case type (city's code) default
case_group case group (city's code) optional
inspection inspection default
result result (city's code) default
case_number case number default
scheduled scheduled optional
parcel_id parcel id optional
inspection_id inspection id optional
year year optional
city city optional
county county optional
lat latitude optional
lon longitude optional

Where it comes from

City of Minneapolis open data — CaseInspections (Regulatory Services)

This source does not stamp the day it was published, so we cannot honestly date our copy of it and will not guess. The period the records themselves cover is on the system card.

What this layer cannot answer is stated in full on the system card — read it before quoting a figure.

What you may do with it

Creative Commons Attribution 4.0 International (CC BY 4.0). Share it, change it, build a product on it, sell that product — all fine. The one condition is credit: say it came from Brick & Mortar and link back.

Records published by City of Minneapolis. Government data held by a Minnesota state agency or political subdivision, presumed public under the Minnesota Government Data Practices Act (Minn. Stat. ch. 13) and published by the agency itself.

Read the full licence · how we license every dataset, and the two we do not

Without the page

/api/export?dataset=code-inspections&format=csv returns the same file. Call /api/export with no arguments for the whole catalogue.

Point an AI at it

Every file carries its own source, its capture date and the layer's own warnings in the header, so a model reading one gets the caveats with the numbers rather than the numbers alone. Paste this at an assistant that can fetch a URL:

Read https://brickandmortar.dev/api/export?dataset=code-inspections&format=csv
Everything above the header row is provenance and limits. Read it first,
then answer using only what the rows support.

llms.txt describes the whole warehouse the same way — what each dataset holds, which counties it really covers, and what it cannot answer.