Airbnb APIairbnb.co.uk ↗
Search Airbnb UK listings, fetch amenities, guest reviews, availability calendars, and experience slots via a single structured API with 5 endpoints.
What is the Airbnb API?
The Airbnb UK API covers 5 endpoints that return structured data from airbnb.co.uk, including accommodation search results, full listing details, guest reviews, day-by-day availability calendars, and experience time slots. The search_listings endpoint accepts a location slug plus optional check-in, check-out, and guest-count filters, returning up to 18 listings per page with coordinates, ratings, and total-stay pricing.
curl -X GET 'https://api.parse.bot/scraper/d7e09341-bc1b-421a-8fb0-3c857882e8aa/search_listings?adults=1&checkin=2026-07-14&checkout=2026-07-21&location=London--United-Kingdom' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace airbnb-co-uk-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: Airbnb SDK — search listings, drill into details, reviews, availability, and experiences."""
from parse_apis.airbnb.co.uk_api import Airbnb, Adults, ListingNotFound
client = Airbnb()
# Search for London listings with 2 adults, cap at 5 results
for listing in client.listings.search(location="London--United-Kingdom", adults=Adults._2, limit=5):
print(listing.name, listing.price, listing.rating)
# Drill into the first listing's full details
listing = client.listings.search(location="Paris--France", limit=1).first()
if listing:
detail = client.listingdetails.get(room_id=listing.id)
print(detail.title, detail.rating, detail.reviews_count)
print("Amenities:", detail.amenities[:5])
# Browse reviews for this listing
for review in listing.reviews.list(limit=3):
print(review.author, review.rating, review.date)
# Check calendar availability
for month in listing.availability.list(limit=2):
available_days = [d for d in month.days if d.available]
print(f"{month.year}-{month.month:02d}: {len(available_days)} days available")
# Check experience availability by constructing from known ID
try:
exp = client.experience(id="165149")
for slot in exp.availability(limit=3):
print(slot.day, slot.start_time, slot.remaining_capacity, slot.availability_description)
except ListingNotFound as exc:
print(f"Experience not found: {exc}")
print("exercised: listings.search / listingdetails.get / listing.reviews.list / listing.availability.list / experience.availability")
Search for accommodation listings by location with optional date and guest filters. Returns up to 18 listings per page. Paginates via an opaque cursor returned as next_cursor. Each listing includes coordinates, rating summary, and a total-stay price for the given dates.
| Param | Type | Description |
|---|---|---|
| adults | integer | Number of adults |
| cursor | string | Pagination cursor from a previous search_listings response's next_cursor field |
| checkin | string | Check-in date in YYYY-MM-DD format. Defaults to 7 days from today if omitted. |
| checkout | string | Check-out date in YYYY-MM-DD format. Defaults to 14 days from today if omitted. |
| locationrequired | string | Location string using Airbnb URL slug format (e.g. 'London--United-Kingdom', 'Paris--France', 'New-York--NY--United-States') |
{
"type": "object",
"fields": {
"listings": "array of listing objects with id, name, type, image, rating, price, lat, lng, url",
"next_cursor": "string pagination cursor for next page, null if no more results"
},
"sample": {
"data": {
"listings": [
{
"id": "1471158047218946258",
"lat": 51.4802,
"lng": -0.00773,
"url": "https://www.airbnb.co.uk/rooms/1471158047218946258",
"name": "GuestReady - Comfortable studio in Greenwich",
"type": "Flat in Greenwich West",
"image": "https://a0.muscache.com/im/pictures/prohost-api/Hosting-1471158047218946258/original/207cddb0-2cec-4e1b-aa6e-cf2334dc5103.jpeg",
"price": "£642",
"rating": "4.8 (10)"
}
],
"next_cursor": "eyJzZWN0aW9uX29mZnNldCI6MCwiaXRlbXNfb2Zmc2V0IjoxOCwidmVyc2lvbiI6MX0="
},
"status": "success"
}
}About the Airbnb API
What the API Returns
The API exposes five endpoints covering the main data types on Airbnb UK. search_listings accepts a location string in Airbnb slug format (e.g. London--United-Kingdom), optional checkin and checkout dates in YYYY-MM-DD format, and an adults count. Each result includes the listing id, name, type, rating, a total-stay price, latitude/longitude coordinates, and a direct url. Pagination uses an opaque next_cursor field; pass it back in the next call to walk through results.
Listing Details and Reviews
get_listing_details takes a numeric room_id and returns the full listing record: an HTML description, an amenities array of name strings, images, host object (with name and is_superhost), rating, reviews_count, and coordinates. get_listing_reviews retrieves guest reviews for the same room_id, sorted by quality. It supports offset and limit for manual pagination and returns each review's text, rating, author, date, plus a total_count of all reviews on the listing.
Availability and Experiences
get_listing_availability returns a 12-month forward calendar for any room_id. The calendar array contains month objects, each with a days array where every entry carries a date, available boolean, and price. No pagination is required — one request covers the full year. get_experience_availability works similarly for Airbnb Experiences: pass an experience_id and receive up to 5 upcoming offerings, each with day, start_time, duration, is_available, remaining_capacity, and maximum_capacity.
The Airbnb API is a managed, monitored endpoint for airbnb.co.uk — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when airbnb.co.uk changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official airbnb.co.uk API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Aggregate Airbnb UK nightly rates across multiple London neighbourhoods for a price-comparison tool
- Build a host dashboard that monitors guest reviews and ratings over time using get_listing_reviews
- Populate a travel planning app with real availability calendars from get_listing_availability
- Track superhost status and amenity changes for competitive analysis between listings
- Feed experience booking tools with upcoming slot availability and remaining capacity data
- Map short-term rental density across UK cities using lat/lng fields from search_listings
- Alert travellers when a specific listing has open dates for a target check-in window
| 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 | 100 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.