Docs / New permits in your area, kept current
Building permits
New permits in your area, kept current
Count permits for free, pull the ones you want, and keep them current without paying twice.
Who this is for
Contractors, suppliers, and service companies who sell to the people pulling permits, and platforms that keep their own copy of permit data.
- 1Count first.
GET /permits/countwith your filters is free and says how many permits match and how many of them would be new or changed for you. - 2Pull the page you want with
GET /permits/searchand the same filters. Each new or changed permit uses 1 export record (or 1 credit on Standalone API Only and the free trial). - 3Keep the copy current with
GET /permits/syncand the same filters, resuming frommeta.nextCursor. Unchanged permits you already hold are free, so each run costs only what changed. - 4Size the market for free with
POST /permits/aggregatebefore choosing where to look.
Count new-home permits in Provo with activity in the last 90 days, and what pulling them would use
curl 'https://api.boardwalkai.com/api/v1/permits/count?cities=Provo&workTypes=new_home&dateRange=90d' \
-H 'Authorization: Bearer bwk_live_YOUR_KEY'Response · HTTP 200
{
"data": {
"matchCount": 186,
"approximate": false,
"billable": {
"newOrChanged": 150,
"unchangedOwned": 36,
"exact": true,
"exportRecords": 150
},
"affordability": {
"maxAffordableRecords": 99850,
"unit": "export_record"
}
},
"meta": {
"appliedFilters": {
"cities": [
4417
],
"workTypes": [
"new_home"
],
"dateRange": "90d"
},
"appliedDefaults": {
"jobKinds": [
"major",
"minor"
],
"dateField": "activity",
"sort": "recent"
},
"resolvedFrom": {
"cities": [
{
"input": "Provo",
"id": 4417
}
]The response shape on this page is the one the endpoint builds: the keys, their nesting, and their types are asserted against the shipping code by a test. The numbers inside it are the scenario being walked through, not a measurement of the corpus.
The first permit of that match, with the contacts printed on it (the homeowner's phone is withheld until the homeowner contact rules are accepted)
curl 'https://api.boardwalkai.com/api/v1/permits/search?cities=Provo&workTypes=new_home&dateRange=90d&limit=1' \
-H 'Authorization: Bearer bwk_live_YOUR_KEY'Response · HTTP 200
{
"data": [
{
"permitId": 9100001,
"permitNumber": "BLD-2026-00042",
"title": "New single-family home",
"workTypes": [
{
"key": "new_home",
"label": "New homes"
}
],
"status": "active",
"statusLabel": "Active",
"stage": "issued",
"stageLabel": "Issued",
"address": {
"line1": "100 Example St",
"city": "Exampleton",
"state": "UT",
"zip": "84000"
},
"county": "Example County",
"jobValue": 425000,
"appliedOn": "2026-08-01",
"issuedOn": "2026-09-15",
"lastActivity": {
"date": "2026-10-02",
"label": "Footing inspection"
},
"contractor": "Example Builders LLC",
"whoToCall": {
"name": "Example Builders LLC",
"role": "Contractor",
"contactPerson": "Sam Example",
"phone": "(555) 010-0042",
"email": "office@builders.example.test"
},
"boardwalkUrl": "https://boardwalkai.com/map/#permit=9100001",
"delivery": {The response shape on this page is the one the endpoint builds: the keys, their nesting, and their types are asserted against the shipping code by a test. The numbers inside it are the scenario being walked through, not a measurement of the corpus.
Read more: Permits, permit filters, and permit record fields.
Ready to make a call?
A free Boardwalk trial includes API access, 50 record-export credits (search, CSV, MCP), and 5 Find Contact Info lookups. Counting, taxonomy, location lookups, and the analytics plane cost nothing, so you can evaluate the data before you spend a credit.