Skip to the content.

Airbnb Scraper

Airbnb listings for any city and dates: prices, discounts, ratings, rooms and coordinates. From $0.003 / listing, pay per result, no browser, no login.

▶ Run it on Apify · Python example · All scrapers

Get Airbnb search results as clean JSON, CSV or Excel: total price for your dates, original price and discounts, nightly rate, rating and number of reviews, bedrooms and beds, Guest favorite badge, GPS coordinates and photos — for any city, neighborhood or Airbnb search URL. No headless browser, so 100 listings take about 10 seconds.

✅ Real prices for your dates: total, original price, nightly rate, full breakdown (discounts, taxes) ✅ Discount detection: early-booking, weekly, special offers — as negative lines ✅ Rating and review count, Guest favorite badge, new listings flagged ✅ Bedrooms, beds and baths ✅ Latitude / longitude for maps and distance analysis ✅ Several cities per run, or paste your own airbnb.com/s/… search URLs with filters ✅ Filters: dates, guests, type of place, price range, bedrooms, currency ✅ No host personal data collected — listings only


🚀 Why this Airbnb scraper is different

  This Actor Typical Airbnb scrapers
Speed ~100 listings in 10 s, no browser Minutes with headless Chrome
Price $0.003 per listing $0.004+ per listing
Price breakdown and discounts Yes Total only
Your own search URLs Yes Rarely
Past dates in saved tasks Moved automatically, never fails Run fails
Host personal data Never collected Often collected

💡 Use cases


🛠️ How to use it (3 steps)

  1. Enter cities (“Lisbon, Portugal”) or paste Airbnb search URLs.
  2. Set dates, guests and optional filters (type, price, bedrooms).
  3. Click Start and download listings as CSV, Excel or JSON, or use the API.

📥 Input example

{
  "locations": ["Lisbon, Portugal", "Barcelona, Spain", "https://www.airbnb.com/s/Porto--Portugal/homes"],
  "checkIn": "2026-12-10",
  "checkOut": "2026-12-14",
  "adults": 2,
  "roomType": "entire",
  "currency": "EUR",
  "maxListingsPerLocation": 100
}

📤 Output example (real listing)

{
  "listingId": "41867634",
  "url": "https://www.airbnb.com/rooms/41867634?check_in=2026-12-10&check_out=2026-12-14",
  "location": "Lisbon, Portugal",
  "name": "Perfect 1 bedroom with Terrace and AC",
  "title": "Apartment in Lisbon",
  "latitude": 38.7129,
  "longitude": -9.1426,
  "rating": 4.84,
  "reviewsCount": 315,
  "nights": 4,
  "currency": "EUR",
  "totalPrice": 420,
  "originalTotalPrice": 508,
  "pricePerNight": 126.95,
  "priceLabel": "€420 for 4 nights, originally €508",
  "priceDetails": [
    { "label": "4 nights x €126.95", "amount": 507.8 },
    { "label": "Early booking discount", "amount": -88.56 },
    { "label": "Price after discount", "amount": 419.24 }
  ],
  "rooms": ["1 bedroom", "1 king bed", "1 bath"],
  "badges": ["Guest favorite"],
  "isGuestFavorite": true,
  "photos": ["https://a0.muscache.com/im/pictures/cfc0b3ad-0700-464f-8d08-17166a112daf.jpg"]
}

pricePerNight is Airbnb’s nightly rate before discounts and taxes; totalPrice is what the guest pays for the stay.


⚙️ Input parameters

Field Type Default Description
locations array ["Lisbon, Portugal"] Cities, neighborhoods or regions (“Lisbon, Portugal”) or full airbnb.com/s/… search URLs with your filters.
checkIn string — YYYY-MM-DD. Empty or past = 30 days from today.
checkOut string — YYYY-MM-DD. Empty = check-in + nights.
nights integer 3 Length of the stay when check-out is empty.
adults integer 2 Guests aged 13+.
children integer 0 Guests aged 2-12.
roomType string "any" Filter by type. Values: any, entire, private, hotel, shared.
minPrice integer — In the chosen currency.
maxPrice integer — In the chosen currency.
minBedrooms integer — Bedrooms at least.
currency string "EUR" EUR, USD, GBP, BRL…
maxListingsPerLocation integer 50 Airbnb shows up to 270 listings per search (15 pages). Use narrower areas or price ranges for more.
proxyConfiguration, maxRetries object, integer Apify Proxy, auto Proxy and retries; the defaults work for most runs.

📋 Output fields

Field Type Description
listingId string Airbnb listing ID
url string Listing page (with dates)
location string Location or search URL that found it
name string Listing name
title string Type and neighborhood
latitude number Approximate latitude
longitude number Approximate longitude
rating number Average rating
reviewsCount integer Number of reviews
isNew boolean New listing without rating
checkIn string Check-in date
checkOut string Check-out date
nights integer Nights
currency string Currency
totalPrice number Total price for the stay
originalTotalPrice number Total before discount
pricePerNight number Nightly rate before discounts and taxes
priceLabel string Price as displayed
priceDetails array Price breakdown lines
rooms array Bedrooms, beds, baths
badges array Badges
isGuestFavorite boolean Guest favorite badge
photos array Photo URLs

Export as JSON, CSV, Excel, XML or HTML, or read it through the API.


💰 Pricing — pay per listing

What you run Listings Cost (free plan)
1 city, top 50 50 $0.15
3 cities × 100 300 $0.90
Weekly price tracking, 5 neighborhoods × 50 1,000/month $3.00/month

Higher Apify plans pay less: $0.0025 (Bronze), $0.002 (Silver), $0.0015 (Gold and above). Platform usage and proxies are included. Locations without results are never charged.


🔌 API & integrations

Python

from apify_client import ApifyClient  # pip install "apify-client>=3"

client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("victorrodi/airbnb-scraper-api").call(
    run_input={"locations": ["Lisbon, Portugal"], "checkIn": "2026-12-10", "checkOut": "2026-12-14"}
)
for home in client.dataset(run.default_dataset_id).iterate_items():
    print(home["totalPrice"], home["rating"], home["name"])

cURL

curl -X POST "https://api.apify.com/v2/acts/victorrodi~airbnb-scraper-api/run-sync-get-dataset-items" \
  -H "Authorization: Bearer $APIFY_TOKEN" -H "Content-Type: application/json" \
  -d '{"locations": ["Porto, Portugal"], "maxListingsPerLocation": 20}'

Works with Google Sheets, Make, Zapier, n8n and MCP / AI agents: “Find the 10 best-rated entire apartments in Lisbon under €120 a night for December 10–14.”


🤖 Use it from AI agents (Claude, ChatGPT, Cursor…)

This Actor is available to AI assistants through the Apify MCP server. Add the server to Claude Desktop, Claude Code, Cursor or any MCP client, then simply ask:

“Find the 10 best-rated entire apartments in Lisbon under €120 a night for December 10-14.”

“Compare the average Airbnb price per night in Barcelona, Rome and Paris for the same dates.”

The clean, flat output is designed to be read directly by LLMs.


🛡️ Reliability

More examples and docs for all our Actors: Vicshock/trendpulse-scrapers.


📌 Tips

❓ FAQ

Do I need an Airbnb account? No.

Are hosts’ names collected? No. The Actor only keeps listing data (prices, ratings, rooms, location, photos).

Why is the location approximate? Airbnb shows approximate coordinates in search results for privacy; they are fine for neighborhood analysis.

Is it legal? The Actor reads public search results without personal data. Respect Airbnb’s terms and the laws that apply to you.

💬 Support

Missing a field? Open an issue in the Issues tab — it is answered fast.