Endpoint Playground
Returns aggregate Airbnb short-term-rental market rollups from the dataset id enum value `airbnb-markets`. Aggregate-only: each row is a market cell, never an individual listing. Thin cells are suppressed. group_by enum: `country`, `market`, `admin1` (top subdivision), `locality` (settlement), `room_type` (`entire_place`/`private_room`/`hotel`/`shared_room`), `property_type` (Airbnb's canonical listing type from the detail page). `admin1`, `locality`, `room_type` and `property_type` are enrichment-derived and stay empty until their coverage is high enough to be reliable. Each cell also carries `median_price_usd`, the median nightly price converted to USD via an approximate dated FX snapshot, for cross-country comparison (combine with `group_by=room_type` for median price by room type); `guest_favorite_pct`, the share of listings carrying the Guest Favorite badge (an observed lower bound, like `superhost_pct`); and `avg_person_capacity`, the average guests a listing sleeps over the detail-page-enriched sample. Sort enum: `listings_desc`, `superhost_pct_desc`, `rating_desc`, `key_asc`. Billing: this search costs 1 credit per record returned, with a minimum of 2 (an empty result costs 2, a full page of 100 costs 100). Dataset Playground requests query indexed data and do not apply proxy routing.
14 Oct 2026: 1 items; 17 fields had a value in every checked item.
Sample value profiles: last_seen: 2026-07-29.
curl "https://api.crawlora.net/api/v1/datasets/airbnb-markets/search?group_by=country&sort=listings_desc" \
-H "x-api-key: $CRAWLORA_API_KEY"| Parameter | Type | Required | Prefilled value | Description |
|---|---|---|---|---|
| group_by | string | No | country | Aggregate cell dimension enum: country, market, admin1, locality, room_type, property_type. Defaults to country |
| country | string | No | Exact ISO-3166-1 alpha-2 country filter, e.g. FR | |
| market | string | No | Exact metro-market filter, e.g. Paris, max 128 characters | |
| superhost | boolean | No | Count only Superhost listings | |
| guest_favorite | boolean | No | Count only Guest Favorite listings (an observed lower bound; the badge under-counts) | |
| min_rating | number | No | Minimum listing rating, from 0 through 5 | |
| min_review_count | integer | No | Minimum listing review count, 0 or greater | |
| active_since | string | No | Freshness filter, an ISO-8601 date (YYYY-MM-DD); only listings last seen on or after it are counted | |
| min_listings | integer | No | Minimum listings per cell; raises the small-cell suppression floor (never lowered below the built-in minimum) | |
| sort | string | No | listings_desc | Sort enum: listings_desc, superhost_pct_desc, rating_desc, key_asc |
| page | integer | No | Page number, defaults to 1 | |
| page_size | integer | No | Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000 |
{
"code": 200,
"msg": "OK",
"data": {
"dataset": "airbnb-markets",
"group_by": "country",
"items": [
{
"key": "US",
"listings": 1212294,
"superhost_listings": 303073,
"superhost_pct": 25,
"guest_favorite_listings": 121229,
"guest_favorite_pct": 10,
"rated_listings": 776000,
"avg_rating": 4.72,
"avg_review_count": 31.5,
"median_price_usd": 148,
"enriched_listings": 280000,
"superhost_pct_enriched": 29.4,
"guest_favorite_pct_enriched": 18.7,
"avg_person_capacity": 4.2,
"distinct_hosts": 214500,
"listings_per_host": 1.31,
"last_seen": "2026-07-03T00:00:00Z"
}
],
"page": 1,
"page_size": 20,
"total": 1,
"sort": "listings_desc",
"min_listings": 50
}
}The sample response, schema and code snippets below work without an account. Sending a live request needs an API key.