Airbnb Listing Photos API
Get the complete photo gallery for any Airbnb listing — every image in display order with captions, dimensions, and the room-by-room tour grouping — using just the listing ID.
Overview
Full Gallery, Not Just the Hero
The Listing Details endpoint only returns the single hero image. This endpoint parses the listing's property page to return every photo in display order, plus captions and the gallery room tour when Airbnb provides it.
The Airbnb Listing Photos endpoint returns the full image gallery for a listing: a total count, every photo with its CDN URL, aspect ratio, orientation, accessibility label, and optional caption, plus the optional room-by-room tour grouping. Like the Overview endpoint, it requires no dates — just the listing ID.
Endpoint URL
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| listing_id | integer | Required |
Airbnb listing ID (path parameter), e.g. 22135033
|
No Dates Needed
This endpoint takes no query parameters. You only need the listing ID — check-in, check-out, and guest counts are not required.
Response Structure
Top-Level Fields
success- Boolean,trueon successlisting_id- The requested Airbnb listing ID (integer)image_count- Total number of images returned (integer)images- Array of photo objects in display order (described below)room_tour- Optional array grouping image IDs by room; omitted entirely when Airbnb does not provide a room tour
Image Object
id- Airbnb image ID (string)url- Unsized CDN image URL (see resizing note below)aspect_ratio- Width / height as a float (e.g.1.3333)orientation-LANDSCAPEorPORTRAITaccessibility_label- Alt text Airbnb assigns to the imagecaption- Human caption (e.g. "kitchenette"). Omitted when empty or nullis_professional- Boolean, whether the photo is flagged as professional
Room Tour Object
Each entry in room_tour groups images for one room:
image_ids- Array of imageidvalues (strings) that belong to this room. Cross-reference against theimagesarraytitle- Room name (e.g. "Bedroom"). Optional — omitted when Airbnb returns it as null
Image URLs & Resizing
URLs Are Unsized
The url field has no size suffix. Use it as-is for full resolution, or append an ?im_w= query string to request a CDN-resized variant.
Append one of these query strings to any image url to get a resized variant:
?im_w=1440- Large?im_w=720- Medium?im_w=480- Small?im_w=240- Thumbnail
For example:
https://a0.muscache.com/im/pictures/804ec3dd-....jpg?im_w=720
Omit the query string entirely for the original full-resolution image.
Error Responses
Errors are returned as RFC 7807 Problem Details with a non-2xx status code. A successful response is always 2xx.
| Status | error_code | When it happens |
|---|---|---|
| 404 | NOT_FOUND | The listing was not found or is no longer available. |
| 500 | UPSTREAM_ERROR | The page was reached but the gallery could not be parsed (e.g. an Airbnb layout change). |
| 500 | INTERNAL_ERROR | An unexpected server-side error occurred. |
| 502 | UPSTREAM_ERROR | The upstream request to Airbnb failed; includes upstream_status when available. |
Finding the Listing ID
Need the Listing ID?
Use the /listing/extract-id endpoint to extract the listing ID from any Airbnb URL.
The listing ID can be found in Airbnb URLs. For example:
https://www.airbnb.com/rooms/22135033
The listing ID is 22135033 (the number after "rooms/").