---
title: "Search zoning"
method: GET
path: "/v1/zoning"
tags: ["zoning"]
---

# Search zoning

`GET /v1/zoning`

## Request

- Base URL: `http://localhost:3030`
- URL: `http://localhost:3030/v1/zoning`
- Auth: HTTP bearer

Finds the zoning at a place, or lists the zoning classifications in a jurisdiction.

For the zoning at a place, send one location: `address`, `parcel`, `lat`
with `lon`, or `bbox`. A place has one base district and any number of
overlays.

For every classification in an area, send `jurisdiction` or `fips` with no
location. Add `code` for one district.

`allowances` and `standards` are included with `include=allowance` and
`include=standard`. A use missing from `allowances` is not prohibited:
`unlisted_uses` holds the ordinance's rule for it.

## Query parameters

- `address` string, nullable: A street address, with city or postal code where known, such as `4516 Printer Ln, Raleigh NC 27613`. Zoning is looked up at the center of the best-matching parcel.
- `lat` number, nullable: Latitude, in WGS 84. Requires `lon`.
- `lon` number, nullable: Longitude, in WGS 84. Requires `lat`.
- `parcel` string, nullable: A parcel id.
- `bbox` string, nullable: A bounding box, as `west,south,east,north` in WGS 84. Results are limited to classifications that intersect it.
- `jurisdiction` string, nullable: A jurisdiction id.
- `fips` string, nullable: A Census GEOID: 2 digits for a state or 5 for a county, such as `48` or `48453`. Results are limited to classifications that lie wholly or partly within it.
- `code` string, nullable: A district code, such as `R-1`. Requires `jurisdiction` or `fips`.
- `kind` 'base' | 'overlay', nullable: District type. One of `base` or `overlay`.
- `use` string, nullable: A use, as named in the ordinance. Results are limited to classifications whose `allowances` list it.
- `result` 'permitted' | 'conditional' | 'prohibited' | 'unknown', nullable: The result for `use`. One of `permitted`, `conditional`, `prohibited` or `unknown`. Requires `use`.
- `legal_status` 'adopted' | 'proposed', nullable: Legal status. One of `adopted` or `proposed`. Defaults to `adopted`.
- `include` string, nullable: Comma-separated sections to include. Any of `allowance` (`allowances`), `standard` (`standards`) and `geometry` (every mapped area, as GeoJSON).
- `format` 'json' | 'geojson': Response format. One of `json` (a list) or `geojson` (a FeatureCollection). Defaults to `json`. `Accept: application/geo+json` also selects `geojson`.
- `cursor` string, nullable: A cursor for pagination: the `next_cursor` from the previous page.
- `size` integer, nullable: Number of results per page, between 1 and 200. Defaults to 20.
- `total` boolean: Whether to include `total`, the count of all matches, on the first page. Defaults to `false`.

## Response `200`

A page of zoning classifications.

