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

a day ago

Last modified

Categories

Share


📑 Contents


⚡ At a glance

What you collectAirbnb listings: name, nightly price, rating, reviews, coordinates, photo
Search byCity — 20 popular cities built in, plus any city you type
FiltersGuests, minimum bedrooms, nightly price range, exact stay dates
Key fieldsPrice per night, currency, rating, review count, latitude / longitude, badges
Empty runStill returns about 100 listings across popular cities
Output formatsJSON, CSV, Excel, HTML and XML via the Apify Console export
Code requiredNone — pick cities and press Start
Typical run100 listings in about a minute; multi-city runs scale to thousands

🏡 What this Airbnb scraper does

Airbnb prices move with demand, season and events, and every city tells a different story: what a night costs in Istanbul is not what it costs in London, and a Superhost apartment near the centre plays by different rules than a studio across town. Checking that by hand — city after city, page after page, copying prices and ratings into a spreadsheet — is slow, and the numbers go stale before you finish.

This Airbnb scraper turns city searches into a dataset you can actually work with. Pick one city or several, optionally narrow by guests, bedrooms, price or exact dates, and it returns one clean record per listing with the details that matter:

  • what it is (listing name, title, room type),
  • what it costs (price per night, currency, original price when discounted),
  • how guests rate it (rating, review count, badges such as Superhost),
  • where it is (latitude, longitude, cover photo) and a direct link back to the listing.

Whether you are doing vacation rental pricing research, tracking host competitors, or sizing up a market for an investment decision, this actor gives you comparable listings across cities in minutes instead of days of manual browsing — no Airbnb login required.


✨ Key features

  • Twenty popular cities built in — Istanbul, London, New York, Paris, Dubai and more, ready to pick. Compare destinations in a single run.
  • Any city you can name — type cities outside the built-in list (Antalya, Cappadocia, Marrakech…) and they are searched alongside the picked ones.
  • Real nightly prices — the price per night is worked out properly even when Airbnb shows a multi-night total, with the original price kept whenever a discount applies.
  • Ratings you can trust — rating and review count are parsed together, and brand-new listings without ratings are marked honestly instead of padded with invented scores.
  • Stay-aware searching — add check-in and check-out dates to see prices for an exact stay, plus guest, bedroom and price-band filters to match the inventory you actually compete with.
  • Coordinates and photos included — latitude, longitude and the cover photo travel with every record, ready for maps and reports.
  • Works with an empty form — press Start without changing anything and still get about 100 listings across popular cities.
  • Clean, analysis-ready records — consistent field names, duplicates removed across cities and pages, empty values left out.
  • Export anywhere — download JSON, CSV or Excel, or send results to your stack with Apify integrations and the API.

👥 Who it is for

  • Hosts and property managers benchmarking nightly prices and ratings against comparable listings.
  • Vacation rental investors sizing up cities and neighbourhoods before buying or listing.
  • Pricing and revenue teams who need repeatable price snapshots instead of manual spot-checks.
  • Travel and market researchers comparing destination supply, price bands and quality signals.
  • Data analysts building rental datasets, price indices and maps.
  • Students and curious builders who want a real, explorable sample of live rental markets without writing code.

💡 Use cases

1. Benchmark your nightly price

Search your city, filter to your guest and bedroom count, and compare pricePerNight and rating against listings like yours. Listings with a Superhost badge show the quality bar in your segment.

2. Compare cities for an investment shortlist

Run several cities in one export and compare price bands, rating distributions and supply depth side by side — Istanbul against Barcelona, for example — before you dig into neighbourhoods.

3. Track competitor hosts over time

Run the same city search on a schedule and diff exports by listingId. New listings, price moves and review growth become a simple time series instead of a memory exercise.

4. Price an exact stay or event window

Add check-in and check-out dates around a holiday, festival or conference and collect the prices guests actually see for those nights — the right basis for seasonal pricing decisions.

5. Map supply geographically

Every record carries latitude and longitude. Plot an export on a map to see where inventory clusters, where the expensive pockets are, and where a new listing would face little competition.

6. Feed a pricing dashboard

Run the actor via the Apify API or on a schedule and pipe the dataset into your warehouse, BI tool or pricing model. Consistent fields across runs make week-over-week comparisons straightforward.

7. Support academic and market research

Build a citable snapshot of a rental market at a point in time: counts by room type and price band, rating distributions, and geographic spread — all from one export instead of manual sampling.


⚙️ How it works

  1. You describe what you want — pick cities (or type your own), optionally add guests, bedrooms, a price band or exact dates.
  2. The actor searches each city page by page (18 listings per page), splitting your result cap fairly across the cities in the run.
  3. Records are tidied as they arrive — nightly prices are derived from multi-night totals, ratings are paired with review counts, duplicates are removed, and each listing gets a direct link.
  4. You get a dataset in the Apify Console: preview it in the table, filter it, and export it as JSON, CSV or Excel — or pull it through the API.

