Airbnb API endpoint
Searches public Airbnb stays for a location, with optional check-in and check-out dates, adult count, currency and page. Pass `ne_lat`, `ne_lng`, `sw_lat` and `sw_lng` to bound the search to a map area. Each result has the listing id, title, URL, location and coordinates, price and price per night, rating, review count, host, and the Superhost and Guest Favorite flags.
/airbnb/searchQuery parameters: location is required. check_in, check_out, adults, page, and currency are optional. For more relevant map-bounded search, also pass ne_lat, ne_lng, sw_lat, sw_lng, and optionally zoom.
Returns Airbnb public stay search results.
| Field | Filled in, of 40 checked | Values in the sample |
|---|---|---|
| id | 40 | |
| title | 40 | “Little Something” and 39 other values |
| url | 40 | airbnb.com |
| image | 40 | a0.muscache.com |
| price | 40 | 362 to 8,119, median 2,020 |
| price_per_night | 40 | 65 to 1,490, median 346.4 |
| currency | 40 | USD in all 40 |
| rating | 36 | 4.65 to 5, median 4.84 |
| review_count | 36 | 7 to 2,003, median 153 |
| location | 40 | “Little Something” and 26 other values |
| latitude | 40 | |
| longitude | 40 | |
| is_superhost | 7 | true in 7 of 7 |
| is_guest_favorite | 16 | true in 16 of 16 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| location | string | Yes | Location | New York, NY | |
| check_in | string | No | Check-in date | ||
| check_out | string | No | Check-out date | ||
| adults | integer | No | Adult guests | ||
| page | integer | No | 1-based page | ||
| currency | string | No | Currency for bounded map search | ||
| ne_lat | number | No | Northeast latitude for bounded map search | ||
| ne_lng | number | No | Northeast longitude for bounded map search | ||
| sw_lat | number | No | Southwest latitude for bounded map search | ||
| sw_lng | number | No | Southwest longitude for bounded map search | ||
| zoom | integer | No | Map zoom for bounded map search | ||
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/airbnb/search?location=New+York%2C+NY&page=1" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"location": "New York, NY",
"page": 1,
"results": [
{
"id": "964337233639659839",
"title": "Cozy & Calm Studio",
"url": "https://www.airbnb.com/rooms/964337233639659839",
"image": "https://a0.muscache.com/image.jpeg",
"price": 717,
"rating": 4.47,
"review_count": 96,
"location": "Apartment in Union City",
"latitude": 40.77525,
"longitude": -74.02586
}
]
}
}Request schema
No body schema
Response schema
#/definitions/airbnb.SearchResponse
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| location | string | No | New York, NY | Location that was searched. | ||
| page | integer | No | 1 | Page number returned. | ||
| results | array | No | Listings on this page. | |||
| results[].host | string | No | Host name, when the search card shows it. | |||
| results[].host_id | string | No | 65056940 | Airbnb id of the host. Use it with the host endpoint. | ||
| results[].id | string | No | 12345678 | Airbnb listing (room) id. Use it with the room endpoints. | ||
| results[].image | string | No | URL of the listing's main photo. | |||
| results[].is_guest_favorite | boolean | No | IsGuestFavorite reports whether the listing carries an Airbnb Guest Favorite badge (including its "top N%" variants). Like IsSuperhost it comes from the search card's badges[] and renders inconsistently, so a true value is reliable but a false/absent value is not — downstream aggregates treat the rate as an observed lower bound. | |||
| results[].is_superhost | boolean | No | True when the listing carries the Superhost badge. | |||
| results[].latitude | number | No | Latitude of the listing. | |||
| results[].location | string | No | Location text shown for the listing. | |||
| results[].longitude | number | No | Longitude of the listing. | |||
| results[].price | number | No | Price shown on the search card. With check-in and check-out dates it is the total for the stay; without dates it is Airbnb's display figure, not a nightly rate. | |||
| results[].price_per_night | number | No | 148 | PricePerNight is the per-night price for the queried stay (search total ÷ nights), set only when check_in+check_out are supplied. It amortizes any fixed fees across the stay, so a longer window yields a tighter base-rate estimate. Without dates the `price` field is an unstable "from"/display figure, not a nightly rate. | ||
| results[].rating | number | No | Average guest rating. | |||
| results[].review_count | integer | No | Number of guest reviews. | |||
| results[].title | string | No | Listing title as shown on the search card. | |||
| results[].url | string | No | Link to the listing on Airbnb. |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 429 | Too Many Requests | #/definitions/app.Response |
| 503 | Service Unavailable | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/airbnb/search?location=New+York%2C+NY&page=1" \
-H "x-api-key: $CRAWLORA_API_KEY"