# Search properties

Search up to 41 property listings in a region with price, beds, baths, address and coordinates — plus counts of matching properties and reachable pages. Requires `region`. Each row's `zpid` feeds `/v1/zillow/property`. `status` is `for_sale` or `sold`; rentals are not offered.

- Platform: Zillow
- Request: `GET https://api.toolzerhub.com/v1/zillow/search`
- Auth: `x-api-key` header
- Cost: 1 credit per successful request. Failed requests are not billed.
- Page: https://docs.toolzerhub.com/reference/zillow/discovery/get-zillow-search

| Parameter | In | Required | Type | Description |
| --- | --- | --- | --- | --- |
| `region` | query | yes | string | The region slug from a Zillow URL, e.g. san-francisco-ca from https://www.zillow.com/san-francisco-ca/. A bare state (ca) or zip code (94103) also works. A pasted search URL is accepted in either of Zillow's spellings and reduced to the slug; status and page segments in it are dropped. |
| `page` | query | no | integer | Which page of listings, 41 per page. Capped at 20 — Zillow's own limit regardless of match count: San Francisco sold reports 18,802 matching properties but only 20 reachable pages. Walk with next_page, which is null past the cap. Pages do not overlap. Default: 1. |
| `status` | query | no | enum: for_sale, sold | for_sale (default) or sold. sold returns a sample, flagged by results_are_capped. For rentals, use /v1/zillow/sitemap with family=for_rent. Default: for_sale. |

## Example request

```bash
curl "https://api.toolzerhub.com/v1/zillow/search?region=<region>" \
  -H "x-api-key: $TOOLZERHUB_API_KEY"
```

Success responses are wrapped as `{ "data": ... }`. Errors return `{ "error": { "code", "status", "message", "retryable", "details" } }`. See https://docs.toolzerhub.com/docs/responses-and-errors.
