Airbnb Extract Listing ID API
Parse Airbnb listing URLs to extract listing IDs required for API calls.
Overview
URL Parsing Utility
Extract numeric listing IDs and base64 encoded IDs from any Airbnb URL format.
This utility endpoint parses Airbnb URLs to extract the numeric listing ID that can be used with other API endpoints. It also returns the base64 encoded ID format for complete compatibility.
Endpoint URL
Query Parameters
Parameter | Type | Required | Description |
---|---|---|---|
url | string | Required | Any valid Airbnb listing URL to parse |
Response Structure
Response Fields
listing_id
- Numeric listing ID (e.g., 22120898)url
- Original URL provided for verificationencoded_id
- Base64 encoded ID for advanced operations
ID Format Explanation
The encoded_id is a base64 encoding of the string format:
"StayListing:22120898" → Base64 → "U3RheUxpc3Rpbmc6MjIxMjA4OTg="
Supported URL Formats
All Airbnb URL Patterns
https://www.airbnb.com/rooms/22120898
→ ID: 22120898
https://www.airbnb.com/rooms/22120898?guests=2&check_in=2025-01-01
→ ID: 22120898
https://www.airbnb.co.uk/rooms/22120898
→ ID: 22120898
https://m.airbnb.com/rooms/22120898
→ ID: 22120898
https://www.airbnb.com/listing/22120898
→ ID: 22120898
Common Use Cases
Browser Extensions
Extract IDs from the current tab URL to fetch reviews or pricing data.
Bulk Processing
Process lists of Airbnb URLs from spreadsheets or databases.
URL Validation
Validate user input to ensure proper Airbnb listing URLs.
API Integration
Convert between URL formats and API identifiers for custom integrations.
Error Handling
Invalid URLs
The endpoint will return a 400 error if the URL is not a valid Airbnb listing URL or if no listing ID can be extracted.
Common Error Scenarios
- Non-Airbnb URLs (returns 400)
- Airbnb URLs without listing IDs (e.g., search pages)
- Malformed or incomplete URLs
- Experience URLs instead of listing URLs
curl -X GET "https://api.stayapi.com/v1/airbnb/listing/extract-id?url=https://www.airbnb.com/rooms/22120898" \ -H "x-api-key: YOUR_API_KEY"
const airbnbUrl = "https://www.airbnb.com/rooms/22120898?guests=2"; const response = await fetch( `https://api.stayapi.com/v1/airbnb/listing/extract-id?url=${encodeURIComponent(airbnbUrl)}`, { headers: { "x-api-key": "YOUR_API_KEY" } } ); const data = await response.json(); console.log(`Listing ID: ${data.listing_id}`); console.log(`Encoded ID: ${data.encoded_id}`); // Use the extracted ID with other endpoints const reviewsUrl = `https://api.stayapi.com/v1/airbnb/listing/reviews/${data.listing_id}`; const reviewsResponse = await fetch(reviewsUrl, { headers: { "x-api-key": "YOUR_API_KEY" } });
import requests # Extract ID from any Airbnb URL airbnb_url = "https://www.airbnb.com/rooms/22120898" url = "https://api.stayapi.com/v1/airbnb/listing/extract-id" params = {"url": airbnb_url} headers = {"x-api-key": "YOUR_API_KEY"} response = requests.get(url, params=params, headers=headers) data = response.json() print(f"Listing ID: {data['listing_id']}") print(f"Encoded ID: {data['encoded_id']}") # Use the extracted ID with other endpoints listing_id = data["listing_id"] reviews_url = f"https://api.stayapi.com/v1/airbnb/listing/reviews/{listing_id}" reviews = requests.get(reviews_url, headers=headers)
<?php $airbnbUrl = "https://www.airbnb.com/rooms/22120898"; $url = "https://api.stayapi.com/v1/airbnb/listing/extract-id"; $params = http_build_query(["url" => $airbnbUrl]); $ch = curl_init($url . "?" . $params); curl_setopt($ch, CURLOPT_HTTPHEADER, ["x-api-key: YOUR_API_KEY"]); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch); $data = json_decode($response, true); curl_close($ch); echo "Listing ID: " . $data["listing_id"] . "\n"; echo "Encoded ID: " . $data["encoded_id"] . "\n"; // Use the extracted ID with other endpoints $listingId = $data["listing_id"]; $reviewsUrl = "https://api.stayapi.com/v1/airbnb/listing/reviews/" . $listingId; ?>
require "net/http" require "json" require "uri" airbnb_url = "https://www.airbnb.com/rooms/22120898" uri = URI("https://api.stayapi.com/v1/airbnb/listing/extract-id") uri.query = URI.encode_www_form({ url: airbnb_url }) http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true request = Net::HTTP::Get.new(uri) request["x-api-key"] = "YOUR_API_KEY" response = http.request(request) data = JSON.parse(response.body) puts "Listing ID: \#{data['listing_id']}" puts "Encoded ID: \#{data['encoded_id']}" # Use the extracted ID with other endpoints listing_id = data["listing_id"] reviews_url = "https://api.stayapi.com/v1/airbnb/listing/reviews/\#{listing_id}"
{ "listing_id": 22120898, "url": "https://www.airbnb.com/rooms/22120898?check_in=2025-10-31", "encoded_id": "U3RheUxpc3Rpbmc6MjIxMjA4OTg=" }
{ "detail": "Could not extract listing ID from URL. Make sure it's a valid Airbnb URL." }