To get Airbnb listing and price data programmatically, use Scavio's Airbnb API. POST /api/v1/airbnb/search with a location and check_in/check_out dates returns 18 listings a page, each with the stay total, the nightly_rate, the price_items ledger (nights, discounts with the original price, taxes and resort fees where Airbnb shows them), rating, review count, room counts and coordinates. POST /api/v1/airbnb/listing adds the amenities, host profile and category ratings. Each call costs 1 credit, about $0.002 on the Growth plan billed yearly.
Airbnb's own APIs are for approved software partners managing their hosts' listings, availability and reservations, so they cannot search other hosts' listings or read their prices. The public search page can, and that is what these two calls return as JSON.
Step 1: Search a place for your dates
curl -s https://api.scavio.dev/api/v1/airbnb/search \
-H "Authorization: Bearer $SCAVIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"location": "Austin, TX", "check_in": "2026-11-17", "check_out": "2026-11-19", "adults": 2, "currency": "USD"}'On October 27, 2026 this returned 18 listings in 1.2 seconds, with resolved_location "Austin, TX", nights 2, dates_are_defaulted false, page_count 15 and a next_cursor for the next page. One row, as captured (photos trimmed to one):
{
"pos": 3,
"listing_id": "1880094",
"url": "https://www.airbnb.com/rooms/1880094",
"name": "Eastside Guest Studio near Lake",
"title": "Guesthouse in East Austin",
"rating": 4.94,
"review_count": 1004,
"beds": 2,
"baths": 1,
"price": {
"total": 193,
"original_total": 211,
"price_type": "TOTAL_ONLY",
"qualifier": "for 2 nights",
"currency": "USD",
"is_discounted": true,
"nightly_rate": 96.5,
"per_night": 96.5,
"price_items": [
{
"label": "2 nights x $96.50",
"amount": 193,
"amount_display": "$193.00",
"original_amount": 211,
"kind": "discounted"
}
],
"disclaimer": "Jeany recently lowered the price for these dates (from the average rate for the past 60 nights).",
"label": "$193 for 2 nights, originally $211"
},
"badges": ["Guest favorite"],
"is_guest_favorite": true,
"coordinates": { "latitude": 30.2518, "longitude": -97.72129 },
"images": ["https://a0.muscache.com/im/pictures/airflow/Hosting-1880094/original/f5bc94f3-4d93-4dde-ad98-b6dd32a878d4.jpg"]
}Send the dates every time. Without them the API defaults to a 5-night stay 30 days out and sets dates_are_defaulted to true, and the price answers a question you did not ask.
Step 2: Read the price ledger
total is what Airbnb shows for the whole stay and price_items is how it gets there. A host's special offer arrives as its own line, as on this East Austin carriage house:
{
"total": 248.76,
"original_total": 287,
"nightly_rate": 143.1,
"per_night": 124.38,
"price_items": [
{ "label": "2 nights x $143.10", "amount": 286.2, "kind": "default" },
{ "label": "Special offer", "amount": -37.44, "kind": "discounted" },
{ "label": "Price after discount", "amount": 248.76, "kind": "highlight" }
]
}nightly_rate is the rate before the offer and per_night is the stay total divided by the nights. Some result pages return price_type "REGULATED_TOTAL", where the total includes taxes and the ledger lists them. A New Orleans guest suite for November 20-22:
{
"total": 396.27,
"price_type": "REGULATED_TOTAL",
"qualifier": "total",
"nightly_rate": 159,
"per_night": 198.14,
"price_items": [
{ "label": "2 nights x $159.00", "amount": 318, "kind": "default" },
{ "label": "Taxes", "amount": 78.27, "kind": "default" },
{ "label": "Total", "amount": 396.27, "kind": "highlight" }
]
}Here per_night includes the taxes and nightly_rate does not, so compare listings on nightly_rate or on the ledger without the tax line. Hotel rooms listed on Airbnb can add a "Resort fee" line: across our 332 captured rows, 12 did, from $20 to $90.40 for two nights.
Step 3: Filter by ZIP, room type and price, and page
curl -s https://api.scavio.dev/api/v1/airbnb/search \
-H "Authorization: Bearer $SCAVIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"location": "70116", "check_in": "2026-11-20", "check_out": "2026-11-22", "adults": 2, "room_type": "entire_home", "currency": "USD"}'ZIP 70116 resolved to New Orleans with place_precision "zip", and all 18 entire homes came back priced for the weekend, from $145 to $550.50 a night before taxes (median $231). Other filters are min_price and max_price (for the whole stay, not per night), min_bedrooms, min_beds, min_bathrooms, amenities, superhost, instant_book, guest_favorite and free_cancellation. To page, send the response's next_cursor as cursor, or a page number, but not both; 15 pages of 18 cover about 270 listings per search.
Step 4: Get the listing detail
curl -s https://api.scavio.dev/api/v1/airbnb/listing \
-H "Authorization: Bearer $SCAVIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"listing_id": "1880094"}'The listing call returned in 3.0 seconds with the description, property and room type, sleeping arrangements, photo tour, 39 amenities in 10 groups plus the ones marked not included, and the rating summary. Trimmed:
{
"listing_id": "1880094",
"name": "Eastside Guest Studio near Lake",
"headline": "Entire guesthouse in Austin, Texas",
"property_type": "GUESTHOUSE",
"room_type": "Entire home/apt",
"person_capacity": 3,
"overview": ["3 guests", "Studio", "2 beds", "1 bath"],
"rating": 4.94,
"review_count": 1004,
"category_ratings": [
{ "category": "CLEANLINESS", "label": "Cleanliness", "rating": 5 },
{ "category": "ACCURACY", "label": "Accuracy", "rating": 5 },
{ "category": "CHECKIN", "label": "Check-in", "rating": 5 },
{ "category": "COMMUNICATION", "label": "Communication", "rating": 5 },
{ "category": "LOCATION", "label": "Location", "rating": 4.9 },
{ "category": "VALUE", "label": "Value", "rating": 4.9 }
],
"host": {
"name": "Jeany",
"title": "Superhost",
"is_superhost": true,
"is_verified": true,
"rating": 4.94,
"review_count": 1020,
"years_hosting": 14,
"response_rate": "Response rate: 100%",
"response_time": "Responds within an hour"
}
}The listing carries no price under any parameters. Take the price from search and join on listing_id. You can also pass a full /rooms/ URL as listing_id.
Step 5: Compare dates
Run the same search for a second window and match rows on listing_id. We did this for five cities on October 27 for November 17-19 (Tuesday to Thursday) and November 20-22 (Friday to Sunday). Every listing that appeared in both cost more on the weekend, by 25% to 113% a night; one Austin back house went from $125.50 to $233.50. The median nightly price in New Orleans rose from $122 to $238. The chart and the full comparison are in the best Airbnb listing and price APIs.
The Airbnb endpoints
| Endpoint | What it returns | Credits |
|---|---|---|
/api/v1/airbnb/search | 18 listings a page with stay total, nightly rate, price ledger, rating, room counts, badges and coordinates | 1 |
/api/v1/airbnb/listing | Description, property type, capacity, amenities, host profile, photos and the rating summary with category ratings | 1 |
Prices come only from search, and the rating summary comes from listing. Every successful call is 1 credit, with no surcharge for filters or pages.
Getting started
- Sign up at dashboard.scavio.dev/sign-up: 50 free credits, no card required.
- Copy your API key from the dashboard.
- Send a POST to
/api/v1/airbnb/searchwith a location,check_inandcheck_out, and your key in theAuthorizationheader.
Try the Airbnb API free in the playground first, or call it from Claude and other agents through the MCP server.
Reference: Airbnb API overview · search docs · listing docs · Airbnb API without partner access
Frequently asked questions
Can I get Airbnb prices through an API?
Yes, from search. Scavio's /api/v1/airbnb/search takes a location with check_in and check_out and returns each listing's stay total, nightly rate and the price_items ledger: the nights, any discount with the original price, and taxes or resort fees where Airbnb itemises them. Airbnb itself offers no public API for reading other hosts' prices.
Why does the same Airbnb listing show different prices?
Because hosts price each night separately and Airbnb applies discounts per stay. In our October 27, 2026 test, every listing that appeared in both a Tuesday-to-Thursday and a Friday-to-Sunday search in November cost more on the weekend, by 25% to 113% a night. Always send the dates you care about.
Does the Airbnb listing endpoint return a price?
No. Airbnb's listing page carries no nightly rate, so Scavio's /api/v1/airbnb/listing returns the description, amenities, host profile and rating summary, and the price comes from search for the dates you choose. Join the two on listing_id.
How much does Airbnb data cost with Scavio?
Every Airbnb call costs 1 credit: about $0.002 on the Growth plan billed yearly and $0.0043 on the $30 monthly Project plan. A search returns up to 18 listings, so pricing a whole city of 15 result pages costs 15 credits. New accounts get 50 free credits with no card.
Can I search Airbnb by ZIP code?
Yes. Pass a ZIP as the location. On October 27, 2026, ZIP 70116 resolved to New Orleans with place_precision set to zip, and the response includes the coordinates and map bounds of the area searched, so you can confirm what was covered.