Skip to main content
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.

Lead generation and business developmentHomebuilders and developersData and PropTech platforms

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.

  1. 1Count first. GET /permits/count with your filters is free and says how many permits match and how many of them would be new or changed for you.
  2. 2Pull the page you want with GET /permits/search and the same filters. Each new or changed permit uses 1 export record (or 1 credit on Standalone API Only and the free trial).
  3. 3Keep the copy current with GET /permits/sync and the same filters, resuming from meta.nextCursor. Unchanged permits you already hold are free, so each run costs only what changed.
  4. 4Size the market for free with POST /permits/aggregate before choosing where to look.

Count new-home permits in Provo with activity in the last 90 days, and what pulling them would use

bash
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

json
{
  "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)

bash
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

json
{
  "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.