Datos abiertos
Every layer is downloadable, documented, and reusable. No account, no rate limit, no API key. Each file carries its own provenance inside it, so a download stays attributable after it is detached from this site.
Zonas de redlining (HOLC)
Calificaciones federales de riesgo hipotecario de los años 30 que desviaron el crédito de barrios negros e inmigrantes.
168 records · polygon · CC BY-NC-SA 4.0
Licensing — read this before redistributing
The code in this project is MIT. Data we compile ourselves — the normalised schema, the geocoding, the cross-layer joins — is CC BY 4.0.
Upstream layers keep their own terms, and we cannot relax them. Repackaging this site's files does not relicense the underlying data:
- ALPR cameras — ODbL 1.0, from OpenStreetMap. Share-alike: derived databases must stay open under the same terms, and attribution to OpenStreetMap contributors is required.
- Redlining — CC BY-NC-SA 4.0, from Mapping Inequality. Non-commercial and share-alike. This one is not CC BY 4.0 and cannot be used commercially.
- Data centres — FracTracker Alliance terms; attribution required, non-commercial.
- 287(g), detention facilities, Census geography — US federal government works, public domain.
In short: the federal layers are free for any use, the camera layer is share-alike, and the redlining and data-centre layers are non-commercial. When combining them, the most restrictive term governs the combination.
Schema
Every layer file is a GeoJSON FeatureCollection with a non-standardmetadata object carrying provenance, and features whoseproperties follow one shared shape regardless of layer. Layer-specific fields live under attributes.
{
"type": "FeatureCollection",
"metadata": {
"layer": "agency_287g",
"featureCount": 10,
"source": "ICE — Participating agencies (287(g))",
"sourceUrl": "https://www.ice.gov/identify-and-arrest/287g",
"license": "Public domain (US federal government work)",
"attribution": "U.S. Immigration and Customs Enforcement",
"sourceDate": "2026-07-20",
"lastUpdated": "2026-07-30T00:00:00.000Z",
"refresh": "periodic",
"knownGaps": ["..."]
},
"features": [{
"type": "Feature",
"geometry": { "type": "Point", "coordinates": [lng, lat] },
"properties": {
"id": "stable slug, safe to join on",
"layer": "alpr | agency_287g | detention_facility | data_center | redlining",
"name": "institution, facility, or zone — never a person",
"county": "county name, or null",
"countyFips": "Census GEOID — join key across layers",
"state": "USPS code",
"confidence": "confirmed | reported | probabilistic",
"sourceDate": "ISO date the record is effective, or null",
"attributes": { "layer-specific fields" }
}
}]
}countyFips is the join key. It is a Census GEOID present on every record we could place, which is what makes it possible to ask a question across layers — for example, which counties have both a 287(g) agreement and an ICE-contracted jail.
confidence is not decoration. probabilistic on the camera layer means a record may be stale or wrong; treat it accordingly in any analysis.
Rebuild it yourself
Every dataset here is produced by a script that reads only public sources and requires no API key or credential. Clone the repository and run:
npm install
npm run data # rebuild every layer from upstream
npm run data:287g # or just oneSet SCOPE=national on the 287(g), detention, or data-centre scripts to ingest the whole country rather than Minnesota. You will need a national county reference first — seemethodology.