Airbnb Scraper — Vacation Rental Prices, Ratings & Locations avatar

Airbnb Scraper — Vacation Rental Prices, Ratings & Locations

Pricing

from $1.75 / 1,000 results

Go to Apify Store
Airbnb Scraper — Vacation Rental Prices, Ratings & Locations

Airbnb Scraper — Vacation Rental Prices, Ratings & Locations

Scrape Airbnb vacation rental listings by city — name, nightly price, rating, reviews, coordinates and cover photo — for pricing research, host competitor tracking and market or investment analysis. Export clean JSON/CSV in minutes, no login required. Search Istanbul, London, New York and more.

Pricing

from $1.75 / 1,000 results

Rating

0.0

(0)

Developer

Haketa

Haketa

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

19 hours ago

Last modified

Features

Limited permissions

Share

Built for vacation rental hosts, property managers, revenue & pricing teams, short-term rental investors, travel analysts and data teams who need comparable Airbnb listings across cities — fast, structured, and repeatable.


📑 Contents


⚡ At a glance

What you collectAirbnb listings: name, nightly price, currency, rating, reviews, coordinates, photo, badges
Search byCity — 20 popular cities built in, plus any city or area you type
FiltersGuests, minimum bedrooms, nightly price range, exact check-in / check-out dates
Key fieldspricePerNight, currency, rating, reviewsCount, latitude / longitude, badges
Empty runStill returns ~100 listings across popular cities
Last verified run500 unique listings across 20 cities in ~5.5 min, 0% duplicates
Output formatsJSON, CSV, Excel, HTML and XML via the Apify export
Code requiredNone — pick cities and press Start

🔎 Why scrape Airbnb?

Airbnb is the largest short-term rental marketplace in the world, and its search results are a live map of the vacation rental economy: what a night costs in Istanbul versus London or New York, how a Superhost apartment near the centre is priced against a studio across town, which listings guests actually rate highly, and where inventory clusters on a map. That data moves constantly with demand, season and local events.

Collecting it by hand is painful. Airbnb shows prices in the viewer's currency, mixes per-night and multi-night totals, repeats listings across search pages, and hides the raw numbers behind an infinite-scroll grid. Copying prices and ratings city by city into a spreadsheet is slow, error-prone, and stale before you finish. An Airbnb scraper turns those search pages into one clean record per listing so you can filter, sort, map and compare in seconds.

Common reasons people scrape Airbnb:

  • Pricing research — benchmark your nightly rate against comparable listings in the same city and segment.
  • Host competitor tracking — monitor rival listings' prices, ratings and review growth over time.
  • Short-term rental investment — size up cities and neighbourhoods before buying or listing a property.
  • Market & travel analysis — compare destination supply, price bands and quality signals across cities.
  • Revenue management — feed a dynamic pricing model with repeatable, timestamped price snapshots.
  • Geospatial mapping — plot where inventory concentrates and where a new listing would face little competition.
  • Academic & data projects — build citable rental datasets, price indices and room-type distributions.

🏡 What this Airbnb scraper does

This Airbnb scraper searches Airbnb by city and returns structured vacation rental data — no Airbnb login, no browser automation to babysit, no code. Pick one city or several, optionally narrow by guests, bedrooms, price band or exact dates, and the actor collects one clean, de-duplicated record per listing.

