Airbnb Listings Scraper - Stays, Prices & Ratings
Pricing
from $1.50 / 1,000 results
Airbnb Listings Scraper - Stays, Prices & Ratings
Scrape Airbnb vacation rentals by city across global markets. Extract stay prices, ratings, review counts, images, and listing URLs. Filter by room type, category tags, and property type for Excel, CSV, or JSON.
Pricing
from $1.50 / 1,000 results
Rating
0.0
(0)
Developer
kane liu
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Airbnb Listings Scraper — Stays, Prices & Ratings
Scrape Airbnb vacation rentals by destination across global storefronts — prices, ratings, images, listing URLs, public host identity, locality, and geo leads. No login, no Airbnb API key.
- Search any city or destination on 90+ Airbnb market domains (
www.airbnb.com,www.airbnb.jp,www.airbnb.co.uk, …) - Filter Stays by room type, category rail tags (Amazing views, Cabins, …), and property type
- Export name, nightly/total price, currency, rating, review count, image, and URL to JSON, CSV, or Excel
- Enrich a bounded number of public listing Detail pages and follow each discovered public Host Profile at most once
- Paste a filtered browser URL into
startUrlswhen you need UI-only filters - Pay per event: $0.005 per run start + $2.00 per 1,000 results (platform usage included; Gold+ Store tiers $1.50 / 1,000)
Airbnb does not offer a public listings API for third-party apps. This Actor opens the same public Airbnb search pages people browse and returns structured rows you can schedule, webhook, or pipe into Sheets, Make, n8n, Zapier, and AI agents.
Need a dedicated scraper for one website?
This Actor is the general tool for protected public pages. If you already have one specific site and a field list, a dedicated scraper is faster and more stable: listing + detail, your export format, delivered to your Apify account or as a standalone runnable client.
I confirm the tier before you pay. The clock starts after that confirmation.
Start here: Submit a custom scraper request
| Starter $50 | Dedicated $100 | Hard target $200–999 | |
|---|---|---|---|
| Site | 1 simple anti-bot public site | 1 medium anti-bot public site | Cloudflare / aggressive anti-bot / custom parser |
| Scope | Full listing + detail fields | Listing + detail + pagination, your field list | Agreed fields, repeatable runs |
| Delivery | CSV/JSON · Apify Actor or standalone runnable client (script/CLI) | Same, plus a sample run and short instructions | Feasibility first, then build |
| Time | 24 hours after we confirm the URL is in scope | 48 hours after confirmation | Quoted after feasibility |
| Fixes | 30 days for small public-layout changes | 30 days | Scoped in the quote |
Hard-target sites are not a 100% uptime promise. You get a dedicated parser that can be re-run on the agreed fields. If the URL is not feasible, you get a refund or pay an assessment fee only — you will know before the build starts.
Not in Starter/Dedicated: login-walled data, native APK / Windows installer / full web apps, or two-year maintenance. Those are a separate quote.
What does the Airbnb Listings Scraper do?
This Actor is an Airbnb scraper for Stays search results. Enter a destination (or paste search URLs), optionally pick a market/currency and filters, and get a clean dataset of vacation rental cards — ready for pricing research, competitive monitoring, or travel content workflows.
It is useful when you need:
- Nightly and stay-total price snapshots for a city or neighborhood
- Rating and review-count signals across competing listings
- Multi-country storefront coverage (Japan, UK, Singapore, EU, …) with matching currency
- Category-rail scans (Amazing views, Beachfront, Cabins, …) without hand-copying pages
- An Airbnb API alternative for Excel / CSV / JSON pipelines
Who is it for?
Short-term rental hosts and property managers
- Benchmark nightly rates against nearby stays
- Watch new inventory and rating trends in your market
Real estate and market analysts
- Compare supply and pricing across cities and Airbnb domains
- Schedule recurring scrapes for time-series pricing
Travel product and content teams
- Build destination pages and rental guides from structured stay data
- Feed listings into CMS, BI, or affiliate workflows
Developers and data scientists
- Automate Airbnb search extraction via Apify API, webhooks, or integrations
- Combine with your own enrichment for dashboards and ML features
What data can you extract from Airbnb?
Each dataset item is one Airbnb stay. Search supplies the card-level fields; bounded Detail/Profile enrichment adds public lead fields when available:
| Data point | Description |
|---|---|
| Listing name & URL | Stay title and canonical /rooms/… link |
| Price | Parsed nightly (or primary displayed) amount |
| Total price | Parsed stay total when Airbnb shows it |
| Currency | ISO code from the card or your configured currency |
| Rating & reviews | Guest score and review count when shown |
| Property type | Card subtitle (e.g. entire loft, private room) |
| Location | Location line from the card when present |
| Image | Primary card image URL |
| Market / domain | Storefront used for the search |
| Filters applied | categoryTag, roomTypesApplied, propertyTypeIdsApplied |
Search prefers Airbnb's embedded SSR (
#data-deferred-state-0) and falls back to DOM cards when needed. WithenrichDetails=true, the worker opens at mostdetailEnrichLimitpublic listing Detail pages and follows each discovered public Host Profile once. It does not log in, send a message, or scrape private booking/contact data.
Lead and contact fields
Every row contains the complete ten-key lead shape. Empty values remain explicit and are paired with a field-specific reason in leadAbsences.
| Field | Type | Airbnb meaning |
|---|---|---|
phones | [{value, type, e164?}] | Public host/listing phone numbers found on measured Detail or public Host Profile surfaces. The accepted Dream Lodge row returned []. |
emails | [{value, type}] | Public host/listing email addresses. The accepted row returned []. |
address | {street, unit, locality, region, postalCode, country, full} | Public listing location. unit is the door number when exposed. The accepted public Detail exposed locality/full=Singapore, not a street or unit. |
geo | {lat, lng} or null | Public approximate listing coordinates. The accepted row exposed 1.3101, 103.8581; coordinates supplement, not replace, a postal address. |
person | {name, role?} or null | Separate named host person when verified. The accepted run did not complete the optional Host Profile follow, so this remained null with 未验证. |
org | object or null | Public host/profile identity and optional profile facts. The accepted Detail exposed Dream Lodge, profile ID 1465766722666010133, and its public profile URL. |
web | {website, socials[]} | Public Host Profile/listing URL and host-level social links. Airbnb platform footer accounts are excluded. |
leadSource | string enum | Surface that produced the lead: search, detail, entity, contact, or reveal-xhr. A completed public Host Profile merge uses entity. |
leadReveal | string enum | How the lead was exposed: visible, click, xhr, gated, image, or absent. Current public Detail/Profile fields are visible. |
leadAbsences | object/map | Per-field reason: 本站无 only for a measured public-surface absence, 闸门锁 for login/action gates, or 未验证 when Detail/Profile acquisition did not complete. |
Reveal cost
enrichDetailsdefaults totrue;detailEnrichLimitdefaults to3and is capped at10.- Each selected row can add one public listing Detail acquisition and, when a valid host link is discovered, at most one public Host Profile acquisition.
- No phone/email reveal click is performed.
Message hostis a communication/login action, not a contact reveal control, and the Actor never submits it. - Detail/Profile enrichment increases run time and proxy/browser use. Rows outside the limit still keep all lead keys with honest
未验证reasons.
Honest limitations
- Airbnb commonly withholds exact street and door number on public pre-booking pages. The accepted row had only
Singaporeplus approximate coordinates. - The accepted latest-build row exposed
Dream Lodgefrom Detail, but the optional Host Profile follow did not complete (profileFollowed=0). Profile-dependent person/social fields therefore remain未验证, not本站无. - The measured public Detail/Profile samples did not expose host phone, email, or host-level social accounts. Airbnb platform social links are not attributed to the host.
- Help Contact and
Message hostare login/communication gates. The Actor does not log in, send messages, make bookings, or claim gated data is publicly available. - Search-only rows whose enrichment fails use
未验证; they are not evidence that a field is absent across Airbnb.
More Actors like this
Need a similar travel or listings Actor? Start with these peers, then browse curated picks by category:
| Actor | Best for |
|---|---|
| Booking.com & Airbnb Scraper | Booking.com + Airbnb stays, prices, and listing URLs |
| Booking.com Hotel Scraper | Hotels, prices, ratings, and availability on Booking.com |
| Agoda Hotel Scraper | Agoda hotels with prices, ratings, and listing URLs |
| Trip.com Hotel Scraper | Trip.com hotels, prices, and listing details |
| Expedia Hotel Scraper | Expedia hotels and stay search data |
Browse by category
- Travel: Agoda Hotel Scraper · Trip.com Hotel Scraper · Hotels.com Scraper
- Real estate: Zillow Group Scraper · Realtor.com Scraper · Redfin Scraper
- E-commerce: Amazon Product Scraper · Walmart Product Scraper · eBay Product Scraper
- Jobs: Indeed Job Scraper · LinkedIn Jobs Scraper · Glassdoor Jobs Scraper
- Universal: Stealth Web Scraper · Universal Web Scraper
See the full catalog in Related Actors below.
How to scrape Airbnb listings
- Open this Actor in Apify Console.
- Enter a destination (for example
Osaka,London,Bali) or paste Airbnb search URLs intostartUrls. - Optionally set market, currency, dates, guests, room types, category tags, and property types.
- Keep the first run small (
maxResults5–20) to validate fields and cost. - Click Start, then download JSON, CSV, or Excel.
Markets and storefronts
Pick a market code (or override domain / locale / currency). The Actor builds:
https://{host}/s/{destination}/homes?…&display_currency={currency}
When Apify Proxy is enabled and no proxy country is set, apifyProxyCountry defaults to the market country.
Examples: US, GB, JP, SG, DE, FR, AU, BR, CA, CA_FR, …
Language-specific hosts use dedicated codes (e.g. CA_FR → fr.airbnb.ca) so the input enum maps 1:1 to a domain.
Stays filters
| Input | Airbnb param | Notes |
|---|---|---|
roomTypes | room_types[] | Entire home/apt, Private room, Shared room, Hotel room (OR) |
categoryTags | category_tag | Category rail (Amazing views → Tag:8536, …). Each tag runs a separate search; results merge and dedupe by listing URL |
propertyTypeIds | property_type_id[] | Cabin, House, Villa, … (labels or numeric IDs) |
startUrls | — | Full search URLs from the Airbnb UI (best escape hatch for rare filters) |
placeId | place_id | Optional Airbnb place id when you already have one |
Multiple roomTypes / propertyTypeIds go on the same URL. Multiple categoryTags run sequentially and share one global maxResults cap.
Input
| Field | Type | Default | Description |
|---|---|---|---|
destination | string | — | City or place to search (required unless startUrls is set) |
market | string | US | Airbnb storefront / market code |
domain | string | — | Optional host override (e.g. www.airbnb.co.uk) |
locale | string | market default | Playwright / UI locale override |
currency | string | market default | display_currency (USD, EUR, JPY, …) |
placeId | string | — | Optional Airbnb place id |
checkin / checkout | string | — | YYYY-MM-DD trip dates for priced availability |
adults | integer | 2 | Guest count |
roomTypes | string[] | [] | Room type filters |
categoryTags | string[] | [] | Category labels or Tag:id values |
propertyTypeIds | (string|integer)[] | [] | Property type labels or IDs |
startUrls | string[] / {url}[] | [] | Ready-made Airbnb search URLs |
detailUrls | URL[] | [] | Optional genuine Airbnb /rooms/{listingId} URLs; skips destination search and requires enrichDetails=true |
enrichDetails | boolean | true | Fetch bounded listing Details and follow each discovered public Host Profile once |
detailEnrichLimit | integer | 3 | Maximum Detail/Profile enrichments, 1–10 |
maxResults | integer | 50 | Max listings to save (1–500) |
proxy | object | off | Optional Apify Proxy configuration |
Key-value store artifacts:
INPUT_ECHO— normalized public inputRUN_SUMMARY— query counts, scraped/pushed totals, billing stop flagERROR_SUMMARY— written on invalid input or scrape failure
Pricing
This Actor uses pay-per-event pricing. Platform usage costs are included — you do not pay separate Apify compute on top of the event prices below (User pays platform usage costs: No).
| Event | Price |
|---|---|
Actor Start (apify-actor-start) | $0.005 per start |
Result (apify-default-dataset-item) | $2.00 / 1,000 listings ($0.002 each) on FREE–SILVER; $1.50 / 1,000 ($0.0015 each) on GOLD–DIAMOND |
Every dataset row is billed as one result.
Store discount tiers
| Tier | $/1,000 | per result |
|---|---|---|
| FREE* | $2.000 | $0.002 |
| BRONZE | $2.000 | $0.002 |
| SILVER | $2.000 | $0.002 |
| GOLD | $1.500 | $0.0015 |
| PLATINUM | $1.500 | $0.0015 |
| DIAMOND | $1.500 | $0.0015 |
*FREE is the list price before any Store volume discount. GOLD, PLATINUM, and DIAMOND pay $1.50 / 1,000.
Example cost estimates
| Listings | FREE–SILVER | GOLD–DIAMOND |
|---|---|---|
| 20 | ~$0.045 | ~$0.035 |
| 1,000 | ~$2.005 | ~$1.505 |
| 10,000 | ~$20.005 | ~$15.005 |
*Assumes one Actor start plus the tier result price. Exact start billing can scale with allocated memory (one start event per GB, minimum one). This Actor defaults to 512 MB, so a typical run is one start event.
Set a Maximum charge per run in Console if you want a hard PPE budget ceiling — the Actor stops pushing when the remaining dataset-item budget is exhausted.
Tips for better Airbnb stay data
- Start with
maxResults5–20 before city-wide runs. - Keep
detailEnrichLimitsmall when you need lead enrichment without opening every listing Detail. - Leave dates empty for flexible search; set both check-in and check-out for trip-specific pricing.
- Prefer one
categoryTagfirst; multiple tags multiply search rounds. - If a category or property-type ID drifts, copy the filtered UI URL into
startUrls. - Use residential proxy for production volume; skip proxy for cheap local/cloud smoke tests when the datacenter path works.
- Schedule weekly runs on the same destination to build a pricing time series.
FAQ
Can I scrape Airbnb without an API key or login?
Yes. The Actor uses public Airbnb search pages. You do not need an Airbnb developer key or account.
Does this scrape Experiences or Services?
No. Scope is Stays (/homes) only — room types, category rail, and property types.
Why did I get fewer listings than maxResults?
Airbnb availability, dates, filters, captchas, or empty markets can shrink the result set. Broaden the destination, clear dates/filters, or retry with residential proxy.
How do I get prices in JPY / EUR / GBP?
Set market (and/or currency) so the search uses display_currency. Card currency can still vary by locale; the Actor falls back to your configured currency when parsing.
Can I use my own Airbnb search URL?
Yes. Put one or more URLs in startUrls. Pagination still respects maxResults via items_offset when applicable.
Standby / Live View
GET /— service metadataGET /health— health checkGET /input-example— sample inputGET /openapi.json— OpenAPI document
Standby is for live-view metadata. Use normal Actor runs for scraping.
Disclaimer
This Actor is not affiliated with Airbnb. Use it only on publicly available pages, respect Airbnb’s terms and applicable law, and keep request volume reasonable. You are responsible for how you use the data.
Related Actors
All 77 public Actors from [lentic_clockss]. Click a name to open the Store detail page.
Jobs & Freelance
- LinkedIn Jobs Scraper
- Bayt Jobs Scraper
- Fiverr Gigs Scraper
- Freelancer.com Scraper
- Glassdoor Scraper
- Himalayas Jobs Scraper
- Indeed Jobs Scraper
- Jobicy Remote Jobs Scraper
- RemoteOK Jobs Scraper
- SEEK Jobs Scraper
- Upwork Jobs Scraper
Real Estate
- Zillow & Zumper Scraper
- Realtor.com Scraper
- 99.co Scraper
- Realtor.com Agents Scraper
- Apartments.com Rental Scraper
- Bayut Scraper
- Craigslist Housing Scraper
- Daft.ie Scraper
- Dot Property Scraper
- FINN.no Scraper
- Funda Scraper
- Hepsiemlak Scraper
- Idealista Scraper
- Immobiliare.it Scraper
- ImmoScout24 Scraper
- Naver Land Scraper
- OpenSooq Scraper
- Otodom Scraper
- Property Finder Scraper
- PropertyGuru Scraper
- realestate.com.au Scraper
- Realtor.ca Scraper
- Rightmove Scraper
- SeLoger Scraper
- SUUMO Scraper
- Zillow Group Scraper
E-commerce
- Shopee Search Scraper
- E-commerce Scraper
- 1688 Global Product Search Scraper
- Allegro Scraper
- Amazon Search Scraper
- ASOS Product Scraper
- Cdiscount Product Scraper
- Costco Product Scraper
- Coupang Product Scraper
- Etsy Scraper
- Lazada Scraper
- MercadoLibre Scraper
- Mercari Japan Scraper
- Rakuten Japan Scraper
- SHEIN Product Scraper
- Target Product Scraper
- Temu Product Scraper
- Walmart Product Scraper
Travel & Stays
- Booking.com & Airbnb Scraper
- Agoda Scraper
- Airbnb Listings Scraper
- Booking.com Hotels Scraper
- Despegar Scraper
- Expedia Scraper
- Traveloka Scraper
- Travelstart Flights Scraper
- Trip.com Scraper
- TripAdvisor Scraper
Social & Content
Ads Intelligence
Local & Maps
General Tools
→ Browse the full profile: apify.com/lentic_clockss