What a record looks like
{
"id": "p_…",
"muni": "Town of Greenwich",
"regionId": "fairfield-ct",
"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" }],
"changedAt": "…",
"statusEvents": [
{ "oldStatus": "Applied", "newStatus": "Issued", "observedAt": "…" }
]
}Each record carries the permit facts and, when we have them, the contractor, valuation, map coordinates and status history.
What you get
- Search API
- Permits by county, town, trade, status, date, and valuation — the same endpoints that power the Townline app.
- Permit feed
- A cursor feed of new permits in the order we find them, so each pull returns only what's new since the last.
- Change feed
- Each later change to a permit, field by field with before and after: a status moving to issued, a new valuation or contractor. Each permit also says when it last changed.
- Licence roster
- 180,000+ active 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.