Features:

  • ✅ Twenty popular cities built in — Istanbul, London, New York, Paris, Dubai, Barcelona, Rome, Tokyo, Amsterdam, Bali, Los Angeles, Miami, Berlin, Vienna, Prague, Lisbon, Bangkok, Sydney, Toronto, Cape Town — ready to pick and compare in a single run.
  • ✅ Any city or area you can name — type destinations outside the list (Antalya, Cappadocia, Marrakech…) and they are searched alongside the picked ones.
  • ✅ Automatic pagination — steps through Airbnb search pages (18 listings per page) with items_offset, de-duplicating by listingId, and splits your result cap fairly across cities.
  • ✅ Real nightly prices — pricePerNight is derived correctly even when Airbnb shows a multi-night total, with originalPrice kept whenever a discount applies.
  • ✅ Currency detection that follows the locale — reads the symbol or ISO code from the price (USD, EUR, GBP, JPY, TRY, SEK, and any three-letter code Airbnb returns) so price and currency always stay in sync.
  • ✅ Honest ratings — rating and reviewsCount are parsed together; brand-new listings report reviewsCount: 0 instead of a fabricated score.
  • ✅ Captured fields grouped: identity (listingId, name, title, subtitle, roomType), price (pricePerNight, currency, originalPrice), quality (rating, reviewsCount, badges), location & media (latitude, longitude, imageUrl, url) and locationQuery + scrapedAt.
  • ✅ Targeting filters — guests, minimum bedrooms, nightly price band and exact check-in / check-out dates.
  • ✅ Fast & reliable — HTTP-based with automatic proxy rotation and patient retries; the last verification run collected 500 listings in about 5.5 minutes.
  • ✅ Export anywhere — JSON, CSV, Excel, or straight through the Apify API and integrations.

🎯 Use cases

  • Vacation rental hosts & property managers — benchmark your pricePerNight and rating against comparable listings in your city and guest/bedroom segment.
  • Dynamic pricing & revenue teams — build repeatable, timestamped price snapshots instead of manual spot-checks, and diff them week over week to detect seasonal surges.
  • Short-term rental & real estate investors — compare price bands, rating distributions, review counts and supply depth across cities before acquiring real estate or onboarding new units.
  • Travel tech & OTA aggregators — feed real-time vacation rental inventory, geo-coordinates and room categories into comparison engines and mobile travel apps.
  • Market researchers & tourism boards — study destination supply, room-type mix (villas, apartments, studios) and quality signals across 20+ global cities in a single consolidated export.
  • Data analysts & quantitative researchers — assemble vacation rental datasets, price indices and occupancy proxy metrics from clean JSON/CSV feeds.
  • GIS & spatial intelligence teams — plot latitude / longitude to visualise where inventory clusters, identify undersupplied tourist districts, and map luxury hotspots.
  • B2B travel intelligence & consulting — conduct automated short-term rental market benchmarking for hospitality advisory reports and investment memos.
  • Academic research & urban planning — analyze short-term rental density, housing stock impacts, and urban tourism patterns with reproducible public dataset extracts.

📥 Input

Every field is optional — press Start with the defaults for an instant sample, then narrow down. Configure it in the visual Apify form or pass JSON via the API.

FieldTypeDescription
locationsarray (select)Pick one or more of 20 built-in popular cities (e.g. Istanbul, London, New York).
customLocationsarray (string list)Any extra city or area not in the list, one per line (e.g. Antalya, Cappadocia). Combined with locations.
guestsstring (select)Only homes hosting at least this many guests ("", 1…16).
bedroomsstring (select)Only homes with at least this many bedrooms ("", 1…5).
priceMinintegerSkip listings cheaper than this per night, in the search currency.
priceMaxintegerSkip listings more expensive than this per night, in the search currency.
checkInstringCheck-in date YYYY-MM-DD (e.g. 2026-12-10). Use with checkOut for an exact stay.
checkOutstringCheck-out date YYYY-MM-DD (e.g. 2026-12-13).
maxItemsintegerMaximum listings to collect across all cities. Leave empty for ~100.
proxyConfigurationobjectConnection settings. The default Apify proxy works for most runs; switch to residential if a city returns very few listings.

Example input — multi-city comparison

{
"locations": ["Istanbul", "London", "New York", "Paris", "Dubai"],
"maxItems": 500,
"proxyConfiguration": { "useApifyProxy": true }
}

Example input — family-sized homes in a price band

{
"locations": ["London"],
"guests": "6",
"bedrooms": "3",
"priceMax": 400,
"maxItems": 150
}

Example input — exact holiday stay

