What a record looks like
{
"id": "permit-citysquared-greenwich-ct-…",
"muni": "Town of Greenwich",
"regionId": "fairfield-ct",
"permitNo": "2026-1729",
"permitType": "Building",
"description": "Remodel kitchen.",
"status": "Issued",
"issuedDate": "2026-07-24",
"valuation": 75000,
"contractor": "…",
"address": "…",
"latitude": 41.02, "longitude": -73.62,
"trades": [{ "id": "general-contractor", "name": "General contractor" }],
"statusEvents": [
{ "oldStatus": "Applied", "newStatus": "Issued", "observedAt": "…" }
]
}Owner contact details are never part of the licensed feed — permit facts, contractors, valuations, geocodes, and status history are. Owner identity (name and property address) is available under an expanded agreement.
What you get
- Search API
- Permits by county, town, trade, status, date, and valuation — the same endpoints that power the Townline app.
- Status-change events
- A cursor feed of every observed transition (applied → issued → closed), so your pipeline pulls deltas, not dumps.
- Licence roster
- 430k+ NY/NJ/CT contractor licences, matched to permit activity.
- Cost aggregates
- Median project costs by county, town, and work type, from real valuations.
Who licenses this
Solar and generator dealers prospecting installs, building-product teams tracking where their category gets installed, home-services groups doing territory diligence, insurers and proptech products that need permit history by address. If your problem is “national data is thin exactly where we operate,” this is the regional fix.