# Airbnb Listing Search & Scraper

> Airbnb Listing Search & Scraper is a paid API for AI agents from api.scrapeforagents.tech, paid per call via x402, $0.025/call, status unknown (last checked 2026-10-02).

Scrapes Airbnb search results by location query or search URL, returning structured listing data including prices, descriptions, amenities, host info, and ratings.

## Facts

- Endpoint: POST https://api.scrapeforagents.tech/v1/airbnb?utm_source=zero.xyz
- Price: $0.025/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-02
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/airbnb-listing-search-scraper-f662e085
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_OkzIJHOsgOzpHuo3lcFnQ

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability airbnb-listing-search-scraper-f662e085 -d '<json body>'
```

Example prompt: Search Airbnb for entire home listings in Lisbon, Portugal for 2 adults and 1 child checking in June 10 and checking out June 17, with at least 2 bedrooms, no more than $200 per night — grab up to 20 results with full details including amenities and host info.

## When to prefer this

Choose this endpoint when you need structured, machine-readable Airbnb listing data — including prices, amenities, host details, and ratings — for one or more destinations and date ranges. It is especially useful for travel planning agents, rental market research, price comparison tools, or any workflow that needs to systematically collect Airbnb search results without building and maintaining a custom scraper. The pay-per-call model with no charge for failed/empty runs makes it low-risk for exploratory queries.

## Known failure modes

- Empty results if the location query or URL yields no Airbnb listings (not charged)
- Invalid or non-search Airbnb URLs (room URLs are rejected)
- Airbnb anti-scraping measures may cause intermittent failures
- checkOut date before or equal to checkIn date causes validation failure
- Invalid date format (non YYYY-MM-DD) causes rejection
- Airbnb may limit pagination for very broad searches, capping total results

## How this service works

Pay-per-call structured web data. Failed or empty runs are not charged.

## Output

Returns a JSON object with a count of listings found and an array of listing items, each containing the listing ID, URL, title, subtitle, description, search URL, search query, and original language of the description. When includeDetails is true, additional data such as amenities, host information, photos, ratings, and house rules are included per listing.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "pets": {
   "type": "integer",
   "minimum": 0,
   "description": "Number of pets."
  },
  "adults": {
   "type": "integer",
   "minimum": 1,
   "description": "Number of adult guests."
  },
  "checkIn": {
   "type": "string",
   "description": "Arrival date in YYYY-MM-DD format. Use with checkOut for date-specific prices."
  },
  "infants": {
   "type": "integer",
   "minimum": 0,
   "description": "Number of infant guests."
  },
  "minBeds": {
   "type": "integer",
   "minimum": 0,
   "description": "Only search homes with at least this many beds."
  },
  "checkOut": {
   "type": "string",
   "description": "Departure date in YYYY-MM-DD format; must be after checkIn."
  },
  "children": {
   "type": "integer",
   "minimum": 0,
   "description": "Number of child guests."
  },
  "currency": {
   "type": "string",
   "default": "USD",
   "description": "Currency requested for search prices."
  },
  "priceMax": {
   "type": "integer",
   "minimum": 0,
   "description": "Maximum nightly price filter in the selected currency."
  },
  "priceMin": {
   "type": "integer",
   "minimum": 0,
   "description": "Minimum nightly price filter in the selected currency."
  },
  "roomTypes": {
   "type": "array",
   "default": [],
   "description": "Optional room type filters, such as Entire home/apt or Private room."
  },
  "startUrls": {
   "type": "array",
   "default": [],
   "description": "Public Airbnb search URLs, including any filters already in the URL. Room URLs are not accepted."
  },
  "maxResults": {
   "type": "integer",
   "default": 100,
   "minimum": 0,
   "description": "Maximum unique listings across all searches. Set 0 to collect all publicly paginated results."
  },
  "minBedrooms": {
   "type": "integer",
   "minimum": 0,
   "description": "Only search homes with at least this many bedrooms."
  },
  "minBathrooms": {
   "type": "integer",
   "minimum": 0,
   "description": "Only search homes with at least this many bathrooms."
  },
  "includeDetails": {
   "type": "boolean",
   "default": true,
   "description": "Open each public room page for description, host, amenities, ratings, photos, and rules."
  },
  "locationQueries": {
   "type": "array",
   "description": "City, region, or destination names to search."
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "count": 1,
  "items": [
   {
    "id": null,
    "url": null,
    "title": null,
    "subtitle": null,
    "searchUrl": null,
    "description": null,
    "searchQuery": null,
    "descriptionOriginalLanguage": null
   }
  ],
  "product": "airbnb"
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/airbnb-listing-search-scraper-f662e085/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from api.scrapeforagents.tech](https://www.zero.xyz/host/api.scrapeforagents.tech/llms.txt)
