Documentation menu

← Permits and cases

API reference

Search cases

GET/v1/case

Searches zoning and development cases: rezonings, variances, special uses, subdivisions and site plans.

Requires one of jurisdiction, fips, parcel, bbox, or lat with lon.

decided=false limits results to pending cases. status is the published status: a case can be closed with no decision published.

One credit per 20 cases returned. Repeat requests within a day are free.

Parameters

query

jurisdictionstring | null
A jurisdiction id. Results are limited to cases filed with it or with a jurisdiction within it.
fipsstring | null
A Census GEOID: 2 digits for a state or 5 for a county, such as 48 or 48453. Results are limited to cases filed within it.
parcelstring | null
A parcel id. Results are limited to cases that concern it.
latnumber | null
Latitude, in WGS 84. Requires lon. Results are cases with an address within radius.
lonnumber | null
Longitude, in WGS 84. Requires lat.
radiusnumber | null
Search radius around lat and lon, in meters. At most 25,000. Defaults to 1,000.
bboxstring | null
A bounding box, as west,south,east,north in WGS 84. Results are limited to cases with an address inside it.
typestring | null
Case type code, as published.
statusstring | null
Status code, as published.
outcomestring | null
Decision outcome code, as published.
decidedboolean | null
Whether the case has a decision. false returns pending cases.
partystring | null
A name on the case, or words from it. Results are cases with a party name containing every word.
qstring | null
Words from the case description. Results are ordered best match first.
min_appliedstring | null
Earliest filing date, as YYYY-MM-DD.
max_appliedstring | null
Latest filing date, as YYYY-MM-DD.
min_decidedstring | null
Earliest decision date, as YYYY-MM-DD.
max_decidedstring | null
Latest decision date, as YYYY-MM-DD.
sortstring | null
Sort order. One of applied, as_of, decided. Prefix with - for descending. Not accepted with q.
cursorstring | null
A cursor for pagination: the next_cursor from the previous page.
sizeinteger | null
Number of results per page, between 1 and 200. Defaults to 25.
totalboolean
Whether to include total, the count of all matches, on the first page. Defaults to false.

Responses

200
array of case objects
A page of cases.
401
ProblemDetail
credential_missing, credential_invalid or credential_expired. The request has no valid credential.
403
ProblemDetail
scope_missing, person_required, api_key_not_accepted or entitlement_missing. The credential or plan does not allow this request. detail names the reason.
422
ProblemDetail
parameter_invalid, id_malformed or a cursor code. A parameter is missing or invalid. errors lists each one.
429
ProblemDetail
rate_limited. Too many requests. Retry after the Retry-After interval. Nothing is charged.
501
ProblemDetail
not_available. Permit and case data is not available yet.

Example request

curl -G 'https://api.placestack.com/v1/case' \
  --data-urlencode 'lat=35.7796' \
  --data-urlencode 'lon=-78.6382' \
  -H "Authorization: Bearer $PLACESTACK_API_KEY"

Example response

{
  "object": "list",
  "data": [
    {
      "object": "case",
      "id": "cas_01h455vb4pex5vsknk084sn02q",
      "number": "Z-14-2026",
      "type": {
        "code": "REZONE",
        "description": "Rezoning"
      },
      "status": {
        "code": "Approved",
        "description": "Approved"
      },
      "jurisdiction": {
        "id": "jur_01h455vb4pex5vsknk084sn02q",
        "name": "Raleigh",
        "type": "city",
        "fips": "3755000",
        "href": "/v1/jurisdiction/jur_01h455vb4pex5vsknk084sn02q"
      },
      "within": [
        {
          "id": "jur_01h455vb4pex5vsknk084sn02q",
          "name": "Wake",
          "tier": "subregion",
          "type": "county",
          "fips": "37183"
        }
      ],
      "agency": {
        "name": "Development Services",
        "type": "building"
      },
      "description": "Rezone 4.2 acres from R-1 to C-2.",
      "parcels": [
        {
          "id": "prc_01h455vb4pex5vsknk084sn02q",
          "number": "1717353946",
          "href": "/v1/parcel/prc_01h455vb4pex5vsknk084sn02q"
        }
      ],
      "addresses": [
        {
          "raw": "4516 PRINTER LN, RALEIGH NC 27613",
          "recipient": "C/O TRIANGLE PROPERTY MANAGEMENT",
          "street_line_1": "4516 PRINTER LN",
          "street_line_2": "APT 1402",
          "street_number": "4516",
          "street_name": "PRINTER",
          "unit": "B",
          "locality": "RALEIGH",
          "region": "NC",
          "postal_code": "27613",
          "point": {
            "lat": 35.8492,
            "lon": -78.6996
          }
        }
      ],
      "parties": [
        {
          "name": "Alex Rivera",
          "role": "contractor",
          "organization": "Triangle Build Co.",
          "license": "75321"
        }
      ],
      "dates": {
        "applied": "2025-10-02",
        "decided": "2026-01-20",
        "expires": "2028-01-20",
        "completed": "2026-06-30"
      },
      "fees": [
        {
          "category": "building",
          "total": 612.5,
          "paid": 612.5,
          "unpaid": 0,
          "waived": 0,
          "currency": "USD"
        }
      ],
      "decision": {
        "outcome": {
          "code": "APPR",
          "description": "Approved"
        },
        "decided_on": "2026-03-18",
        "effective_from": "2026-03-18",
        "effective_to": "2027-03-18",
        "conditions": [
          {
            "text": "Install erosion control measures before any land disturbance.",
            "scope": "Site",
            "timing": "before_permit",
            "due": "2026-04-01"
          }
        ]
      },
      "zoning": [
        {
          "id": "zon_01h455vb4pex5vsknk084sn02q",
          "code": "R-4",
          "role": "subject",
          "href": "/v1/zoning/zon_01h455vb4pex5vsknk084sn02q"
        }
      ],
      "document": {
        "url": "https://example.com/permit/BLDR-026512-2026",
        "retrieved": "2026-10-01"
      },
      "as_of": "2026-10-01",
      "href": "/v1/case/cas_01h455vb4pex5vsknk084sn02q"
    }
  ],
  "has_more": true,
  "next_cursor": "eyJrIjoiMjAyNi0xMC0wMSIsInQiOjQyfQ",
  "suppressed": 0,
  "total": {
    "value": 1,
    "relation": "eq"
  }
}

Next steps

GET /case/{case_id}

Retrieve a case

Continue