Airbnb Scraper & API avatar

Airbnb Scraper & API

Pricing

from $1.39 / 1,000 listings

Go to Apify Store
Airbnb Scraper & API

Airbnb Scraper & API

Scrape Airbnb listings and prices by location: title, nightly and total price, rating breakdown, amenities, host, house rules, coordinates, photos, and availability calendars. Export JSON, CSV, Excel.

Pricing

from $1.39 / 1,000 listings

Rating

0.0

(0)

Developer

ParseBird

ParseBird

Maintained by Community

Actor stats

1

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

Airbnb Scraper & API

Extract Airbnb listings and live prices by city, neighborhood, or country. Airbnb Scraper & API returns clean, structured JSON for every listing — nightly and total price, rating breakdown, amenities, host details, house rules, coordinates, photos, and an optional day-by-day availability calendar.

Search any location worldwide, filter by dates, price, beds, bedrooms, and bathrooms, and get every listing enriched with the same data Airbnb's own listing page shows — plus an exact quote for your dates and up to 12 months of availability, in over 50 structured fields per listing.

Copy to your AI assistant

Copy this block into ChatGPT, Claude, Cursor, or any LLM to start using this actor.

Airbnb Scraper & API (parsebird/airbnb-scraper) scrapes Airbnb listings and prices by location. Inputs: locationQueries (array of strings, e.g. "London" or "Paris, France"), startUrls (array — Airbnb search or /rooms/ URLs, alternative to locationQueries), checkIn/checkOut (YYYY-MM-DD, search prices use this exact stay), adults/children/infants/pets (integers), priceMin/priceMax (per-night bounds), minBeds/minBedrooms/minBathrooms, locale (default en-US), currency (default USD), skipDetailPages (boolean, default falsetrue = faster search-only run with less data per listing), calendarMonths (0-12, default 0 — adds a per-day `calendar` field), maxListings (0 = unlimited), maxPricePerNight (default 10000 — used to split a busy location into price ranges past Airbnb's ~270-result cap), maxRequestsPerCrawl (0 = unlimited), proxyConfiguration (residential proxies required, set by default). Output per listing: id, title, url, androidLink/iosLink, locale, language, nightlyPrice, totalPrice, currency, ratingScore, reviewCount, price{label,qualifier,price,originalPrice,breakDown}, coordinates{latitude,longitude}, roomType, personCapacity, isSuperHost; with detail pages also description, seoTitle, rating{cleanliness,accuracy,checking,communication,location,value}, host{name,isSuperHost,profileImage,highlights,about}, amenities[], houseRules{general,cancellationPolicy}, highlights[], images[], locationDescriptions[], coHosts[]; with calendarMonths>0 also calendar[] (date, available, availableForCheckin/Checkout, minNights, maxNights, price). Pricing: pay-per-event, $0.00199 per listing on Free (down to $0.00139 on Gold) plus an extra $0.00249 per listing when detail pages are fetched (down to $0.00219 on Gold). API: https://apify.com/parsebird/airbnb-scraper/api - Token: https://console.apify.com/account/integrations

What is Airbnb Scraper & API?

Airbnb Scraper & API is an Apify Actor that extracts listing and pricing data from Airbnb for any location, without Airbnb's own API. Give it a city — "London", "Paris, France", "Tokyo, Japan" — and it returns every matching listing as structured JSON: price, rating, amenities, host, house rules, coordinates, photos, and more.

It works as a practical Airbnb API alternative: search by location and dates like a guest would, or paste a listing URL to pull a single property's full detail page. Multiple locations run in a single job, and results export straight to JSON, CSV, or Excel.

What can Airbnb Scraper & API do?

  • 🌍 Location search — search any city, neighborhood, or country; run several locations in one job.
  • 📅 Date-aware pricing — set checkIn/checkOut and get the exact nightly and total price for that stay, with a full price breakdown (base price, cleaning fee, service fee, taxes).
  • 🎚️ Filters — price range, minimum beds, bedrooms, bathrooms, and guest counts (adults, children, infants, pets).
  • 🔗 URL mode — paste a pre-built Airbnb search URL or a direct /rooms/ link instead of a location.
  • 🧾 Full listing detail — description, amenities by category, host profile, house rules, highlights, location notes, and photos, pulled from the listing's own detail page.
  • Rating breakdown — overall guest satisfaction plus cleanliness, accuracy, check-in, communication, location, and value sub-ratings.
  • 📆 Availability calendars — up to 12 months of day-by-day availability per listing (calendarMonths).
  • Fast modeskipDetailPages returns search-level data only, for the cheapest and quickest run.
  • 🌐 Locale & currency — get results in the language and currency you need.
  • 🚀 Runs on Apify with scheduling, API access, integrations, and export to JSON, CSV, Excel, HTML, or XML.

What data can you extract from Airbnb?

FieldDescription
id / urlAirbnb listing ID and canonical URL
titleListing title
nightlyPrice / totalPrice / currencyFlat numeric prices, ready for sorting/BI
priceOriginal nested price object, incl. breakDown for a dated stay
ratingScore / reviewCountFlat rating fields
ratingFull breakdown: cleanliness, accuracy, check-in, communication, location, value
coordinatesLatitude / longitude
roomType / personCapacity / isSuperHostListing basics
descriptionFull listing description (detail pages)
amenitiesGrouped amenities with availability flags (detail pages)
hostName, Superhost status, profile image, highlights, about (detail pages)
houseRulesCheck-in/out rules, cancellation policy (detail pages)
imagesPhoto captions and URLs (detail pages)
calendarPer-day availability, min/max nights, and price when calendarMonths > 0

How to scrape Airbnb listings and prices

  1. Open Airbnb Scraper & API on Apify Store and click Try for free.
  2. Add one or more Location queries, e.g. "Barcelona, Spain".
  3. (Optional) Set Check-in / Check-out dates, guest counts, and price/bed filters.
  4. (Optional) Turn on Skip detail pages for a fast, cheap search-only run, or set Calendar months for availability data.
  5. Click Start, then open the Dataset tab. Export as JSON, CSV, Excel, HTML, or XML.
{
"locationQueries": ["London"]
}

Input example — targeted search with dates

{
"locationQueries": ["Barcelona, Spain"],
"checkIn": "2026-06-15",
"checkOut": "2026-06-22",
"adults": 2,
"currency": "EUR",
"locale": "en-US"
}

Input example — multiple locations

{
"locationQueries": ["Paris, France", "Rome, Italy", "Berlin, Germany"]
}

Input example — fast search-only mode

{
"locationQueries": ["Tokyo, Japan"],
"skipDetailPages": true
}

Output example

Full listing (with detail pages)

{
"id": "788405891732745420",
"title": "Recanto da Lima",
"url": "https://www.airbnb.com/rooms/788405891732745420?adults=1&locale=en-US&currency=USD",
"nightlyPrice": 263.52,
"totalPrice": 1510,
"currency": "USD",
"ratingScore": 4.98,
"reviewCount": 129,
"price": {
"label": "$1,510 for 5 nights",
"price": "$1,510",
"breakDown": {
"basePrice": { "description": "5 nights x $263.52", "price": "$1,318" },
"cleaningFee": { "description": "Cleaning fee", "price": "$72" },
"serviceFee": { "description": "Airbnb service fee", "price": "$120" },
"total": { "description": "Total", "price": "$1,510" }
}
},
"coordinates": { "latitude": 38.546, "longitude": -8.84326 },
"roomType": "Private room in home",
"isSuperHost": true,
"personCapacity": 3,
"rating": { "guestSatisfaction": 4.98, "cleanliness": 5, "accuracy": 5, "location": 4.8, "value": 4.9 },
"host": { "name": "Cláudia", "isSuperHost": true, "highlights": ["Superhost", "128 reviews"] },
"amenities": [{ "title": "Bathroom", "values": [{ "title": "Bathtub", "available": true }] }],
"images": [{ "caption": "Photo 1", "imageUrl": "https://a0.muscache.com/im/pictures/hosting/…jpeg" }]
}

Search-only (skipDetailPages: true) returns the same core fields — id, title, url, nightlyPrice, currency, ratingScore, reviewCount, price, coordinates, roomType, rating, thumbnail — without the description, amenities, host, or house-rules detail.

Download the dataset in JSON, CSV, Excel, HTML, or XML from the Dataset tab.

Use cases

  • 🏡 Market research — analyze pricing, availability, and amenities across a city or neighborhood.
  • 💰 Revenue management — benchmark nightly rates and occupancy patterns for comparable listings.
  • 🧳 Travel apps & meta-search — power a search or comparison tool with live Airbnb data.
  • 📊 Investment analysis — evaluate short-term rental yield potential by location.
  • 📆 Availability tracking — schedule recurring runs with calendarMonths to monitor booking patterns.
  • 🤖 AI & data pipelines — feed listing data into LLM agents through the Apify MCP server.

How it works

  1. The Actor resolves each location query (or Start URL) to an Airbnb search and loads the first page of results.
  2. It paginates through results via Airbnb's own search API, automatically splitting the price range into sub-searches when a location has more listings than a single search can page through.
  3. Every listing is normalized into flat fields (nightlyPrice, ratingScore, etc.) alongside the original nested objects.
  4. Unless skipDetailPages is set, each listing's detail page is fetched for description, amenities, host, house rules, and rating breakdown.
  5. If calendarMonths is set, up to 12 months of day-by-day availability are fetched per listing.
  6. Each listing is billed as one pay-per-event result, plus an extra event when it was detail-enriched.

How much does it cost to scrape Airbnb?

Airbnb Scraper & API uses pay-per-event pricing with two events.

EventWhen it firesFreeBronzeSilverGold
ListingEvery listing$1.99 / 1k$1.79 / 1k$1.59 / 1k$1.39 / 1k
DetailExtra, per detail-enriched listing$2.49 / 1k$2.39 / 1k$2.29 / 1k$2.19 / 1k

A search-only run of 1,000 listings costs about $1.99 on the Free plan. The same run with detail pages costs about $4.48 per 1,000. Apify platform usage (compute and residential proxy) is billed separately. See the Apify pricing page.

API usage examples

Run Airbnb Scraper & API with the Apify API.

Python

from apify_client import ApifyClient
client = ApifyClient("<YOUR_API_TOKEN>")
run_input = {
"locationQueries": ["Lisbon, Portugal"],
"checkIn": "2026-07-01",
"checkOut": "2026-07-05",
"adults": 2,
"maxListings": 50,
}
run = client.actor("parsebird/airbnb-scraper").call(run_input=run_input)
for listing in client.dataset(run["defaultDatasetId"]).iterate_items():
print(listing["title"], "-", listing.get("totalPrice"), listing.get("currency"))

JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_API_TOKEN>' });
const run = await client.actor('parsebird/airbnb-scraper').call({
locationQueries: ['London'],
skipDetailPages: true,
maxListings: 100,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.map((l) => `${l.title}${l.nightlyPrice} ${l.currency}`));

Connect finished datasets to Google Sheets, Slack, Zapier, Make, webhooks, or your own pipeline.

Airbnb Scraper & API reads only publicly visible data — the same listing and search information any visitor sees on airbnb.com. It does not log in, book, or access private guest/host account data. You should still review Airbnb's Terms of Service and make sure your use case complies with applicable laws in your jurisdiction. For background, read Apify's guide: Is web scraping legal?.

FAQ

Do I need an Airbnb account or API key? No. The Actor uses Airbnb's public website data — no login, API key, or booking.

Why does it use residential proxies? Airbnb rate-limits and blocks datacenter traffic. Residential proxies (the default) get through reliably.

How do I get an exact price for my dates? Set checkIn and checkOut. The listing-level price object and totalPrice/nightlyPrice fields then reflect that exact stay. If a listing isn't available for those dates, isAvailable is false and the dated price fields are omitted — the search-level price still shows.

What's the difference between skipDetailPages: true and false? false (default) fetches each listing's own page for description, amenities, host, house rules, and rating breakdown — richer data, one extra request (and pay-per-event charge) per listing. true returns only what Airbnb's search results already include — faster and cheaper.

How do I get more than ~270 results for one city? The Actor automatically splits a busy location into price-range sub-searches once it hits Airbnb's page cap. Increase maxPricePerNight if you're scraping a luxury market where the default $10,000 ceiling is too low.

Can I scrape a single listing directly? Yes. Put its URL (https://www.airbnb.com/rooms/<id>) in startUrls.

Can I schedule recurring runs? Yes. Use Apify schedules to track pricing or availability for a location over time.

Can I use this as an Airbnb API? Yes. Call the Actor through the Apify API, use webhooks, or connect it to AI assistants with the Apify MCP server.

Something looks wrong or missing. Report it on the Issues tab and it will be looked at quickly.