Airbnb scraper API: search results and property pages as JSON
Send any Airbnb page URL with recipe=airbnb and get title, name, rating and 5 more fields as JSON. No selectors to write, no proxies to pick.
- 2 page types
- 8 fields
- 5 credits a page · $0.50 per 1,000
- Working · 100% in 7 days
5,000 free credits for 7 days, no card.
curl -G 'https://api.ujeebu.com/scrape' \
-H "ApiKey: $UJEEBU_API_KEY" \
--data-urlencode 'url=https://www.airbnb.com/s/Lisbon--Portugal/homes' \
--data-urlencode 'recipe=airbnb/listing'
{
"result": {
"title": "Loft in São Paulo",
"name": "Top-floor river view with big balcony",
"rating": "4.91 (841)",
"url": "/rooms/3013088?search_mode=regular_search&adu..."
},
"success": true
}
What you get from Airbnb
The fields of each page type and a real sample from our last validation, shortened.
Search and listing pages recipe=airbnb/listing 5 credits a page
| Field | Type | Example |
|---|---|---|
listings | list of 3+ items | |
listings[].title | text | Loft in São Paulo |
listings[].name | text | Top-floor river view with big balcony |
listings[].rating | text | 4.91 (841) |
listings[].url | URL | /rooms/3013088?search_mode=regular_search&adults=1&check_in=2026-11... |
listings[].image | image URL | https://a0.muscache.com/im/pictures/38649045/d8b4aa07_original.jpg?... |
listings[].price_label | text | $135 for 2 nights, originally $207 |
Sample answer, validated 2026-11-03
{
"listings": [
{
"title": "Loft in São Paulo",
"name": "Top-floor river view with big balcony",
"rating": "4.91 (841)",
"url": "/rooms/3013088?search_mode=regular_search&adults=1&check_in=2026-11-04&check_out=2026-11-06&children=0&infants=0&pets=0&source_impression_id=p3_15c5e684-39a2...",
"image": "https://a0.muscache.com/im/pictures/38649045/d8b4aa07_original.jpg?im_w=720",
"price_label": "$135 for 2 nights, originally $207"
},
{
"title": "Apartment in Santa Maria Maior",
"name": "Refurbished with original details in Bairro Alto",
"rating": "4.86 (568)",
"url": "/rooms/25361239?search_mode=regular_search&adults=1&check_in=2026-11-16&check_out=2026-11-18&children=0&infants=0&pets=0&source_impression_id=p3_15c5e684-39a...",
"image": "https://a0.muscache.com/im/pictures/cb352867-afdf-4c52-a246-38ee0f2f0060.jpg?im_w=720",
"price_label": "$223 for 2 nights, originally $270"
}
]
}
Property pages recipe=airbnb/detail 5 credits a page
| Field | Type | Example |
|---|---|---|
product.image | image URL | https://a0.muscache.com/im/pictures/hosting/Hosting-126947418362349... |
product.name | text | Luxury Private Riad Heated Rooftop Pool Hammam A/C |
product.rating | number | 4.99 |
product.review_count | number (as text) | 120 |
location | text | Riad in Marrakesh, Morocco |
Sample answer, validated 2026-11-03
{
"product": {
"image": "https://a0.muscache.com/im/pictures/hosting/Hosting-1269474183623491736/original/c3a1959a-9383-445e-a3d6-b7d1e1fcdca4.jpeg",
"name": "Luxury Private Riad Heated Rooftop Pool Hammam A/C",
"rating": 4.99,
"review_count": "120"
},
"location": "Riad in Marrakesh, Morocco"
}
One call
Send the page URL and the recipe name to the Scrape API. The recipe brings the extract rules and the settings that work on Airbnb (JavaScript rendering and a wait for the content).
curl -G 'https://api.ujeebu.com/scrape' \
-H "ApiKey: $UJEEBU_API_KEY" \
--data-urlencode 'url=https://www.airbnb.com/s/Lisbon--Portugal/homes' \
--data-urlencode 'recipe=airbnb/listing'
import os, requests
r = requests.get(
"https://api.ujeebu.com/scrape",
params={"url": "https://www.airbnb.com/s/Lisbon--Portugal/homes", "recipe": "airbnb/listing"},
headers={"ApiKey": os.environ["UJEEBU_API_KEY"]},
timeout=120,
)
print(r.json()["result"])
const params = new URLSearchParams({
url: "https://www.airbnb.com/s/Lisbon--Portugal/homes",
recipe: "airbnb/listing",
});
const res = await fetch(`https://api.ujeebu.com/scrape?${params}`, {
headers: { ApiKey: process.env.UJEEBU_API_KEY },
});
console.log((await res.json()).result);
The answer is {"result": {...}} with the headers Ujb-Recipe and Ujb-Credits. Other page types: recipe=airbnb/detail, or recipe=airbnb and the API picks the page type from the URL. Your own parameters always win over the recipe.
Search Airbnb with parameters
Fill in the parameters and we build the Airbnb search URL. The Playground and the Request builder do it for you.
| Parameter | Type | Values |
|---|---|---|
location required | string | Place as you would type it: "Lisbon, Portugal" or "Austin, TX". |
adults | int | 1 to 16 |
Works today: the built URL with recipe=airbnb/listing (location=Lisbon, Portugal)
GET https://api.ujeebu.com/scrape?url=https%3A%2F%2Fwww.airbnb.com%2Fs%2FLisbon--Portugal%2Fhomes&recipe=airbnb%2Flisting
A single call with the parameters and no URL is coming to the API; it is not live yet. Search with parameters in the docs
What people build with Airbnb data
Rate monitoring
Track nightly prices for the properties and cities you compare.
Learn moreRatings benchmarks
Compare ratings and review counts across properties.
Learn moreInventory tracking
See which properties are listed for a destination and how that changes.
Price
Same price as the page call, no fee for the recipe. Only successful responses are billed; blocked, timed-out and failed requests are free.
| Page type | Credits a page | Per 1,000, Starter | Per 1,000, Pro |
|---|---|---|---|
| Search results, Property page | 5 | $0.82 | $0.50 |
FAQ
What does the Airbnb recipe return?
JSON with 8 fields from search results (recipe=airbnb/listing) and property page (recipe=airbnb/detail), for example title, name, rating, url, image. The answer is {"result": {...}} with the fields shown on this page.
How much does it cost to scrape Airbnb?
5 credits a page ($0.50 per 1,000 on Pro, $0.82 on Starter). Same price as the page call, no fee for the recipe. Only successful responses are billed; blocked, timed-out and failed requests are free.
Do I need proxies or a headless browser?
No. The recipe brings the settings that work on Airbnb: JavaScript rendering and a wait for the content. Send only the URL and recipe=airbnb/listing.
What happens when Airbnb changes its pages?
We check Airbnb every day and re-validate the recipe on real pages every week, then fix it when the site changes. Until a fix is live, the API answers 404 "the recipe has no working version" instead of empty data, and that call is free.
Can I search Airbnb with parameters?
Yes. Fill in location, adults: we build the Airbnb search URL, and the call is that URL with recipe=airbnb/listing. A single call with the parameters and no URL is coming to the API; it is not live yet.
Related recipes
Booking.comSearch results, Property page · 5 credits
AgodaSearch results · 5 credits
KayakProperty page · 5 credits
PricelineProperty page · 5 credits
LinkedInSearch results, Detail page, Profile · 5 credits
AmazonSearch results, Product page · 5 credits
Logos and names belong to their owners. Ujeebu is not affiliated with Airbnb.
Get Airbnb data as JSON today.
5,000 free credits for 7 days. No card.