No setup, no scripts and nothing to maintain on your side. If you leave every field as it is, the actor simply collects a balanced sample of about 100 listings across popular cities so you can see the output shape right away.


🚀 Step-by-step usage

  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-picked.
  3. (Optional) Add Other cities that are not in the list, one per line.
  4. (Optional) Set Guests and Minimum bedrooms to match the homes you care about.
  5. (Optional) Set a nightly price band or exact check-in / check-out dates for a specific stay.
  6. Set Max results to the size you want (100 is a good first run).
  7. Press Start and watch the live log and status counter.
  8. When the run finishes, open the Dataset tab to preview records.
  9. Use Export to download JSON, CSV or Excel — or open the Integrations tab to send data onward automatically.
  10. Re-run any time; try scheduling weekly runs to build a time series.

📥 Input

Every field is optional. Start with the defaults, then narrow down.

FieldWhat it doesExample
Cities to searchPick from 20 popular citiesIstanbul
Other citiesAny additional city or area, one per lineAntalya
GuestsOnly homes hosting at least this many guests4
Minimum bedroomsOnly homes with at least this many bedrooms2
Minimum / maximum nightly pricePrice band in the search currency50 – 300
Check-in / check-outExact stay dates (YYYY-MM-DD)2026-12-10
Max resultsCap on listings collected across all cities100
Proxy configurationConnection settings; the default is right for most runsdefault

Example 1 — Instant sample (zero setup)

{}

Returns about 100 listings across popular cities (Istanbul is pre-picked; an untouched run samples the default city mix).

Example 2 — One city in depth

{
"locations": ["Istanbul"],
"maxItems": 250
}

Collects up to 250 Istanbul listings with nightly prices and ratings.

Example 3 — City comparison

{
"locations": ["Istanbul", "Barcelona", "Lisbon"],
"maxItems": 300
}

Collects a balanced sample across three cities for side-by-side comparison.

Example 4 — Family-sized homes in a price band

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

Keeps only larger London homes under the nightly cap.

Example 5 — Exact holiday stay

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

Shows prices for the Christmas stay itself instead of flexible dates.


📤 Output

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

Coverage legend (from the local verification runs below): 🟢 present for nearly every record · 🟡 present when the listing provides it · ⚪ present for a smaller share of records.

Identity

FieldMeaningCoverage
listingIdAirbnb listing identifier🟢 every record
nameListing name set by the host🟢 every record
titleListing title line, e.g. Apartment in Istanbul🟢 every record
subtitleSubtitle as shown in search🟢 every record
roomTypeRoom type, e.g. Apartment🟢 every record
locationQueryCity as searched🟢 every record

Price

FieldMeaningCoverage
pricePerNightPrice per night (derived from stay totals)🟢 every record
currencyCurrency, e.g. TRY, USD, EUR🟢 every record
originalPricePre-discount price per night🟡 only on discounted listings

Quality

FieldMeaningCoverage
ratingGuest rating (0–5)🟢 every rated listing
reviewsCountNumber of reviews (0 for new listings)🟢 every record
badgesBadges such as Superhost🟡 most records

Location & media

FieldMeaningCoverage
latitudeLatitude🟢 every record
longitudeLongitude🟢 every record
imageUrlCover photo🟢 every record
urlDirect link to the listing🟢 every record
scrapedAtWhen this actor collected the record🟢 every record

Example output record

{
"listingId": "891889179417515840",
"name": "Bosphorus Panorama Terrace Luxury Suite",
"title": "Apartment in Istanbul",
"subtitle": "Bosphorus Panorama Terrace Luxury Suite",
"roomType": "Apartment",
"rating": 4.92,
"reviewsCount": 25,
"pricePerNight": 6259.8,
"currency": "TRY",
"originalPrice": 7725,
"latitude": 41.03002,
"longitude": 28.9886,
"imageUrl": "https://a0.muscache.com/im/pictures/hosting/Hosting-891889179417515840/original/b9ad1c7f-b1f0-45f5-aa48-fa2f4d053485.jpeg",
"badges": ["Superhost"],
"locationQuery": "Istanbul",
"url": "https://www.airbnb.com/rooms/891889179417515840",
"scrapedAt": "2026-10-23T13:40:54.405Z"
}

✅ Proven results (local verification)

This actor was run locally before release. All numbers below are from those real runs — same code, same output shape you will receive.

CheckInputResult
Empty run{} (nothing changed at all)100 listings (20 per city × 5 default cities)
Single-city depthIstanbul, cap 30065 unique listings in sequential pages (Airbnb repeats listings across pages)
Currency checkParis + London, 80 listingsCurrency present on 80/80 records
Multi-city capacity20 built-in cities + custom cities + filtersThousands per run; tens of thousands across combinations
Price / rating integrityEmpty-run sampleNightly prices derived from stay totals; ratings paired with review counts

