---
title: "Search Decisions"
method: GET
path: "/decisions/search"
tags: ["Decisions"]
---

# Search Decisions

`GET /decisions/search`

Returns a list of zoning / land-use decisions matching the supplied filters. Decisions should meet ALL parameter filters (AND logic). Date range (`decision_from`/`decision_to`) and `geo_id` are required.

## Query parameters

- `cursor` string, nullable — Cursor for pagination
- `size` integer
- `include_count` boolean — When true and on the first page (no cursor), include total_count in the response. The count is exact up to 10,000; above that, relation is 'gte'.
- `decision_from` string, date, required — Return decisions with `decision_date` on or after this date. Date format: `YYYY-MM-DD`.
- `decision_to` string, date, required — Return decisions with `decision_date` on or before this date. Date format: `YYYY-MM-DD`.
- `geo_id` string, required — Filter decisions by geographic area. Accepts: - US state code (e.g. `CA`) - Shovels geolocation ID for an address, city, county, or jurisdiction (e.g. `a4xysKbZwqg`) ZIP and ZIP+4 inputs are not supported — the upstream rezone source emits no ZIP information, so decisions cannot be filtered by ZIP. Resolve addresses and places to geolocation IDs via: - [Search Addresses](/api-reference/addresses/search-addresses) - [Search Cities](/api-reference/cities/search-cities) - [Search Counties](/api-reference/counties/search-counties) - [Search Jurisdictions](/api-reference/jurisdictions/search-jurisdictions) Free-form text such as `"123 Main St"` is not accepted.
- `asset_class` string[], nullable — Filter by one or more asset classes (e.g. Residential, Commercial, Mixed-Use).
- `category` string[], nullable — Filter by one or more decision categories (e.g. Rezoning, Variance).
- `subcategory` string[], nullable — Filter by one or more decision subcategories.
- `property_type` string[], nullable — Filter by one or more property types.
- `min_project_value` integer, nullable — Minimum project value in cents (inclusive).
- `max_project_value` integer, nullable — Maximum project value in cents (inclusive).
- `decision_q` string, nullable — Full-text query against decision `title` and `description`, tokenized with PostgreSQL `plainto_tsquery('english', ...)`.

## Response `200`

A list of decisions.

- PaginatedDecisionsResponse — Schema for paginated decisions details response.
  - `items` DecisionsRead[], required — The list of items returned in the response following given criteria.
    - `address_id` string, nullable — The address identifier.
    - `city_id` string, nullable — The city ID for the address.
    - `county_id` string, nullable — The county ID for the address.
    - `jurisdiction_id` string, nullable — The jurisdiction ID for the address.
    - `street` string, nullable — The street of the property.
    - `city` string, nullable — The city of the property.
    - `state` string, nullable — The state of the property.
    - `latitude` number, nullable — The latitude of the property.
    - `longitude` number, nullable — The longitude of the property.
    - `id` string, required — The decision identifier.
    - `title` string, nullable — The title of the decision.
    - `decision_date` string, date, nullable — The date the decision was made.
    - `description` string, nullable — A free-form description of the decision.
    - `source_url` string, nullable — The URL of the source meeting record.
    - `asset_class` string, nullable — The asset class of the decision (e.g. Residential, Commercial, Mixed-Use).
    - `category` string, nullable — The category of the decision (e.g. Rezoning, Variance).
    - `subcategory` string, nullable — The subcategory of the decision.
    - `property_type` string, nullable — The type of property involved in the decision.
    - `why_it_matters` string, nullable — A short explanation of why the decision matters.
    - `applicant_name` string, nullable — The name of the applicant on the decision.
    - `owner_name` string, nullable — The name of the property owner.
    - `representative_name` string, nullable — The name of the representative on the decision.
    - `developer_name` string, nullable — The name of the developer on the decision.
    - `zoning_previous` string, nullable — The previous zoning designation.
    - `zoning_new` string, nullable — The new zoning designation.
    - `allowed_uses` string, nullable — The allowed uses under the decision.
    - `project_value` integer, nullable — The project value in cents (integer value representing dollars × 100).
    - `lot_size` integer, nullable — The lot size in square feet.
  - `size` integer, required — The number of items returned in the response.
  - `next_cursor` string, nullable, required — The cursor for retrieving the next page of results.
  - `total_count` TotalCount — Capped result count with Elasticsearch-style {value, relation} shape. When the exact count is known and within the cap, relation is "eq" and value is that exact count. When the count exceeds the cap, relation is "gte" and value is the cap the count was probed against, meaning "the actual count is at least value". The cap is COUNT_CAP for every wire-facing endpoint; internal guard paths probe against their own cap, so value carries whatever cap produced it.
    - `value` integer, required — The count value; capped at the probe's cap (10,000 on the wire).
    - `relation` 'eq' | 'gte', required — "eq" means value is the exact count. "gte" means the actual count is at least value (the cap).

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.net/shovels/apis/the-shovels-api-v2.md) · [All operations](https://skmtc.net/shovels/apis/the-shovels-api-v2/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/shovels/the-shovels-api-v2/revisions/64df4c8074f5/schema)
