GET

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

GET https://api.stayapi.com/v1/airbnb/listing/{listing_id}/photos

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, true on success
  • listing_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 - LANDSCAPE or PORTRAIT
  • accessibility_label - Alt text Airbnb assigns to the image
  • caption - Human caption (e.g. "kitchenette"). Omitted when empty or null
  • is_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 image id values (strings) that belong to this room. Cross-reference against the images array
  • title - 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/").

Request
curl -X GET "https://api.stayapi.com/v1/airbnb/listing/22135033/photos" \
  -H "x-api-key: YOUR_API_KEY"
Response
{
  "success": true,
  "listing_id": 22135033,
  "image_count": 17,
  "images": [
    {
      "id": "717978933",
      "url": "https://a0.muscache.com/im/pictures/804ec3dd-....jpg",
      "aspect_ratio": 1.3333,
      "orientation": "LANDSCAPE",
      "accessibility_label": "Listing image 1",
      "caption": "kitchenette",
      "is_professional": false
    }
  ],
  "room_tour": [
    {
      "image_ids": ["717978933", "467176922"]
    }
  ]
}