Staying API

How to Pull Airbnb Pricing and Availability Data Programmatically

A guide to fetching Airbnb nightly rates, fees, and calendar availability through an API — the dynamic data that powers market analysis, dynamic pricing, and booking tools.

Static listing details — title, photos, amenities — are the easy part of Airbnb data. The data that actually drives products is dynamic: what does this place cost on these dates, and is it even available? Pricing and availability change constantly, vary by date range and length of stay, and are exactly what you need for market analysis, dynamic-pricing tools, competitor tracking, and booking flows.

This guide shows how to pull both programmatically, without rendering a calendar widget in a headless browser.

Why pricing and availability are harder than the rest

On Airbnb, a listing’s nightly rate is not a single number. It depends on:

Availability is just as date-shaped: a place open next week may be booked solid next month. Any tool that treats price or availability as a static field will be wrong most of the time. You have to query for a date range.

Fetching availability

Availability lives on its own sub-resource. Request it for a listing to get the booking calendar:

Terminal window
curl https://api.stayingapi.com/v1/stays/1135700964697993602/availability \
-H "Authorization: Bearer sk_live_..."

This returns the open and blocked dates for the listing’s calendar, so you can tell at a glance whether a stay is bookable in the window you care about. It is the endpoint to poll when you are tracking occupancy or watching for openings.

Fetching pricing

Pricing is a separate sub-resource for the same reason — it is dynamic and you want to pay for it only when you need it:

Terminal window
curl https://api.stayingapi.com/v1/stays/1135700964697993602/pricing \
-H "Authorization: Bearer sk_live_..."

You get the nightly rate, currency, and fee breakdown in a normalized shape. Pair it with availability and you have everything a booking or analytics tool needs for a given listing. Both sub-resources are documented in full on the Stays reference.

Pricing across a whole market

Single-listing calls are perfect for tracking known properties. For market-level analysis you usually want pricing across every comparable listing in an area, which is where search comes in. A search with dates returns priced results for the whole result set:

Terminal window
curl -X POST https://api.stayingapi.com/v1/search \
-H "Authorization: Bearer sk_live_..." \
-H "content-type: application/json" \
-d '{
"location": "Barcelona, Spain",
"checkIn": "2026-08-10",
"checkOut": "2026-08-15",
"priceMin": 80,
"priceMax": 400
}'

From there, page through results with the returned next_page_token, or use POST /v1/search/with-details to pull each result’s full detail in the same workflow. The complete filter list is in the Search reference.

Doing it at scale

If you are pricing thousands of listings on a schedule — say, a nightly refresh of a watchlist — fire them as a batch instead of looping single calls. Batch lookups settle asynchronously and notify you via webhook when the run completes, so you are not holding open thousands of connections. That pattern keeps a dynamic-pricing or market-tracking pipeline efficient and predictable.

A few practical tips for dynamic data:

Cost

Availability and pricing are 1 credit each per listing, and a search page is a flat rate covering up to 50 priced results — so a market sweep is cheap and easy to forecast. The worked examples on the pricing page show how a typical refresh job adds up.

Where to go next

Want to pull a live price right now? Get 100 free credits and run your first availability and pricing calls in minutes.

Build it on real Airbnb data

Pull listings, photos, host info, reviews, availability, and pricing from one REST endpoint. 100 free credits, no credit card.