{
"locations": ["Paris"],
"checkIn": "2026-12-24",
"checkOut": "2026-12-27",
"maxItems": 100
}

Example input — custom city outside the built-in list

{
"locations": [],
"customLocations": ["Cappadocia"],
"maxItems": 150
}

An empty input {} still returns about 100 listings across the default city mix — the fastest way to see the output shape.


📤 Output

Each run produces one clean record per Airbnb listing. Field names stay identical across cities and filters, so exports are easy to combine and compare. Empty values are left out of a record.

Example output record

{
"listingId": "1501604567440178197",
"name": "Charming Spacious & Rooftop Access in Galata",
"title": "Apartment in Istanbul",
"subtitle": "1905 Galata gem with Golden Horn views, a rooftop terrace, and 3.10 m ceilings",
"roomType": "Apartment",
"rating": 5,
"reviewsCount": 68,
"pricePerNight": 98.2,
"currency": "USD",
"originalPrice": 121,
"latitude": 41.02606,
"longitude": 28.97429,
"imageUrl": "https://a0.muscache.com/im/pictures/hosting/Hosting-1501604567440178197/original/75e2aa34-d076-4073-a8de-992036fd3317.png",
"badges": ["Guest favorite"],
"locationQuery": "Istanbul",
"url": "https://www.airbnb.com/rooms/1501604567440178197",
"scrapedAt": "2026-11-02T02:02:45.941Z"
}

Field reference

FieldDescription
listingIdAirbnb listing identifier (natural key, used for de-duplication).
nameListing name set by the host.
titleTitle line as shown in search, e.g. Apartment in Istanbul.
subtitleSubtitle / descriptive line from the search card.
roomTypeRoom type parsed from the title, e.g. Apartment, Condo, Room, Villa, Loft.
pricePerNightPrice per night, derived from multi-night totals when needed.
currencyISO currency code of the price, e.g. USD, EUR, SEK, JPY, TRY (follows the search locale).
originalPricePre-discount price per night — present only on discounted listings.
ratingGuest rating (0–5) — present on rated listings.
reviewsCountNumber of reviews; 0 for brand-new listings with no score yet.
badgesBadges such as Guest favorite, Superhost, Featured hotel, Luxe — present when available.
latitudeListing latitude.
longitudeListing longitude.
imageUrlCover photo URL.
locationQueryThe city as searched (lets you group multi-city runs).
urlDirect link to the Airbnb listing page.
scrapedAtISO timestamp of when this record was collected.

Field coverage & reliability

EmojiField groupCoverageDescription & Notes
🆔listingId, name, title, url🟢 High (100%)Core listing identifiers, canonical host titles and listing links
💰pricePerNight, currency🟢 High (~99%)Normalized per-night rate and detected ISO currency code
📍latitude, longitude, locationQuery🟢 High (100%)Coordinates for GIS mapping and searched city attribution
🏷️roomType, subtitle🟢 High (100%)Accommodation category (Apartment, Villa, Loft) and card subtitle
⭐rating, reviewsCount🟢 High (~91%)Guest rating score (0-5) and review counts (0 for new listings)
🏆badges🟡 Conditional (~88%)Special status tags (Guest favorite, Superhost, Luxe)
🏷️originalPrice🟡 Conditional (~31%)Pre-discount baseline rate when promotional pricing is active
🖼️imageUrl🟢 High (100%)Primary high-resolution preview photograph link
⏱️scrapedAt🟢 High (100%)Precise extraction timestamp on every single record

Prices ranged from about $17 to $23,000 per night (luxury and large whole-home listings) with zero duplicates, zero malformed URLs, and no [object Object] or out-of-range values in the verification run.


🔁 Pagination & scale

The actor paginates Airbnb search automatically. For each city it steps through the result pages using the items_offset parameter (18 listings per page), parses the embedded search state, and de-duplicates by listingId as it goes — so repeated listings across pages never inflate your dataset.

