zh.airbnb.com APIzh.airbnb.com ↗
Search Airbnb listings, retrieve property details, guest reviews, and 12-month availability calendars via a structured JSON API for zh.airbnb.com.
curl -X GET 'https://api.parse.bot/scraper/0f1e45d6-7dca-47bf-8b26-40248647d7b7/search_listings?query=Tokyo&guests=1' \ -H 'X-API-Key: $PARSE_API_KEY'
Search for Airbnb property listings by location, dates, guests, and price filters. Returns paginated results with listing summaries including pricing, ratings, and photos. Use the cursor from paginationInfo.nextPageCursor to fetch the next page.
| Param | Type | Description |
|---|---|---|
| query | string | Search location query (city, region, or address). |
| cursor | string | Pagination cursor from a previous search response's paginationInfo.nextPageCursor. |
| guests | integer | Number of adult guests. |
| checkin | string | Check-in date in YYYY-MM-DD format. |
| checkout | string | Check-out date in YYYY-MM-DD format. |
| price_max | integer | Maximum total price filter. |
| price_min | integer | Minimum total price filter. |
{
"type": "object",
"fields": {
"data": "object containing presentation.staysSearch.results with searchResults array of listing summaries and paginationInfo for cursor-based pagination"
},
"sample": {
"data": {
"data": {
"presentation": {
"staysSearch": {
"results": {
"searchResults": [
{
"title": "Taito City房源",
"subtitle": "藏前2卧室/Poka Premium Kuramae",
"avgRatingLocalized": "5.0 (12)",
"structuredDisplayPrice": {
"primaryLine": {
"qualifier": "/ 5 晚",
"originalPrice": "$707",
"discountedPrice": "$543"
}
}
}
],
"paginationInfo": {
"nextPageCursor": "eyJzZWN0aW9uX29mZnNldCI6MCwiaXRlbXNfb2Zmc2V0IjoxNiwidmVyc2lvbiI6MX0="
}
}
}
}
}
},
"status": "success"
}
}About the zh.airbnb.com API
This API provides 4 endpoints for querying Airbnb property data from zh.airbnb.com, covering listing search, full property details, guest reviews, and availability calendars. The search_listings endpoint accepts location queries, date ranges, guest counts, and price filters, returning paginated summaries with ratings, photos, and per-night pricing. Listing IDs returned from search feed directly into the detail, review, and calendar endpoints.
Endpoints and Data Coverage
The search_listings endpoint accepts a query string (city, region, or address), optional checkin and checkout dates in YYYY-MM-DD format, guests count, and price_min/price_max filters. Results are returned as a searchResults array inside presentation.staysSearch.results, with a paginationInfo.nextPageCursor field you pass back as the cursor parameter to walk through pages.
The get_listing_details endpoint takes a required listing_id (numeric string) plus optional date and guest parameters to include pricing context. The response returns sections under presentation.stayProductDetailPage.sections, covering amenities, property description, host information, photos, and booking details. Pricing is only included in the response when checkin, checkout, and guests are all supplied.
Reviews and Availability
The get_listing_reviews endpoint returns up to 20 guest reviews per request from presentation.stayProductDetailPage.reviews, including a reviewsCount total and reviewTags metadata. Use the offset parameter to paginate through the full review set for a listing.
The get_listing_availability endpoint returns 12 months of calendar data starting from a given month and year (defaulting to the current month if omitted). The response is structured under merlin.pdpAvailabilityCalendar.calendarMonths, with each day carrying availability status, minimum and maximum night constraints, and condition ranges — useful for programmatically identifying bookable windows without hitting the search endpoint.
- Build a price-comparison tool by running
search_listingsacross multiple date ranges and comparing returned nightly rates. - Aggregate availability windows for a set of listing IDs using
get_listing_availabilityto surface open dates automatically. - Pull
reviewsCountandreviewTagsfromget_listing_reviewsto analyze guest sentiment trends across a portfolio of properties. - Populate a property detail page by mapping
get_listing_detailssections to amenities, description, and host info fields. - Monitor minimum-night requirements per day across a 12-month horizon using calendar condition ranges from
get_listing_availability. - Build a guest-facing search interface filtered by location, check-in/out dates, and price band using
search_listingspagination.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 250 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Airbnb offer an official developer API?+
What does `get_listing_details` return when no dates are provided?+
checkin, checkout, and guests parameters, the response includes amenities, description, host information, and photos but omits pricing details. Provide all three date/guest parameters to receive pricing data in the sections response.How does pagination work across `search_listings` and `get_listing_reviews`?+
search_listings uses cursor-based pagination: take the paginationInfo.nextPageCursor value from one response and pass it as the cursor input on the next call. get_listing_reviews uses offset-based pagination with a fixed page size of 20 reviews — increment offset by 20 to retrieve successive pages.Does the API return Airbnb Experience listings or only stay listings?+
Is host contact information or exact property coordinates included in listing details?+
get_listing_details response includes host profile information surfaced on the listing page, but precise GPS coordinates and direct host contact details are not included in the returned fields. You can fork this API on Parse and revise it to attempt to expose additional location fields if they become available in the response.