Airbnb Scraper — Vacation Rental Listings
Pricing
from $0.75 / 1,000 listings
Airbnb Scraper — Vacation Rental Listings
[💰 $0.75 / 1K] Extract Airbnb stay listings by city or search URL. Get the total price for your dates, GPS coordinates, ratings and review counts, host and Superhost details, room breakdown, amenity categories and the full photo gallery — up to 39 fields per listing. Export to JSON, CSV or Excel.
Pricing
from $0.75 / 1,000 listings
Rating
0.0
(0)
Developer
SolidCode
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Share
Pull Airbnb stay listings at scale — the total price for the dates you search, GPS coordinates, ratings and review counts, host and Superhost signals, the room breakdown and the full photo gallery, up to 39 fields on every listing. Built for short-term-rental investors, revenue and pricing managers, and travel analytics teams who need one clean, analysis-ready row per property without babysitting a scraper through Airbnb's search pages.
Why This Scraper?
- GPS coordinates on 270 of 270 listings — measured across five cities on three continents (London, Paris, Austin, Tokyo, Sydney) and three room types. Latitude and longitude ride on the search row itself, so you can map a whole market without a second request per property.
- The price is the total for your dates, never a teaser rate — every row carries the number, the display label it came from, and the exact
checkIn/checkOutwindow it covers. All 270 sample rows came back priced, labelled and dated. - 39 fields per listing across 6 groups — 18 land on the search row;
enrichDetailsadds 21 more, including the full description, the plain-words room breakdown (["2 guests", "1 bedroom", "1 bed", "1 bath"]) andmaxGuestsas a real integer. - Ratings you can average, not a display string — a numeric rating on the 5-point scale (4.34 to 5.00 across the sample) plus an integer review count, where a brand-new listing returns
nullinstead of a fake 0-star score that would quietly drag your market averages down. - Host and Superhost signals on 45 of 45 detail records — who hosts it, years hosting, Superhost status, their own review count, and the
Guest favoritebadge. - The complete photo gallery — up to 167 images on one listing — against the 6 thumbnails a search card shows, plus 5 to 13 amenity categories per property.
- 11 distinct property-type labels and 4 room types in a 45-listing sample — Tiny home, Entire rental unit, Room in hotel and the rest arrive as readable text, and an unrecognised code is dropped rather than dumped into your spreadsheet.
- 58 automated checks run against live Airbnb pages before every release — the build fails if a listing ID stops resolving to a real room page, a rating drifts off the 5-point scale, or a price ever ships without the label that says which currency it is in.
- 100 listings in 12.5 seconds — measured end to end on a cloud run, so a whole-city scan finishes while you are still reading the input form.
Use Cases
Short-Term Rental Investment
- Underwrite a market from real total-stay prices, with coordinates precise enough to score by street, not by city.
- Measure Superhost and
Guest favoritedensity in a neighbourhood before buying into it. - Track supply by room type — entire home, private room, shared room, hotel room — to see what a market is actually made of.
- Spot brand-new inventory: listings flagged as new with zero reviews are the ones that just came online.
Revenue & Pricing Management
- Benchmark your own total price for the same dates against every competing listing in your area.
- Segment comparables by guest capacity and bed count so you compare like with like.
- Re-run on a schedule and diff on price to watch how the set around you moves week to week.
- Separate rated inventory from unrated new arrivals before computing an average rate.
Market Research & Analytics
- Build price distributions per city and room type across as many markets as you need.
- Compare amenity category mix and property-type mix between neighbourhoods.
- Quantify review depth — how many listings in a market carry hundreds of reviews versus none.
- Run the same search across several cities to compare markets on identical terms.
Data Enrichment & Integration
- Join to your own property records on the listing ID, which is stable and resolves to a live page.
- Pull the host name, photo and hosting history into a CRM or outreach list.
- Push straight into Google Sheets, a warehouse, or a BI dashboard — every row is flat.
- Feed descriptions, highlights and photo galleries into search, tagging or ML pipelines.
Travel Content & Product
- Build city guides and map views from coordinates, photos and ratings already in the row.
- Power a comparison or metasearch surface with fresh listing names, prices and images.
- Assemble editorial round-ups — highest-rated, most photographed, best-hosted — with no manual collection.
Getting Started
Simplest run
{"location": "London","maxItems": 100}
Paste a filtered search URL from the site
Set your filters on the site, then copy the address bar URL — every filter in it is carried through.
{"searchUrls": ["https://www.airbnb.com/s/London/homes"],"maxItems": 335}
Everything, with full details
{"searchUrls": ["https://www.airbnb.com/s/London/homes"],"maxItems": 335,"enrichDetails": true}
Input Reference
What to Scrape
| Parameter | Type | Default | Description |
|---|---|---|---|
searchUrls | array | — | Airbnb.com search result URLs. Set your filters on Airbnb.com, then paste the address bar URL here. Overrides the individual filters below when provided. |
location | string | London | Area to search. Used only when Search URLs is empty. |
maxItems | integer | 100 | Maximum listings per search URL (0 = collect everything each search returns). Airbnb.com pages through at most 335 listings per search, so use several narrower searches to collect more. |
Options
| Parameter | Type | Default | Description |
|---|---|---|---|
enrichDetails | boolean | false | Add 21 extra fields per listing. Adds one request per listing and is billed at the higher rate. |
concurrency | integer | 8 | How many requests to run in parallel. Lower this if you see failures. |
proxyConfiguration | object | Apify Proxy | Proxy settings for the run. |
Output
Every listing is one dataset row. Enabling enrichDetails adds 21 further fields to the same row — there is no second record type to join.
This example is a real captured listing, with the host's name and profile photo replaced by placeholders and the photo and amenity arrays shortened for readability. Your dataset contains the full published values.
{"id": "40786965","url": "https://www.airbnb.com/rooms/40786965","name": "Modern Cabin Retreat, Pool, Hot Tub, Goats & Emus!","headline": "Tiny home in Austin","listingFacts": ["1 bedroom", "1 queen bed", "1 bath"],"badges": ["Guest favorite"],"ratingSummary": "4.95 (468)","latitude": 30.20062,"longitude": -97.93633,"photos": ["https://a0.muscache.com/im/pictures/a9ad0fe0-8b73-4a05-b818-d318a0cac50d.jpg","https://a0.muscache.com/im/pictures/c8231241-2486-43b8-84c4-ee3d54e79270.jpg"],"price": 665,"priceLabel": "€665 total","priceQualifier": "total","priceBasis": "Total for the stay","priceNote": null,"checkIn": "2026-08-23T00:00:00","checkOut": "2026-08-28T00:00:00","hotelPropertyId": null,"canonicalUrl": "https://www.airbnb.com/rooms/40786965","propertyType": "Tiny home","roomType": "Entire home","maxGuests": 2,"description": "Stay with us in our beautiful modern cabin at Eco Ranch. Relax on 85 acres of beautiful Texas Hill Country just 18 miles from downtown Austin. This private modern cabin offers 350 sq ft with a queen bed, full kitchen, full bathroom, and cozy living space.","roomBreakdown": ["2 guests", "1 bedroom", "1 bed", "1 bath"],"propertySummary": "Tiny home in Austin, Texas, United States","highlights": ["Top 10% of homes", "Self check-in", "Beautiful area"],"rating": 4.95,"reviewsCount": 468,"isNewListing": false,"isGuestFavorite": true,"city": "Austin","area": "Austin","hostLabel": "Hosted by [host name]","hostFacts": ["Superhost", "7 years hosting"],"isSuperhost": true,"hostPhoto": "https://a0.muscache.com/im/pictures/user/[host-photo].jpg","hostReviewsCount": 490,"photoGallery": ["https://a0.muscache.com/im/pictures/a9ad0fe0-8b73-4a05-b818-d318a0cac50d.jpg","https://a0.muscache.com/im/pictures/45cae55a-a445-4e7d-a346-85cd4fe9903e.jpg","https://a0.muscache.com/im/pictures/610b5cde-d67e-404f-83dc-4c353eaa353a.jpg"],"amenityGroups": ["Scenic views", "Bathroom", "Bedroom and laundry", "Entertainment","Heating and cooling", "Kitchen and dining", "Outdoor", "Parking and facilities"]}
Core Fields
| Field | Type | Description |
|---|---|---|
id | string | Listing ID |
url | string | Listing URL |
name | string | Listing name |
headline | string | Property type and area |
listingFacts | array | Card facts |
badges | array | Badges |
ratingSummary | string | Rating summary |
Price, Dates, Location & Photos
| Field | Type | Description |
|---|---|---|
price | number | Price |
priceLabel | string | Price as displayed |
priceQualifier | string | Price qualifier |
priceBasis | string | What the price covers |
priceNote | string | Price note |
checkIn | string | Check-in |
checkOut | string | Check-out |
latitude | number | Latitude |
longitude | number | Longitude |
photos | array | Card photos |
hotelPropertyId | string | Hotel property ID |
With enrichDetails enabled
| Field | Type | Description |
|---|---|---|
canonicalUrl | string | Canonical listing URL |
propertyType | string | Property type |
roomType | string | Room type |
maxGuests | number | Max guests |
description | string | Description |
roomBreakdown | array | Room breakdown |
propertySummary | string | Property summary |
highlights | array | Highlights |
rating | number | Rating |
reviewsCount | number | Reviews |
isNewListing | boolean | New listing |
isGuestFavorite | boolean | Guest favourite |
city | string | City |
area | string | Area |
hostLabel | string | Host |
hostFacts | array | Host facts |
isSuperhost | boolean | Superhost |
hostPhoto | string | Host photo |
hostReviewsCount | number | Host reviews |
photoGallery | array | Photo gallery |
amenityGroups | array | Amenity categories |
Tips for Best Results
- Plan around the 335-per-search ceiling — Airbnb pages through at most about 335 listings for any one search, no matter how many match it. To cover a dense city, split it into narrower searches — one neighbourhood, one price band, or one room type at a time — and paste every URL into
searchUrls. The run de-duplicates across them, so a listing that matches two searches arrives once and is billed once. - Read the currency off
priceLabel, not offprice— Airbnb quotes prices in the currency it serves your run, sopriceis a bare number andpriceLabel("€665 total") is the only record inside the row of which currency that number is in. Keep both, or normalise on the label. pricecovers the whole stay, not one night —priceBasissays so explicitly andcheckIn/checkOutgive the exact date range it was quoted for. Divide by the number of nights before comparing against a nightly rate from anywhere else.- Set your filters on Airbnb first, then copy the address bar — dates, guest count, price band, room type and amenity filters are all encoded in the URL and carried through, so even a heavily filtered search needs no extra configuration here.
- Turn on
enrichDetailsfor anything host- or review-related — the numeric rating, review count, Superhost status, years hosting, full description and complete photo gallery exist only on the enriched row. A search row carries the rating as a display string such as4.95 (468)orNew. - Treat a
nullrating as "no reviews yet", not as missing data — new listings deliberately returnnullrather than a 0 that would look like a zero-star property;isNewListingandreviewsCountconfirm which it is. - Pin your dates in the search URL for a price time series — when the URL does not specify them,
checkInandcheckOutfollow Airbnb's own rolling default window and move between runs, so week-over-week prices would not be comparing the same stay.
Pricing
From $0.75 per 1,000 results (search only) or from $1.75 per 1,000 results (with full details).
| Results | Search Only | With Full Details |
|---|---|---|
| 100 | $0.075 | $0.175 |
| 1,000 | $0.75 | $1.75 |
| 10,000 | $7.50 | $17.50 |
| 100,000 | $75.00 | $175.00 |
Those are the rates on Gold and above. Higher-volume plans pay less per result:
| Your Apify plan | Search Only | With Full Details |
|---|---|---|
| No discount | $0.90 | $2.10 |
| Bronze | $0.85 | $2.00 |
| Silver | $0.80 | $1.85 |
| Gold and above | $0.75 | $1.75 |
Per 1,000 results.
A "result" is any listing row in the output dataset. When you run several searches at once, a listing matching more than one of them is de-duplicated before it reaches the dataset, so you are never charged twice for the same listing. The full-details rate applies only to rows that actually came back enriched — if a listing's detail record is unavailable, the row is still delivered and charged at the search-only rate. Platform fees (compute, storage) are additional and depend on your Apify plan.
Integrations
Export data in JSON, CSV, Excel, XML, or RSS. Connect to 1,500+ apps via:
- Zapier / Make / n8n — Workflow automation
- Google Sheets — Direct spreadsheet export
- Slack / Email — Notifications on new results
- Webhooks — Trigger custom APIs on run completion
- Apify API — Full programmatic access
Legal & Ethical Use
This is an unofficial scraper. It is not affiliated with, endorsed by, or connected to Airbnb.com or its operators in any way. All trademarks belong to their respective owners.
This actor is intended for legitimate market research and analytics. You are responsible for complying with applicable laws and with Airbnb.com's Terms of Service.
Results may include personal data such as contact details. Treat them accordingly: do not use them for spam, harassment, or any unlawful purpose, and follow applicable privacy rules when storing or processing them.