Open data

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.

287(g) agency agreements

Local police and sheriffs who have signed agreements to help ICE with immigration enforcement.

10 records · point · Public domain (US federal government work)

ALPR / Flock cameras

Automated licence plate readers mapped by volunteers — cameras that photograph and log passing vehicles.

1,426 records · point · ODbL 1.0

Redlining zones (HOLC)

1930s federal mortgage-risk grades that steered lending away from Black and immigrant neighbourhoods.

168 records · polygon · CC BY-NC-SA 4.0

ICE-contract detention facilities

Jails and facilities that hold people under contract with ICE.

5 records · point · Public domain (US federal government work)

Data centres

Large computing facilities, their operators and power sources — plus where communities are organising against them.

20 records · point · FracTracker Alliance terms — attribution required, non-commercial use

Reference geography

Minnesota county boundaries and interior points, plus the offline place index used by the location lookup. US Census Bureau, public domain.

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 one

Set 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.