Skip to main content
GET
List the building permits on a parcel
Every permit on one parcel, newest issue date first, with the aggregates the search filters read in summary.

Use it when

The “work done on this house” panel: a new roof, a pool, solar, an addition, an ADU. The panel also says if the jurisdiction ever closed the work out.

Read the response

  • as_of is the effective date of the permit snapshot, the date in meta.coverage[].parcel.permits.as_of. The API measures every window in summary back from it, never from today. The windows are 24 months, 36 months and 12 months.
  • summary is null when the parcel carries no permit at all, and permits[] is then empty. That is the honest reading: the snapshot holds the roll, and this parcel is not on it.
  • tags[] are labels for the work, normalised from the jurisdiction’s own type, subtype and description, for example Solar or Pool and Hot Tub. major_work is true for the five that change a house: Addition, ADU, New Construction, Pool and Hot Tub, Solar.
  • status is the jurisdiction’s own. final means closed out. active means issued, with the work in progress. inactive means lapsed, or closed without a final. in_review means applied for, not issued. n_open_permits_12m and the open-permit quicklist count a permit that is active or in_review and older than a year.
  • The three duration fields are the timeline in days: filing to issue, issue to final, filing to final. Each is null while the date it needs is null.

Gotchas

  • The API never serves applicant names, phones and email addresses. The files carry them on some permits. Investorlift loads them and drops them at the served tier, for every key and every scope.
  • job_value is what the applicant declared, and only about half of the Maricopa permits report one. Null means not reported, so a sum over job_value_24m is a floor, not a total.
  • meta.coverage[].parcel.permits says what the snapshot holds. n_permits and n_parcels are the market’s totals. n_unmatched counts the permits in the county file that landed on no parcel of the market. The snapshot does not hold those permits. The per jurisdiction totals sit beside them.
  • The API answers 404 not_found when the parcel is in no market with parcel tables. For a market with no published parcel tables, the API answers 422 parcels_unavailable.

Authorizations

Authorization
string
header
required

API key from the developer console (starts with zpka_). Create one at https://developers.investorlift.com/get-a-key.

Path Parameters

property_id
string
required

Parcel id, prop_<32 hex>, from /v1/properties/resolve or any deal's property.id. The prefix is part of the id (400 invalid_id otherwise).

Required string length: 1 - 64

Response

The permits of one parcel.

The permits of one parcel.

data
object
required

GET /v1/properties/{id}/permits: every building permit on the parcel with the aggregates.

meta
object
required

Response metadata: when the API produced it, which markets it covers, and how fresh they are.