Documentation menu

← Zoning

API reference

Search zoning

GET/v1/zoning

A page of zoning classifications: what is in force at a place, or every classification a government defines.

A place (address, lat and lon, parcel or bbox) answers with the base classification the land sits in and any overlay over it, base first. A jurisdiction or fips answers with that government's whole legend. code narrows a legend to one entry and needs a scope beside it.

allowances and standards are large and arrive only with include=allowance or include=standard. Each entry carries the citation it was read from. A use the ordinance never names is absent from allowances, and that absence is not a prohibition.

One credit per place asked about, however many classifications apply, and free again for a day. A legend is charged as a page.

Parameters

query

addressstring | null
A street address, with its city or postal code where one is known. The classifications in force there.
latnumber | null
Latitude of a point, in WGS 84. With lon, the classifications in force there.
lonnumber | null
Longitude of the point, in WGS 84.
parcelstring | null
A parcel id. The classifications in force on it.
bboxstring | null
A bounding box as west,south,east,north in WGS 84. The classifications mapped inside it.
jurisdictionstring | null
A jurisdiction id. Every classification that government defines, which is its legend.
fipsstring | null
A US Census GEOID, 2 digits for a state or 5 for a county: 48, 48453.
codestring | null
A district code, such as R-1. Needs jurisdiction or fips beside it, because a code means nothing on its own.
kind"base" | "overlay" | null
base or overlay.
usestring | null
A use, as the ordinance names it. Only the classifications whose allowances speak about it.
result"permitted" | "conditional" | "prohibited" | "unknown" | null
With use, only the classifications whose answer for it is this. One of permitted, conditional, prohibited or unknown.
legal_status"adopted" | "proposed" | null
adopted, the default, or proposed for what a pending amendment would create.
includestring | null
Comma-separated sections to add. allowance adds what each use may do, standard adds the dimensional standards, geometry adds every area covered as GeoJSON.
format"json" | "geojson"
json for the list envelope, geojson for a FeatureCollection with every area. Accept: application/geo+json does the same.
cursorstring | null
The previous page's next_cursor.
sizeinteger | null
Default 25.
totalboolean
True adds total, the count of every match, to the first page.

Responses

200
zoning object
A page of zoning classifications.
401
ProblemDetail
credential_missing, credential_invalid or credential_expired: send a live API key as Authorization: Bearer <key>.
402
ProblemDetail
quota_exhausted: the balance can't cover the call. Nothing was charged and nothing was returned.
403
ProblemDetail
scope_missing, person_required or entitlement_missing: this credential or plan can't do this. detail says which.
404
ProblemDetail
no_such_resource: nothing has that id.
409
ProblemDetail
version_conflict: the record changed since you read it. Read it again and resend.
422
ProblemDetail
parameter_invalid, id_malformed or a cursor code: a parameter's value isn't one this operation takes.
429
ProblemDetail
rate_limited: wait for Retry-After, then send it again. Not charged.
501
empty
not_available: no zoning is published yet.

Example request

curl -G 'https://api.placestack.com/v1/zoning' \
  --data-urlencode 'address=100 Main St' \
  --data-urlencode 'jurisdiction=value' \
  --data-urlencode 'use=value' \
  -H "Authorization: Bearer $PLACESTACK_API_KEY"

Example response

{
  "object": "list",
  "data": [
    {
      "object": "zoning",
      "id": "zon_01h455vb4pex5vsknk084sn02q",
      "code": "<Code>",
      "name": "string",
      "kind": "base",
      "jurisdiction": "<zoning__JurisdictionRef>",
      "within": [
        "<zoning__Within>"
      ],
      "category": "<Code>",
      "purpose": "string",
      "ordinance": "<Ordinance>",
      "effective": "<Period>",
      "legal_status": "adopted",
      "mapped_area_m2": 1.25,
      "allowances": [
        "<Allowance>"
      ],
      "standards": [
        "<Standard>"
      ],
      "geometry": "<Geometry>",
      "as_of": "2026-09-13",
      "href": "<Href>"
    }
  ],
  "has_more": true,
  "next_cursor": "string",
  "suppressed": 0,
  "total": {
    "value": 1,
    "relation": "eq"
  }
}

The rest of zoning.

Next

GET /zoning/{zoning_id}

Get a zoning classification