Airbnb deliberately repeats listings across search pages, so one city search yields tens of unique listings per pass. Breadth comes from running multiple cities: the actor divides your maxItems cap evenly across the cities in the run and collects up to that many unique listings each. In the latest verification run, 20 built-in cities returned 500 unique de-duplicated listings (25 per city) in ~5.5 minutes with a 0% duplicate rate. Combining the 20 built-in cities, your own customLocations, and filter variations (guests, bedrooms, price band, dates) scales a single run into the hundreds-to-thousands, and scheduled repeated runs build datasets in the tens of thousands. Control the size with maxItems.


⚙️ How to use

  1. Open the actor in the Apify Console and go to the Input tab.
  2. Pick one or more Cities to search (Istanbul is pre-selected), and/or add Other cities one per line.
  3. (Optional) Set Guests, Minimum bedrooms, a nightly price band, or exact check-in / check-out dates.
  4. Set Max results (maxItems) to the size you want — 100 for a quick look, 500+ for a multi-city dataset.
  5. Press Start and watch the live log and status counter.
  6. When the run finishes, open the Dataset tab, then Export to JSON, CSV or Excel.
  7. Prefer automation? Call the actor from the Apify API, run it on a schedule, or wire it into Make, Zapier, n8n, Google Sheets or a webhook.

💡 Tips

  • Start with one city to confirm the output shape, then add comparison cities in the same run.
  • Match filters to your comp set — guests, bedrooms and a price band give a tight, comparable sample that beats raw volume.
  • Use dates when season matters — flexible-date pricing and holiday-week pricing are different products; collect the one you actually charge against.
  • Read reviewsCount with rating — a 5.0 from 3 reviews and a 4.8 from 300 reviews are very different signals.
  • Keep runs comparable — the same cities and filters on a schedule give a clean time series; changing inputs mid-series breaks it.
  • If a city returns very few listings, check spelling, widen the price band, or switch Proxy configuration to residential — some searches show fuller results that way.

🔌 Integrations

Results live in a standard Apify dataset, so they flow into the tools you already use:

  • Spreadsheets — export CSV/Excel, or connect Google Sheets to refresh a pricing workbook on a schedule.
  • Maps & BI — plot latitude / longitude in Looker Studio, Tableau, Power BI or any GIS tool.
  • Databases & warehouses — pull the dataset through the Apify API into Postgres, BigQuery or Snowflake.
  • Automation platforms — trigger Make, Zapier or n8n when a scheduled run finishes (e.g. "new listing under €100").
  • Chat alerts — post a Slack or email digest of price movers after each run.
  • Custom code — call the actor from the Apify API / SDKs and read structured JSON back into your pricing pipeline.

❓ FAQ

This actor collects publicly available Airbnb search results — the same information any visitor sees without logging in. It is an independent tool, not affiliated with Airbnb. Use the collected data responsibly and in line with Airbnb's terms and applicable laws, especially around personal data and republishing.

Do I need an Airbnb account or login?

No. The Airbnb scraper works entirely on public search pages — no login, no account, no cookies to supply.

How many listings can I collect, and how fast?

Set Max results (maxItems) to the size you need. The latest verification run collected 500 unique listings across 20 cities in about 5.5 minutes. One city yields tens of unique listings per pass (Airbnb repeats listings across pages); combining the 20 built-in cities plus your own and filter variations scales into the hundreds-to-thousands per run.

Do I need proxies?

The default Apify proxy is pre-configured and works for most runs. If a specific city returns very few or no listings, switch Proxy configuration to residential — some city searches show fuller results that way.

What export formats are supported?

JSON, CSV, Excel (XLSX), HTML and XML via the Apify Console, or pull the dataset straight through the Airbnb API endpoint on Apify.

Is there an API?

Yes. Every actor on Apify has a full REST API — start runs, pass input, and fetch the dataset programmatically. This makes the scraper easy to embed in a scheduled pricing pipeline.

How is the nightly price calculated?

