Search parcels
parcel_searchFind parcels matching criteria within one or more covered states: county, acreage, owner name, land use, total or land value, sale price or date, year built, ZIP, city, a bbox or GeoJSON polygon, or generic column filters. All criteria are ANDed; state (or bbox/polygon) is required. Sibling tools: parcel_enrich returns the full record for one parcel (pass its parcel_id) with optional point fields; start_run (kind=search) walks many pages asynchronously; parcel_coverage lists states and which columns each publishes. Output: results, one per parcel with parcel_id and its columns (detail=summary: key columns; detail=full: every published column plus shape metrics), has_more and next_cursor for the next page. Owner and mailing-address criteria are refused where a state withholds those fields, and parcels with a withheld owner are left out of owner-matched results. Cost: 25 lookups per page that returns parcels, whatever its size (up to 100); an empty page is free. Behavior: read-only (no side effects); needs an API key or OAuth; each call counts toward the per-minute request limit (Free 10, Starter 60, Pro 300). Searches run 1 at a time per key on Free, 2 on paid plans; waiting over 20 s for a slot gives busy (503) and running over 40 s gives upstream_timeout (504), both retryable and free. The page cost must be available upfront. Errors: state_required, owner_search_unavailable and mailing_search_unavailable (fields withheld in that state), invalid_request for malformed filters. Plan limits return rate_limited (with retry_after_s), daily_cap_reached or quota_exhausted.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| zip | No | Situs ZIP code, 5 digits. | |
| bbox | No | Bounding box [min_lng, min_lat, max_lng, max_lat] in WGS84. | |
| city | No | Situs city name, case-insensitive. | |
| limit | No | Parcels per page, 1 to 100 (default 25). A page costs the same at any size. | |
| owner | No | Owner name to match, case-insensitive (e.g. 'SMITH JOHN' or 'ACME LLC'), matched per owner_match. | |
| state | No | Two-letter state code or a list (e.g. 'TX' or ['TX', 'OK']). Required unless bbox or polygon is given. | |
| county | No | County 5- or 3-digit FIPS or name, or a list; one state only. | |
| cursor | No | next_cursor from the previous page, with the same criteria, for the next page. | |
| detail | No | summary (default): key columns. full: every published column plus shape metrics. Same cost. | summary |
| filters | No | Up to 20 generic column filters, ANDed with the other criteria. Columns are listed by parcel_coverage. | |
| polygon | No | GeoJSON Polygon or MultiPolygon; parcels whose interior point falls inside match. | |
| usecode | No | Publisher land-use code or list of codes, exact (codes differ by state). | |
| land_use | No | Words in the land-use description, or a code (e.g. 'agricultural', 'vacant'). | |
| acres_max | No | Maximum parcel area in acres (inclusive). | |
| acres_min | No | Minimum parcel area in acres (inclusive). | |
| value_max | No | Maximum total value in USD. | |
| value_min | No | Minimum total value in USD as published (assessed or market; see parvaltype in full records). | |
| owner_match | No | prefix (default, fast): owner name starts with owner. contains: owner appears anywhere in the name (slower). | prefix |
| sale_date_max | No | Latest last-sale date, YYYY-MM-DD (inclusive). | |
| sale_date_min | No | Earliest last-sale date, YYYY-MM-DD (inclusive). | |
| land_value_max | No | Maximum land value in USD. | |
| land_value_min | No | Minimum land value in USD. | |
| sale_price_max | No | Maximum last sale price in USD. | |
| sale_price_min | No | Minimum last sale price in USD. | |
| year_built_max | No | Latest year built. | |
| year_built_min | No | Earliest year built (e.g. 1990). | |
| include_geometry | No | true adds each parcel's GeoJSON boundary (large). Default false. |