Get Listing Detail
curl --request GET \
--url https://scrapebadger.com/v1/airbnb/listings/{room_id}import requests
url = "https://scrapebadger.com/v1/airbnb/listings/{room_id}"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://scrapebadger.com/v1/airbnb/listings/{room_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://scrapebadger.com/v1/airbnb/listings/{room_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://scrapebadger.com/v1/airbnb/listings/{room_id}"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://scrapebadger.com/v1/airbnb/listings/{room_id}")
.asString();require 'uri'
require 'net/http'
url = URI("https://scrapebadger.com/v1/airbnb/listings/{room_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"room_id": "<string>",
"title": "<string>",
"summary": "<string>",
"description": "<string>",
"room_type": "<string>",
"person_capacity": 123,
"latitude": 123,
"longitude": 123,
"address": "<string>",
"rating": 123,
"review_count": 123,
"rating_breakdown": {
"accuracy": 123,
"checkin": 123,
"cleanliness": 123,
"communication": 123,
"location": 123,
"value": 123
},
"is_superhost": true,
"highlights": [
"<string>"
],
"amenities": [
{
"id": "<string>",
"title": "<string>",
"subtitle": "<string>",
"available": true,
"group": "<string>"
}
],
"house_rules": [
"<string>"
],
"cancellation_policy": "<string>",
"host": {
"name": "<string>",
"is_superhost": true,
"about": "<string>",
"highlights": [
"<string>"
],
"response_time": "<string>",
"profile_image": "<string>"
},
"images": [
"<string>"
],
"listing_url": "<string>"
}Endpoints
Get Listing Detail
Full Airbnb listing detail — description, capacity, GPS, rating breakdown, amenities, house rules, cancellation policy, host profile and all photos.
GET
/
v1
/
airbnb
/
listings
/
{room_id}
Get Listing Detail
curl --request GET \
--url https://scrapebadger.com/v1/airbnb/listings/{room_id}import requests
url = "https://scrapebadger.com/v1/airbnb/listings/{room_id}"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://scrapebadger.com/v1/airbnb/listings/{room_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://scrapebadger.com/v1/airbnb/listings/{room_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://scrapebadger.com/v1/airbnb/listings/{room_id}"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://scrapebadger.com/v1/airbnb/listings/{room_id}")
.asString();require 'uri'
require 'net/http'
url = URI("https://scrapebadger.com/v1/airbnb/listings/{room_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"room_id": "<string>",
"title": "<string>",
"summary": "<string>",
"description": "<string>",
"room_type": "<string>",
"person_capacity": 123,
"latitude": 123,
"longitude": 123,
"address": "<string>",
"rating": 123,
"review_count": 123,
"rating_breakdown": {
"accuracy": 123,
"checkin": 123,
"cleanliness": 123,
"communication": 123,
"location": 123,
"value": 123
},
"is_superhost": true,
"highlights": [
"<string>"
],
"amenities": [
{
"id": "<string>",
"title": "<string>",
"subtitle": "<string>",
"available": true,
"group": "<string>"
}
],
"house_rules": [
"<string>"
],
"cancellation_policy": "<string>",
"host": {
"name": "<string>",
"is_superhost": true,
"about": "<string>",
"highlights": [
"<string>"
],
"response_time": "<string>",
"profile_image": "<string>"
},
"images": [
"<string>"
],
"listing_url": "<string>"
}Fetch a single listing’s complete detail by its
room_id (from
/search or an Airbnb URL such as
airbnb.com/rooms/48291736). The response carries everything the search card
has, plus the full description, the six-category rating breakdown, every
amenity, the house rules, and the host profile.
Path Parameters
string
required
Airbnb room id, e.g.
48291736.Query Parameters
integer
default:"1"
Number of adults — affects the price context returned by Airbnb.
string
default:"USD"
Currency for prices, e.g.
EUR, GBP.string
default:"en"
Locale for text, e.g.
fr, es.Response
string
Airbnb room id.
string
Listing headline.
string
One-line summary, e.g.
Rental unit in Lisbon · ★4.8 · 1 bedroom · 1 bed · 1 bath.string
Full listing description.
string
e.g.
Entire home/apt.integer
Maximum number of guests.
number
number
string
Approximate address as shown by Airbnb.
number
Average rating.
integer
Number of reviews.
boolean
Host holds Superhost status.
string[]
Listing highlights, e.g.
Self check-in.Amenity[]
string[]
House rules as displayed.
string
Cancellation policy summary.
object
string[]
All listing photo URLs.
string
Canonical listing URL on airbnb.com.
Example
const res = await fetch(
"https://scrapebadger.com/v1/airbnb/listings/48291736?adults=2¤cy=EUR",
{ headers: { "X-API-Key": process.env.SCRAPEBADGER_API_KEY } },
);
const listing = await res.json();
import requests
res = requests.get(
"https://scrapebadger.com/v1/airbnb/listings/48291736",
headers={"X-API-Key": "YOUR_API_KEY"},
params={"adults": 2, "currency": "EUR"},
)
listing = res.json()
curl "https://scrapebadger.com/v1/airbnb/listings/48291736?adults=2¤cy=EUR" \
-H "X-API-Key: YOUR_API_KEY"
Response
{
"room_id": "48291736",
"title": "Sunlit apartment in Alfama with river view",
"summary": "Rental unit in Lisbon · ★4.8 · 1 bedroom · 1 bed · 1 bath",
"description": "A bright top-floor apartment in the heart of Alfama, two minutes from the Miradouro de Santa Luzia. Original azulejos, a compact but fully equipped kitchen, and a small balcony looking over the Tagus. Trams 12 and 28 stop at the corner.",
"room_type": "Entire home/apt",
"person_capacity": 3,
"latitude": 38.7118,
"longitude": -9.1294,
"address": "Alfama, Lisbon, Portugal",
"rating": 4.83,
"review_count": 214,
"rating_breakdown": {
"accuracy": 4.9,
"checkin": 4.95,
"cleanliness": 4.78,
"communication": 4.97,
"location": 4.88,
"value": 4.62
},
"is_superhost": true,
"highlights": [
"Self check-in",
"Great location",
"Free cancellation for 48 hours"
],
"amenities": [
{
"id": "4",
"title": "Wifi",
"subtitle": "Fast · 220 Mbps",
"available": true,
"group": "Internet and office"
},
{
"id": "8",
"title": "Kitchen",
"subtitle": "Space where guests can cook their own meals",
"available": true,
"group": "Kitchen and dining"
},
{
"id": "41",
"title": "Elevator",
"subtitle": null,
"available": false,
"group": "Accessibility"
}
],
"house_rules": [
"Check-in after 3:00 PM",
"Checkout before 11:00 AM",
"3 guests maximum",
"No smoking",
"No parties or events"
],
"cancellation_policy": "Free cancellation before Sep 7. Cancel before check-in on Sep 12 for a partial refund.",
"host": {
"name": "Inês",
"is_superhost": true,
"about": "Born and raised in Lisbon. I restore old apartments and love pointing guests to the places tourists miss.",
"highlights": [
"Lives in Lisbon, Portugal",
"Speaks Portuguese, English, Spanish"
],
"response_time": "within an hour",
"profile_image": "https://a0.muscache.com/im/pictures/user/9f2a1c-profile.jpg"
},
"images": [
"https://a0.muscache.com/im/pictures/miso/Hosting-48291736/original/2c8f1a44-living.jpeg",
"https://a0.muscache.com/im/pictures/miso/Hosting-48291736/original/8e3b7d19-bedroom.jpeg",
"https://a0.muscache.com/im/pictures/miso/Hosting-48291736/original/b71e0c25-balcony.jpeg"
],
"listing_url": "https://www.airbnb.com/rooms/48291736"
}
Each listing-detail request costs 5 credits. Failed requests are not charged.

