CoolFace
Datasetpublic

brickandmortar/twin-cities-public-records

Twin Cities public records, joined 25 datasets · 1,575,384 rows · free, CC BY 4.0 · mirrored from brickandmortar.dev A city emits records constantly — parcels, recorded sales, assessments, permits, licences, inspections, 911 calls, cleanup sites, flood zones, federal loans, wages, census measures — and almost nobody joins them. These are the joined slices, published as files rather than as an API you have to ask for a key to. The join is the work; the data is free. This is a… See the full description on the dataset page: https://huggingface.co/datasets/brickandmortar/twin-cities-public-records.

sourceHugging Facecc-by-4.0updated 22d agoView on Hugging Face
0likes143downloads
Dataset Card

Twin Cities public records, joined

25 datasets · 1,575,384 rows · free, CC BY 4.0 · mirrored from brickandmortar.dev

A city emits records constantly — parcels, recorded sales, assessments, permits, licences, inspections, 911 calls, cleanup sites, flood zones, federal loans, wages, census measures — and almost nobody joins them. These are the joined slices, published as files rather than as an API you have to ask for a key to. The join is the work; the data is free.

This is a mirror. The canonical home of every file here, with its other formats, its per-column blank rates and a preview, is https://brickandmortar.dev/. If a number here disagrees with the site, the site is right and this tree is stale — open an issue and it gets rebuilt.

Coverage is not uniform, and that is the first thing to know

There is no single sentence that describes the ground under all 25 of these files. They cover 1, 2, 4, 5 and 7 counties depending on which office publishes the record, and 2 of them name no counties at all — providers, parcel-coverage, whose registries record a city or a whole state and never a county. Every dataset's own card states the counties in that file, by name. Read it before you assume a metro-wide denominator; a count from a two-county file over a seven-county population is the single easiest wrong number to produce here.

Counties appearing across the collection: Anoka, Carver, Dakota, Hennepin, Ramsey, Scott, Washington.

What is in it

datasetrowscountieswhat a row is
`trades`318Anoka, Carver, Dakota, Hennepin, Ramsey, Scott, WashingtonBusiness counts by trade, five vintages
`building-stock`12Hennepin, RamseyBuilding stock by era
`county-profile`24Hennepin, RamseyWho lives here, and what they pay
`housing-affordability`70Anoka, Carver, Dakota, Hennepin, Ramsey, Scott, WashingtonWhat a home costs against what a household earns
`adjacency`115,652Anoka, Carver, Dakota, Hennepin, Ramsey, Scott, WashingtonWhat shares a lot line with a property
`corridors`44,151Anoka, Carver, Dakota, Hennepin, Ramsey, Scott, WashingtonWalk a corridor, address by address
`sales`34,302Anoka, Carver, Dakota, Hennepin, Ramsey, Scott, WashingtonWhat sold, and for how much per square foot
`cre-price-index`14Anoka, Carver, Dakota, Hennepin, Ramsey, Scott, WashingtonWhat a commercial foot has traded at, half-year by half-year
`owners`9,251Anoka, Dakota, Hennepin, Ramsey, WashingtonWho owns it, and what else do they hold
`licences`6,553Anoka, Dakota, Hennepin, RamseyWho holds a licence to trade here
`census-tracts`12,213Hennepin, RamseyHow a neighbourhood differs from the typical one
`emergency-calls`22,123HennepinWhat the 911 calls around here are about
`incidents`2,404HennepinWhat businesses around here report to the police
`vacancies`246Hennepin, RamseyWhich buildings on this run are on a vacancy register
`landlords`23,303HennepinWho the landlord is, on a licensed rental property
`contamination`7,149Hennepin, RamseyCleanup and storage-tank files, by address
`contractors`6,588Hennepin, RamseyWho does the work here, and how to write to them
`subsidised-housing`1,500Anoka, Carver, Dakota, Hennepin, Ramsey, Scott, WashingtonSubsidised homes, and when the subsidy runs out
`sba-loans`8,822Anoka, Carver, Dakota, Hennepin, Ramsey, Scott, WashingtonWhat a bank actually lent, loan by loan
`sba-cohorts`24Anoka, Carver, Dakota, Hennepin, Ramsey, Scott, WashingtonHow often the loan actually goes bad, by vintage
`businesses`88,433Anoka, Carver, Dakota, Hennepin, Ramsey, Scott, WashingtonWho is listed at every commercial address
`flood`28,354Anoka, Carver, Dakota, Hennepin, Ramsey, Scott, WashingtonWhich properties FEMA puts in the floodplain
`providers`32,257Minnesota — statewideHealthcare providers with a federal NPI, statewide
`parcel-coverage`87Minnesota — statewideWhat the statewide parcel layer can answer, county by county
`parcels`1,131,534Anoka, Carver, Dakota, Hennepin, Ramsey, Scott, WashingtonEvery parcel in the county, with value and age

Licence

CC BY 4.0 — Creative Commons Attribution 4.0 International. Free to use commercially. The one condition is attribution:

Brick & Mortar — https://brickandmortar.dev/

The licence is decided per slice, not sitewide, because it is a claim about someone else's records and the sources are not uniform. Each card carries its own basis — a work of the United States government, Minnesota government data public by statute, or a private publisher's own open licence — so you can check the reasoning rather than take a badge on faith. Where a source's own terms govern, they govern; two slices carry their upstream licence in their source line and it travels with the file.

What is deliberately NOT mirrored

This list is the point of the collection, not an appendix to it. Each of these was loaded, joined and in some cases published, and then withheld. Waiting does not clear a rights problem the way it clears a coverage one, so none of them is coming later.

  • —`occupants` — WITHHELD ON RIGHTS at the source, and a mirror cannot clear what the site could not. Ratings and review counts observed from Google Places. We cannot grant redistribution rights over Google's data. The licence registers answer the same question from each city's licensing office of record — see the licences slice, which resolves 10.85% of commercial sites against this layer's 0.79%.
  • —`search-visibility` — WITHHELD ON RIGHTS at the source, and a mirror cannot clear what the site could not. Result titles, domains and page-one positions from Google Search. Same reason: these are Google's results, and republishing them under a licence that permits commercial redistribution is not ours to do.
  • —Minnesota Secretary of State bulk business data — the entity master, filing history and officer names that bridge a shell LLC to a human. Obtained under the state's no-charge researcher route, whose certification reads "I agree that I will not sell or publish the entirety of, or any substantial portion of, the database." It is an intermediate join key here and never a published record: findings derived from it may travel, the rows may not. A commercial licence that permits publication exists and has not been bought.
  • —Two `parcels` formats — GeoJSON and JSON, withheld by the slice itself on size grounds. That reason does not bind on a host built for large files, and they are still not here: a mirror mirrors. The CSV carries lat and lon on every row, so a point file is one line of code.
  • —Anything derived from Google — ratings, review counts, opening hours, result titles, page-one positions. Publishing under a licence that grants commercial redistribution is not something we can do over another company's observations, so no layer carrying them can ever be a file here. This is a permanent class, and it is why businesses comes from Overture and licences comes from each city's own register instead.

Load it

python
from datasets import load_dataset

ds = load_dataset("brickandmortar/twin-cities-public-records", "trades")
print(ds["train"][0])

Or take a file straight off the hub — every config above is plain CSV with a header row, no comment block, UTF-8.

Provenance

Generated by scripts/build_mirror.py in the Brick & Mortar repo, from the same payloads that write the site's own dataset pages and its export endpoint. Nothing in this tree is hand-typed, which is the only way a mirror stays a mirror.