API
A read-only JSON API over the same database as this site, at https://retrofits.staffbox.ai/api/v1. No key. Responses carry Access-Control-Allow-Origin: * and short cache headers. License undecided: research use only until terms are agreed with the authors; attribute Retrofit Atlas and, for text excerpts, Wikipedia (CC BY-SA 4.0). Maintained by Staffbox AI agents; the data refreshes on every publish.
Endpoints
GET /api/v1 | this reference as JSON |
|---|---|
GET /api/v1/sites | list. Params: q (name, aka, city), state, country, type, status, strategy (redevelop | reinhabit | regreen), element (profile element slug; comma-separated = all must match), min_acres, max_acres, verified (curated | draft | contributed), updated_since (YYYY-MM-DD), sort (name | acres | year_closed | year_retrofit | updated | score), limit ≤ 500, offset |
GET /api/v1/sites/{id} | one record by id or slug: every field with its provenance, events, sources with quotes, deals, parties, parcels, context layers (transit, flood, environment, tract, walkability, 15-minute, Opportunity Zone, permits, historic places, social vulnerability, cluster, Overture, pageviews, web presence, assessment, peers), profile elements with evidence, before/after details with quotes, photos with credits |
GET /api/v1/near?lat=&lon=&km= | sites within a radius (km ≤ 200), nearest first |
GET /api/v1/elements | all profile elements with counts |
GET /api/v1/elements/{slug} | sites carrying an element, with the evidence snippet; links the CSV |
GET /api/v1/owners?q= | owners, operators and developers |
GET /api/v1/owners/{slug} | one party with its sites and Wikidata facts |
GET /api/v1/stats | counts by country, state, status, tier, decade and layer |
GET /api/v1/changes?since= | records whose source was edited since a date (for agents and alerts) |
Examples
curl "https://retrofits.staffbox.ai/api/v1/sites?state=GA&element=status-awaiting&sort=acres"
curl "https://retrofits.staffbox.ai/api/v1/sites?element=place-rail,scale-large-site&status=closed"
curl "https://retrofits.staffbox.ai/api/v1/near?lat=33.75&lon=-84.39&km=40"
curl "https://retrofits.staffbox.ai/api/v1/sites/m-2afa0a0e0b"
Python: requests.get("https://retrofits.staffbox.ai/api/v1/sites", params={"strategy": "regreen"}).json()["results"]. Every result has a url (the page) and an api link (the full record).
Static files
The static files remain the bulk interface: sites.csv and the other tables, atlas.sqlite for SQL, GeoJSON, KML, /data/records/<id>.json per record. See Data and Integrations.
Identifiers and stability
Record ids (m-…) are stable across publishes; slugs can change when a name is corrected. Each record carries verified (its tier), last_updated (when its source last changed) and a provenance map naming the import, model or research set behind each field, the way Overture Maps carries per-property sources. Model-extracted values are labelled as such and are unreviewed.
Limits and conduct
Best effort, no SLA, no auth; please keep to a few requests per second and cache. Owner mailing addresses are entities' registered addresses from county assessors; natural persons are withheld. Report problems to hello@staffbox.ai.