Get Experience Detail
curl --request GET \
--url https://scrapebadger.com/v1/airbnb/experiences/{experience_id}import requests
url = "https://scrapebadger.com/v1/airbnb/experiences/{experience_id}"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://scrapebadger.com/v1/airbnb/experiences/{experience_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/experiences/{experience_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/experiences/{experience_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/experiences/{experience_id}")
.asString();require 'uri'
require 'net/http'
url = URI("https://scrapebadger.com/v1/airbnb/experiences/{experience_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{
"experience_id": "<string>",
"title": "<string>",
"description": "<string>",
"rating": 123,
"review_count": 123,
"is_ticketed": true,
"latitude": 123,
"longitude": 123,
"address": "<string>",
"host_name": "<string>",
"highlights": [
"<string>"
],
"images": [
"<string>"
],
"price": "<string>",
"experience_url": "<string>"
}Endpoints
Get Experience Detail
Full Airbnb Experience detail — description, rating, highlights, host, price, address, GPS and all photos.
GET
/
v1
/
airbnb
/
experiences
/
{experience_id}
Get Experience Detail
curl --request GET \
--url https://scrapebadger.com/v1/airbnb/experiences/{experience_id}import requests
url = "https://scrapebadger.com/v1/airbnb/experiences/{experience_id}"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://scrapebadger.com/v1/airbnb/experiences/{experience_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/experiences/{experience_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/experiences/{experience_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/experiences/{experience_id}")
.asString();require 'uri'
require 'net/http'
url = URI("https://scrapebadger.com/v1/airbnb/experiences/{experience_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{
"experience_id": "<string>",
"title": "<string>",
"description": "<string>",
"rating": 123,
"review_count": 123,
"is_ticketed": true,
"latitude": 123,
"longitude": 123,
"address": "<string>",
"host_name": "<string>",
"highlights": [
"<string>"
],
"images": [
"<string>"
],
"price": "<string>",
"experience_url": "<string>"
}Fetch a single experience’s complete detail by its
experience_id (from
/experiences or an
Airbnb URL such as airbnb.com/experiences/1847362). Guest counts shape the
price context Airbnb returns.
Path Parameters
string
required
Airbnb experience id, e.g.
1847362.Query Parameters
integer
default:"1"
Number of adults.
integer
default:"0"
Number of children.
integer
default:"0"
Number of infants.
string
default:"USD"
Currency for prices, e.g.
EUR, GBP.string
default:"en"
Locale for text, e.g.
fr, es.Response
string
Airbnb experience id.
string
string
Full experience description.
number
Average rating.
integer
Number of reviews.
boolean
Ticketed (Airbnb Original) experience.
number
number
string
Meeting point as shown by Airbnb.
string
Experience host.
string[]
What the experience includes, e.g.
Food and drinks.string[]
All experience photo URLs.
string
Formatted price, e.g.
€45 / person.string
Canonical experience URL on airbnb.com.
Example
const res = await fetch(
"https://scrapebadger.com/v1/airbnb/experiences/1847362?adults=2¤cy=EUR",
{ headers: { "X-API-Key": process.env.SCRAPEBADGER_API_KEY } },
);
const experience = await res.json();
import requests
res = requests.get(
"https://scrapebadger.com/v1/airbnb/experiences/1847362",
headers={"X-API-Key": "YOUR_API_KEY"},
params={"adults": 2, "currency": "EUR"},
)
experience = res.json()
curl "https://scrapebadger.com/v1/airbnb/experiences/1847362?adults=2¤cy=EUR" \
-H "X-API-Key: YOUR_API_KEY"
Response
{
"experience_id": "1847362",
"title": "Trastevere street food walk with a Roman chef",
"description": "We start at the Piazza San Cosimato market, taste supplì at a family fry shop that has been open since 1954, cut through the back lanes for porchetta and pecorino, and finish with a proper maritozzo. I cook in Rome for a living, so expect opinions about carbonara. Vegetarian route available on request.",
"rating": 4.96,
"review_count": 1204,
"is_ticketed": false,
"latitude": 41.8894,
"longitude": 12.4692,
"address": "Piazza San Cosimato, Trastevere, Rome, Italy",
"host_name": "Giulia",
"highlights": [
"Food and drinks included",
"Small group — 8 guests maximum",
"Hosted in Italian and English"
],
"images": [
"https://a0.muscache.com/im/pictures/experience/1847362-supplice.jpeg",
"https://a0.muscache.com/im/pictures/experience/1847362-market.jpeg",
"https://a0.muscache.com/im/pictures/experience/1847362-maritozzo.jpeg"
],
"price": "€45 / person",
"experience_url": "https://www.airbnb.com/experiences/1847362"
}
Each experience-detail request costs 5 credits. Failed requests are not charged.

