Ranked, not rawEvery parcel pre-scored for redevelopment upside — you get the shortlist, not a data dump.
9 markets, one schemaAZ · FL · NC · TX · NE, all normalized to the same deal object.
Owner + zoning + compsThe fields that took hours per parcel, already joined.
Built on public dataCounty assessor + recorder records — defensible, no scraping.
Quickstart
Authenticate with your Team API key in an X-API-Key header. Issue or rotate the key in the app under API. Base URL:
# base URL https://developmentintelligence.fly.dev
curl
Python
JavaScript
curl -H "X-API-Key: YOUR_KEY" \ "https://developmentintelligence.fly.dev/api/v1/deals/teardown?market=Maricopa&limit=25"
Endpoints
GET/api/v1/deals— catalog of markets & strategies
List the available markets and how many ranked deals each strategy holds. Start here to discover what to query.
{
"market": "Maricopa", "label": "Phoenix metro",
"generated_at": "2026-06-04",
"markets": ["Maricopa", "Pinal", "Hillsborough", …],
"strategies": [{"key":"teardown","count":250}, …]
}
GET/api/v1/deals/{strategy}— ranked deals, paginated
strategy is one of teardown, value_add, rental, cre.
| Param | Type | Description | |
|---|---|---|---|
market | string | optional | County key (default market if omitted), e.g. Maricopa. |
limit | int | optional | 1–500 (default 100). |
offset | int | optional | Pagination offset (default 0). |
Example response
{
"strategy": "teardown", "market": "Maricopa",
"total": 250, "limit": 25, "offset": 0, "count": 25,
"deals": [{
"parcel_id": "13025111", "city": "SCOTTSDALE",
"address": "7509 E MCKNIGHT AVE", "owner": "…",
"year_built": 1961, "acres": 0.31, "score": 84,
"improvement_value_ratio": 0.06, "assessed_value": 921900,
"zoning_code": "R1-7", "rec_action": "Hold — land-bank",
"motivation_score": 62, "on_market": false
}, …]
}
200 OK401 missing/invalid key404 unknown strategy
Deal fields
| Field | Meaning |
|---|---|
score | Composite redevelopment rank (0–100+). Higher = more upside on paper. |
improvement_value_ratio | Improvement ÷ total assessed value. Low = land worth more than the structure (teardown signal). |
assessed_value | County assessed land + improvement value. |
motivation_score / motivation_signals | Owner-distress composite + the signals that fired (LLC-owned, absentee, tax delinquency, …). |
zoning_code · rec_action · rec_use | Local zoning + the recommended action (build, renovate, land-bank) and highest-and-best use. |
on_market · asking_price | Whether the parcel is currently listed for sale, and at what ask. |
lat · lon | Parcel centroid (WGS84) for mapping. |
Scores are screening-grade — a starting point to validate on the ground, not investment advice.
Limits & access
Team planThe data API unlocks on the $199/mo Team tier. Pro and Free use the web app.
Up to 500/requestPage with
limit + offset; data refreshes as markets are rebuilt.Key rotationRotate your key anytime in the app — the old key stops working immediately.
Ready to build?
Issue your API key in the app, or upgrade to Team to unlock it.