Airbnb often shows a multi-night total. The actor reads the number of nights, divides to get pricePerNight, and keeps the pre-discount originalPrice when a discount applies — so the per-night figure in currency is always comparable.

What currency are prices in?

Airbnb returns prices in the viewer's locale currency, which depends on the proxy IP (often USD, but you may also see EUR, GBP, SEK, JPY, TRY, etc.). The currency field is read directly from each price string, so it always matches the number — the scraper detects symbols and three-letter ISO codes alike.

Why do some listings have no rating?

They are new. Airbnb shows no score until guests review a listing, so the record carries reviewsCount: 0 and omits rating rather than inventing one.

Can I filter by city, guests, bedrooms, price or dates?

Yes — all of them. Pick built-in cities or type your own, and narrow by guests, minimum bedrooms, a nightly price band, and exact check-in / check-out dates.

How fresh is the data?

Every run is a live snapshot. Prices, ratings and availability change constantly, so schedule the actor (weekly works well) and compare exports by listingId and scrapedAt to build a time series.

How do I extract 1,000+ listings across multiple destinations?

Set maxItems to 1,000 or higher. For comprehensive coverage, select multiple cities in locations or add custom regions via customLocations. The actor automatically divides the target quota across all specified locations and deep-paginates until the requested volume is collected or available results are exhausted.

Can I run this actor on an automated schedule?

Yes. In your Apify Console, navigate to the Schedules tab and set up a recurring cron job (e.g., daily at midnight or weekly on Mondays). The actor will extract fresh rates, availability, and review counts and deposit them into your default dataset or stream them via webhooks into your data warehouse or BI dashboard.

A run returned very few listings — what should I try?

Check the city spelling, widen or clear the price band, and re-run. If it persists, switch Proxy configuration to residential.


Building a travel, accommodation or events dataset? Pair this Airbnb scraper with other travel and event actors from the same author:

  • Expedia Scraper — collect hotel prices, ratings and availability from Expedia to benchmark Airbnb rentals against hotel supply in the same city.
  • HRS Scraper — scrape hotel rates and details from HRS for business-travel and city accommodation pricing research.
  • Eventbrite Scraper — pull events, dates and venues from Eventbrite to understand the demand spikes that move nightly rental prices.
  • Meetup Scraper — collect Meetup events and groups by city for local-demand and destination research.
  • Luma Event Scraper — gather Luma (lu.ma) events and schedules to track the conferences and gatherings that fill a city's rentals.
  • Yachtall Scraper — scrape yacht and boat listings from Yachtall for adjacent travel-market and luxury-rental research.

📋 Changelog

v1.2 (2026-11)

  • 1,000+ deep pagination unlocked: Removed static 40-page city loop limitation; pagination dynamically scales with requested maxItems to crawl deep into multi-page search results.
  • Global default destinations pool: Expanded default sample query pool from 5 to 20 world-class travel hubs (Istanbul, London, New York, Paris, Dubai, Tokyo, Rome, etc.), ensuring large multi-hundred or 1,000+ item extractions succeed seamlessly on default runs.
  • Dynamic cross-city allocation: Fixed allocation logic so if an initial city exhausts early, subsequent cities automatically consume the remaining quota until maxItems is satisfied.
  • Currency normalization: Added robust ISO-4217 extraction and multi-currency parsing for European, US, and regional proxy locale responses.

v1.1 (2026-10)

  • Advanced filtering: Added granular filtering by guests, minimum bedrooms, price ranges (min/max), and custom check-in / check-out stay dates.
  • Deduplication engine: Integrated in-memory listing ID deduplication preventing repeated cards across multi-page crawls.

v1.0 (2026-09)

  • Initial release featuring vacation rental discovery across global metropolitan destinations with nightly price extraction, coordinates, ratings, and instant exports.

Ready to turn Airbnb search into a dataset? Pick your cities, set maxItems, and press Start — clean vacation rental data in JSON, CSV or Excel within minutes.

⌂ 换网址