Search permits
Search across Kukun's 650M+ U.S. permit records with full-text query, geo, status, label, and date filters. Returns enriched permit records including project labels (Kukun taxonomy), inferred activity labels, and contractor linkage where available.
query Parameters
statusPermit status filter. Use lowercase kebab-case values only.
labelComma-delimited label filters. Syntax: No prefix = OR include (any label matches), +prefix or !prefix = required include (AND — all must match), -prefix = exclude. Example: kitchen-remodel, bathroom-remodel returns permits labeled kitchen-remodel and excludes any labeled bathroom-remodel.
addressStreet address filter (flexible AND match, e.g. 2601 Leaning Pine Ln)
cityCity name filter (exact match, case-insensitive). Example: Tampa.
stateState name filter (exact match, e.g. Florida)
zip-codeZIP code filter (exact match, e.g. 33565)
countyCounty name filter (exact match, e.g. Hillsborough)
jurisdictionIssuing jurisdiction — matched against both city and county fields (e.g. Los Angeles)
latitudeCenter point latitude for geo-distance filtering. Requires longitude and distance. Example: 28.0614426.
longitudeCenter point longitude for geo-distance filtering. Requires latitude and distance. Example: -82.150608.
distanceSearch radius in miles for geo-distance filtering (requires latitude and longitude, e.g. 25)
date-fromStatus date range start (ISO 8601, e.g. 2024-01-01)
date-toStatus date range end (ISO 8601, e.g. 2024-12-31)
limitNumber of records to return per page. Minimum 1, maximum 1000. Default 10.
sort-bySort field. Defaults to relevance for full-text queries; otherwise to most-recent-issued.
sort-orderSort direction
detailsInclude permit details in the response. Use 0 for count-only results and 1 for full results. Default 1.
next-page-idCursor token for the pagination (from previous response next-page-id field)
Headers
AuthorizationThe Authorization header is used to authenticate with the API using your API key. Value is of the format Bearer YOUR_KEY_HERE.
Search permits › Responses
Search results
totalTotal number of records matching the query, across all pages
limitNumber of records returned in this response
totalPagesTotal number of pages available at the current limit
next_page_idCursor token for the pagination
Search addresses by permit condition in an area
Returns deduplicated addresses that either have or are missing a permit label within a date window. Use label-condition=has for addresses with matching permits, or label-condition=missing for addresses without matching permits.
query Parameters
labelPermit label to check
label-conditionhas = address has matching permit, missing = address has no matching permit
date-fromStart date for permit check window (ISO 8601)
date-toEnd date for permit check window (ISO 8601)
zip-codeArea filter by ZIP code
cityArea filter by city
countyArea filter by county
stateArea filter by state
latitudeCenter latitude for radius-based area search (requires longitude and distance)
longitudeCenter longitude for radius-based area search (requires latitude and distance)
distanceRadius distance in miles (required when latitude/longitude are provided)
limitPage size (max 1000, default 50)
next-page-idCursor token for pagination (from previous response next_page_id field)
detailsInclude details in response. 0 = count-only, 1 = full results
Headers
AuthorizationThe Authorization header is used to authenticate with the API using your API key. Value is of the format Bearer YOUR_KEY_HERE.
Search addresses by permit condition in an area › Responses
Area search results
totalTotal number of addresses matching the query
limitNumber of results per page
totalPagesTotal pages based on total and limit
next_page_idCursor token for the next page. Null if there are no more results.