- CollectionZoning
  - `object` 'list', required: The object's type. Always `list`.
  - `data` Zoning[], required: The results on this page.
    - `object` 'zoning', required: The object's type. Always `zoning`.
    - `id` string, required: A zoning id.
    - `code` string, required: District code, as published, such as `R-1`. Unique only within its jurisdiction.
    - `name` string, nullable, required: District name, as published. Null when only a code is published.
    - `kind` 'base' | 'overlay', required: District type. One of `base` or `overlay`. A place has one base district and any number of overlays.
    - `applies_over` Reach, required: The base districts an overlay applies to.
      - `scope` 'all' | 'listed' | 'unstated', required: Which base districts. One of `all`, `listed` (the districts in `codes`) or `unstated`.
      - `codes` string[], required: Base district codes. Empty unless `scope` is `listed`.
      - `citation` Citation, required: The ordinance text a rule comes from.
        - `section` string, nullable: Section of the zoning code. Null when not published.
        - `passage` string, nullable: The rule's text, quoted from the zoning code. Null when only the section is published.
        - `url` string, nullable: URL of the published passage. Null when not published.
        - `effective` string, date, nullable: Date the text took effect. Null when not stated.
    - `precedence` Precedence, required: An overlay's rank when its rules conflict with others.
      - `rank` integer, required: Rank when rules conflict, lowest first. A base district is always `0`.
      - `basis` 'stated' | 'house_default', required: Source of the rank. One of `stated` (set by the ordinance) or `house_default` (assigned by Placestack because the ordinance sets none).
      - `citation` Citation: The ordinance text a rule comes from.
        - `section` string, nullable: Section of the zoning code. Null when not published.
        - `passage` string, nullable: The rule's text, quoted from the zoning code. Null when only the section is published.
        - `url` string, nullable: URL of the published passage. Null when not published.
        - `effective` string, date, nullable: Date the text took effect. Null when not stated.
    - `jurisdiction` ZoningJurisdictionRef, required: The jurisdiction that adopted the classification.
      - `id` string, required: A jurisdiction id.
      - `name` string, required: The jurisdiction's common name.
      - `type` string, required: Kind of jurisdiction, in local terms, such as `county`, `parish`, `city` or `town`.
      - `fips` string, nullable: The Census GEOID. Null outside the US.
      - `href` string, required: The object's path in the API.
    - `within` ZoningWithin[], required: The jurisdictions that contain `jurisdiction`, largest first.
      - `id` string, required: A jurisdiction id.
      - `name` string, required: The jurisdiction's common name.
      - `tier` string, required: Level of government. One of `national`, `region` (a state or province), `subregion` (a county or district) or `local` (a city, town, village or township).
      - `type` string, required: Kind of jurisdiction, in local terms, such as `county`, `parish`, `city` or `town`.
      - `fips` string, nullable: The Census GEOID. Null outside the US.
    - `category` Code, required: A coded value, as published, with its standard equivalent.
      - `code` string, nullable: Code, as published.
      - `description` string, nullable: Meaning of the code, as published. Null when not published.
      - `standard` string, nullable: Standard value, shared across jurisdictions. Null when not yet classified.
    - `purpose` string, nullable, required: Purpose statement, as published. Null when there is none.
    - `ordinance` Ordinance, required: The ordinance that adopted a classification.
      - `citation` string, nullable: Ordinance citation, as published. Null when not published.
      - `section` string, nullable: Section that defines the classification. Null when not published.
      - `url` string, nullable: URL of the published ordinance. Null when not published.
      - `adopted` string, date, nullable: Adoption date. Null when not published.
      - `effective` string, date, nullable: Effective date. Null when not published.
    - `effective` Period, required: The dates a classification is in effect.
      - `from` string, date, nullable: Start date. Null when not published.
      - `to` string, date, nullable: End date. Null while current.
    - `legal_status` 'adopted' | 'proposed', required: One of `adopted` or `proposed`. A `proposed` classification is part of a pending amendment.
    - `mapped_area_m2` number, nullable, required: Total mapped area, in square meters. Null when not on the zoning map.
    - `allowances` Allowance[], nullable, required: Each use the ordinance lists, with its result. Included only with `include=allowance`; null otherwise. A use not listed here is governed by `unlisted_uses`.
      - `use` Use, required: A land use, as named in the ordinance.
        - `code` string, nullable: Use code, as published. Null when the ordinance gives no code.
        - `name` string, required: Use name, as published.
        - `category` string, nullable: Standard use category, shared across jurisdictions. Null when not yet classified.
      - `result` 'permitted' | 'conditional' | 'prohibited' | 'unknown', required: Whether the use is allowed. One of `permitted`, `conditional`, `prohibited` or `unknown`. `unknown` means the ordinance lists the use without a result.
      - `qualification` string, nullable: Conditions on the use, as published. Null when there are none.
      - `process` string, nullable: Approval required, as published, such as a special use permit. Null unless `result` is `conditional`.
      - `citation` Citation, required: The ordinance text a rule comes from.
        - `section` string, nullable: Section of the zoning code. Null when not published.
        - `passage` string, nullable: The rule's text, quoted from the zoning code. Null when only the section is published.
        - `url` string, nullable: URL of the published passage. Null when not published.
        - `effective` string, date, nullable: Date the text took effect. Null when not stated.
    - `unlisted_uses` UnlistedUses, required: The ordinance's rule for uses it does not list.
      - `result` 'permitted' | 'conditional' | 'prohibited' | 'unknown', required: Whether an unlisted use is allowed. One of `permitted`, `conditional`, `prohibited` or `unknown`.
      - `process` string, nullable: Approval required for an unlisted use, as published. Null when none is named.
      - `citation` Citation, required: The ordinance text a rule comes from.
        - `section` string, nullable: Section of the zoning code. Null when not published.
        - `passage` string, nullable: The rule's text, quoted from the zoning code. Null when only the section is published.
        - `url` string, nullable: URL of the published passage. Null when not published.
        - `effective` string, date, nullable: Date the text took effect. Null when not stated.
    - `standards` Standard[], nullable, required: Dimensional standards, such as setbacks, height and lot size. Included only with `include=standard`; null otherwise.
      - `type` string, required: Type of standard. One of `setback_front`, `setback_side`, `setback_side_combined`, `setback_side_street`, `setback_rear`, `setback_parking_front`, `setback_parking_side`, `setback_parking_side_street`, `setback_parking_rear`, `build_to_front`, `build_to_side_street`, `height_max_ft`, `height_max_stories`, `height_min_ft`, `height_min_stories`, `far_max`, `lot_area_min`, `lot_area_max`, `lot_width_min`, `lot_depth_min`, `lot_coverage_max`, `density_max`, `open_space_min`, `outdoor_amenity_min`, `impervious_max`, `parking_min` or `parking_max`.
      - `label` string, nullable: Row of the ordinance's table the standard is read from, as published. Null when not published.
      - `value` Bound: A numeric range.
        - `min` number, nullable: Minimum. Null when there is none.
        - `max` number, nullable: Maximum. Null when there is none.
        - `unit` string, required: Unit of `min` and `max`. One of `ft`, `sq_ft`, `acre`, `percent`, `ratio`, `du_acre`, `space`, `story`.
      - `text` string, nullable: The standard as published. Null when `value` is set.
      - `qualification` string, nullable: Conditions on the standard, as published. Null when there are none.
      - `citation` Citation, required: The ordinance text a rule comes from.
        - `section` string, nullable: Section of the zoning code. Null when not published.
        - `passage` string, nullable: The rule's text, quoted from the zoning code. Null when only the section is published.
        - `url` string, nullable: URL of the published passage. Null when not published.
        - `effective` string, date, nullable: Date the text took effect. Null when not stated.
    - `geometry` Geometry, required: A GeoJSON geometry in WGS 84, longitude first.
      - `type` string, required: Geometry type. One of `Polygon` or `MultiPolygon`.
      - `coordinates` unknown[], required: Coordinates, as `[longitude, latitude]` positions nested by geometry type.
        - unknown
    - `sources` Source[], required: The zoning map and ordinance the classification is read from.
      - `kind` 'map' | 'ordinance', required: Type of source. One of `map` (the zoning map) or `ordinance` (the zoning code).
      - `url` string, nullable: URL of the source. Null when it has none.
      - `acquired` string, date, nullable: Date the source was retrieved. Null when not recorded.
    - `as_of` string, date, nullable, required: The oldest `acquired` date in `sources`.
    - `href` string, required: The object's path in the API.
  - `has_more` boolean, required: Whether there are more results after this page.
  - `next_cursor` string, nullable, required: The cursor for the next page. Send it as `cursor`. Null on the last page.
  - `suppressed` integer, required: The number of matching results withheld because the plan does not include them.
  - `total` Total, required: The number of matching results.
    - `value` integer, required: The number of matching results.
    - `relation` 'eq' | 'gte', required: One of `eq` (exact) or `gte` (at least `value`). Counts above 10,000 are `gte`.

## Other responses

- `401`: `credential_missing`, `credential_invalid` or `credential_expired`. The request has no valid credential.
- `402`: `quota_exhausted`. The credit balance is too low for this request. Nothing is charged.
- `403`: `scope_missing`, `person_required`, `api_key_not_accepted` or `entitlement_missing`. The credential or plan does not allow this request. `detail` names the reason.
- `404`: `no_such_resource`. No parcel matches `parcel`.
- `422`: `parameter_invalid`, `id_malformed` or a cursor code. A parameter is missing or invalid. `errors` lists each one.
- `429`: `rate_limited`. Too many requests. Retry after the `Retry-After` interval. Nothing is charged.
- `501`: `not_available`. Zoning data is not available yet.

---

[API](https://skmtc.dev/placestack/apis/placestack-api.md) · [All operations](https://skmtc.dev/placestack/apis/placestack-api/llms.txt) · [OpenAPI document](https://skmtc.dev/placestack/apis/placestack-api/revisions/0ccdf0882668?raw)
