What it returns
Building permits from city permitting departments, in one schema: permit number, type, residential or commercial class, work class, description, status, applied, issued, completed and expiry dates, declared valuation, address, ZIP, coordinates, parcel, contractor company and housing units added.
Search by city, permit type, class, words in the description (solar, ADU, demolition, pool), status, address, ZIP, contractor, minimum valuation, new-housing permits only and issue date range, newest or largest first. Or group the matches to get counts and valuation totals by contractor, ZIP, permit type, year or month, for example the busiest solar installers in a ZIP code or new housing permitted per month.
Cities: New York City (DOB NOW and legacy BIS), Los Angeles, Chicago, Seattle, Austin, San Francisco and Philadelphia, more added as cities publish open permit data. Rebuilt weekly from each city's open data portal. Owner and applicant personal names are not included; contractor business names are.
Charged per permit or total returned.
Request
POST https://api.pushbuild.com/building-permits/run with a JSON body. Send your key in the X-API-Key header.
| Field | Type | Description |
|---|---|---|
jurisdictions | list of strings | nyc, los_angeles, chicago, seattle, austin, san_francisco, philadelphia. |
permitType | string | Type contains, e.g. Building, Electrical, Demolition, New. |
permitClass | string | Class contains, e.g. Residential, Commercial. |
workClass | string | Work class contains, e.g. New, Alteration, Addition. |
description | string | Words in the work description, e.g. solar, ADU, pool. |
status | string | Status contains, e.g. Issued, Completed, Finaled. |
address | string | Street address contains. |
zips | list of strings | Five-digit ZIP codes. |
contractor | string | Contractor company name contains. |
permitNumber | string | Exact permit number. |
minValuation | number | Smallest declared project cost in dollars. |
newHousingOnly | boolean | Only permits that add housing units (Seattle, San Francisco, Austin). |
issuedFrom | string | YYYY-MM-DD. |
issuedTo | string | YYYY-MM-DD. |
sort | string: newest, largest | newest or largest valuation first. Default: "newest". |
groupBy | string: contractor, zip, jurisdiction, permitType, year, month | Return counts and valuation totals by contractor, zip, jurisdiction, permitType, year or month. |
maxItems | integer | Maximum items to return (1-500). Default: 100. |
Example
curl -X POST https://api.pushbuild.com/building-permits/run \
-H "X-API-Key: YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"jurisdictions": ["seattle"], "description": "solar", "maxItems": 20}'
Response
{"count": 20, "truncated": false, "seconds": 1.4, "items": [ { ... } ]}
Each call returns up to 500 items. Records that fail validation or are not found are flagged in the items and not charged.
Pricing
Pay only for results returned: $0.80 per 1,000 records. No charge for errors or empty searches.
Use it from Claude, ChatGPT or Cursor
This API is also an MCP server: https://api.pushbuild.com/mcp/building-permits. Add it to any assistant that supports remote MCP servers, with your key in the X-API-Key header. Same prices. Setup for each app.
Tell us what you need built.
Questions about this API, higher volumes, or a data source you need that we don't cover yet.
hello@pushbuild.comWant this data inside your own app or CRM? API integrations and data sync