# Market scans with listing tools: Zillow, Airbnb, TripAdvisor and Maps (/blog/real-estate-and-travel-scans-with-listing-tools)

![Illustration: A small friendly robot with a round camera-eye head walks down a street of small houses with a clipboard, ticking boxes as it passes each house with a sign in the yard.](/blog/real-estate-and-travel-scans-with-listing-tools/hero.webp)

A market scan with listing tools is one tool call per site that returns structured records: homes in a ZIP code, stays in a city, hotels in a town, places on a map. The tools live under the `web__` capability, need no provider account, gather their results live in 10 to 60 seconds, and bill only what came back.

**One call, one live collection**

**One call** (web\_\_zillow\_listings: 3 ZIP codes, limit 15, timeout\_seconds 90) → **Live collection** (10 to 60 seconds against the site, up to the deadline) → **Structured records** (complete, count, results: price, beds, baths, detailUrl) → **Billed for rows** (only what came back, never the limit you asked for)

One call per site; each returns structured records.

## Which listing tools exist, and what do they return? \[#which-listing-tools-exist-and-what-do-they-return]

| Tool                       | Input                                                                                                          | Fields in each record                                                       |
| -------------------------- | -------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------- |
| `web__zillow_listings`     | 1 to 5 US ZIP codes, `status` (`for_sale`, `for_rent`, `sold`), price range, `days_on_zillow`, `limit` per ZIP | price, beds, baths, area, Zestimate, `detailUrl`                            |
| `web__zillow_property`     | one `address` or a Zillow home `url`                                                                           | price and tax history, Zestimate, facts, schools                            |
| `web__airbnb_listings`     | `location`, `check_in` and `check_out`, guests, price range, bedrooms, `currency`, `limit`                     | price, rating, guests, bedrooms, amenities, host, listing URL               |
| `web__tripadvisor_search`  | `query`, `kind` (`all`, `hotels`, `restaurants`, `attractions`), `limit`                                       | rating, ranking, price level, address, `webUrl`                             |
| `web__tripadvisor_reviews` | `place_url` from a search result, `rating`, `since`, `limit`                                                   | rating, text, travel date, trip type, owner response                        |
| `web__google_maps_search`  | `query`, `location`, `limit`, `min_rating`, `skip_closed`, `include_details`                                   | name, category, address, coordinates, phone, rating, review count, place ID |
| `web__google_maps_reviews` | `place_url` or `place_id`, `limit`, `sort`, `since`, `keyword`                                                 | rating, text, date, likes, owner response                                   |

Reviewer identities are omitted from both review tools. The full parameter list is on the [web page](/docs/web).

## How does a live collection behave? \[#how-does-a-live-collection-behave]

These tools do not read from a cache of listings. Each call starts a collection against the site and returns when it finishes or when the deadline arrives. The deadline is `timeout_seconds`, default 50 and at most 240. The answer carries three fields: `complete`, `count` and `results`.

Three outcomes are possible. The collection finishes and `complete` is `true`. The deadline arrives first, the rows gathered so far come back with `complete: false`, and only those rows are billed. Or nothing was gathered in time, the call answers `timeout`, and nothing is billed. A failure on the site's side answers `collection_failed` and is also free.

Because the call can last up to `timeout_seconds`, the client's own timeout must be longer than that, or the client gives up on a result that is still on its way. `max_characters` bounds the response size when a large `limit` would produce more JSON than the agent should read.

## What does a scan look like in practice? \[#what-does-a-scan-look-like-in-practice]

Say the task is to compare rents across three ZIP codes and pull one property in detail. The agent makes one call for the listings:

```json
{
  "zip_codes": ["94110", "94114", "94131"],
  "status": "for_rent",
  "price_max": 4500,
  "limit": 15,
  "timeout_seconds": 90
}
```

The result holds up to 45 records, 15 per ZIP code, each with a `detailUrl`. The agent picks one and calls `web__zillow_property` with that `url` and the same `status` to read price history, tax history and schools.

A travel scan follows the same pattern. `web__airbnb_listings` with a `location`, dates and `adults` gives stays with price and rating. `web__tripadvisor_search` with `kind: "hotels"` gives hotels with ranking and price level; its `webUrl` feeds `web__tripadvisor_reviews`. `web__google_maps_search` with a `query` such as "coffee" and a `location` such as "Lisbon, Portugal" gives places with ratings and a `place_id`, which `web__google_maps_reviews` takes to read recent reviews sorted by `newest`.

## What does it cost? \[#what-does-it-cost]

Each listing tool bills per record gathered, with a small per-run fee on some of them. For example, `web__zillow_listings` bills 3.6 credits per listing, and `web__airbnb_listings` bills 6 credits per listing plus 0.15 per run. The current rates for every tool are on the [pricing page](/pricing) and repeated in the tool descriptions your client shows from `tools/list`.

Two rules keep the bill predictable. A failed request is never charged, and a partial collection is charged for the rows it returned, never for the `limit` you asked for. The organization's wallet hold and any monthly cap on the API key stop a scan before it starts, with `payment_required` or `key_spend_limit_exceeded` as an `isError` result. Every charge lands itemized in the organization ledger, described on the [billing page](/docs/billing).

## Where should the results go? \[#where-should-the-results-go]

The records are source material. For a one-off question the agent reads them and answers. For a scan you repeat, keep the raw rows in your own system and save the conclusion in CoreSpeed memory with `memory__remember`: the ZIP codes you track, the price ceiling, the places already reviewed. Memory operations cost 0 credits per call, and a shared memory lets a teammate's agent pick the scan up next week.

One caution applies to every fetched record. Listing text and reviews are content from the open web. Treat them as untrusted input, and keep your client's confirmation on for any write the agent makes afterwards.

## FAQ \[#faq]

**Do I need a Zillow, Airbnb or TripAdvisor account?** No. The tools run on CoreSpeed's own supplier accounts. The Web capability is on by default; Dashboard → Tools shows its state.

**Can one call cover more than five ZIP codes?** No. `web__zillow_listings` takes 1 to 5 ZIP codes per call. Run several calls for a wider area.

**Why did I get `complete: false`?** The deadline arrived before the collection finished. Raise `timeout_seconds`, lower `limit`, or accept the partial set; you were billed only for the rows returned.

**Are reviewer names in the reviews?** No. Both review tools omit reviewer identities and return the rating, text, date and the owner's response.