Field fill highlights from the empty run (100 records):

  • Identity, price and location were (nearly) complete: listingId, name, pricePerNight, latitude, longitude, imageUrl, url and scrapedAt appeared on every record; currency on 98–100%.
  • Ratings were present with review counts on rated listings (87 of 100); new listings honestly report reviewsCount: 0 instead of a fake score.
  • badges (for example Superhost, Guest favorite) appeared on 78 of 100 records.
  • originalPrice appeared on 41 of 100 records — exactly the discounted share, by design.
  • Sample listing and photo links were opened and answered successfully.

What this means for you: the core columns you will filter, sort and map on arrive filled. Airbnb repeats listings across search pages, so one city search yields tens of unique listings per pass; combining the 20 built-in cities (plus your own) and filter variations scales a run into the thousands, and repeated runs build datasets in the tens of thousands. Nothing is padded with invented values.


🔌 Integrations

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

  • Spreadsheets — export CSV or 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, Snowflake or your internal catalogue.
  • Automation platforms — trigger Make, Zapier or n8n workflows when a scheduled run finishes (for example: "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 in your own pricing pipeline and read structured JSON back.

A typical pattern: schedule the actor weekly per city, then let an automation diff prices and flag the biggest movers.


💡 Tips for better results

  • Start with one city. Run Istanbul (or your city) first to see the output shape, then add comparison cities.
  • Match filters to your comp set. Guests, bedrooms and price band matter more than raw volume — a tight, comparable sample beats a huge mixed one.
  • Use dates when season matters. Flexible-date prices and holiday-week prices are different products; collect the one you will actually charge against.
  • Read reviewsCount with rating. A 5.0 from 3 reviews and a 4.8 from 300 reviews are different signals; the pair tells the story.
  • Keep runs comparable. Same cities and filters on a schedule give you a clean time series; changing inputs mid-series breaks it.
  • Raise Max results gradually. 100 listings is fast for exploration; scale up once the search is right.
  • If a city returns very few listings, check the spelling, widen the price band, or switch Proxy configuration to residential — some searches show fuller results that way.

⚠️ Limitations

  • Search-result data. The actor collects what Airbnb search shows for your cities and filters. Full listing pages (amenities, house rules, full photo sets) are one click away via url.
  • Per-city depth. Airbnb repeats listings across search pages, so one city search yields tens of unique listings per pass (65 unique in the Istanbul depth test). Wider coverage comes from combining cities, areas and filter variations — which is also how the data stays comparable.
  • Prices depend on dates. Without dates you see flexible-date pricing; with dates you see that stay's pricing. Neither is "wrong" — pick the one matching your question, and note scrapedAt.
  • New listings have no rating yet. They report reviewsCount: 0 honestly. Filter them out after export if you only want proven inventory.
  • Counts move. Prices, ratings and availability change constantly — treat each run as a timestamped snapshot, not a fixed catalogue.

❓ FAQ

Do I need an Airbnb account?

No. The actor works with public search results. Just press Start — no login, no Airbnb account.

What happens if I run it with no input at all?

You still get data: about 100 listings sampled across popular cities (Istanbul is pre-picked). It is the fastest way to see exactly what the output looks like.

How many listings can I collect?

Set Max results to the size you need. One city search yields tens of unique listings per pass (Airbnb repeats listings across pages); combining the 20 built-in cities plus your own cities and filter variations scales into the thousands per run, and repeated runs build datasets in the tens of thousands.

How is the nightly price calculated?

Airbnb often shows a total for several nights. The actor divides by the number of nights (and keeps the pre-discount original price when one applies), so pricePerNight is always the per-night figure in currency.

Why do some listings have no rating?

They are new. Airbnb shows no score until guests review them, so the record carries reviewsCount: 0 and no rating instead of an invented number.

Can I search a city that is not in the dropdown?

Yes — type it under Other cities. Any city or area Airbnb search understands (Antalya, Cappadocia, Marrakech…) works.

Can I run this on a schedule and track changes?

Yes. Schedule identical inputs (weekly works well) and compare exports by listingId and scrapedAt. New IDs are new listings; changing prices and review counts show momentum.

Which export format should I choose?

CSV or Excel for spreadsheet work, JSON for code and pipelines. The Console preview table is handy for a quick look and light filtering.

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 — some city searches show fuller results that way.


🔍 Keywords

Airbnb scraper · vacation rental data · Airbnb prices · nightly price research · host competitor tracking · rental market analysis · Airbnb listings export · Istanbul Airbnb data · short-term rental pricing · Superhost research · investment analysis data


📄 Disclaimer

This is an independent tool for collecting publicly available search information. Not affiliated with Airbnb. Airbnb is a trademark of its respective owner; listing names appear here only to describe what the data refers to. Please respect Airbnb's terms when using collected data.