Automation · Travel
Airbnb Listings & Pricing Scraper
Reliable Airbnb listing, pricing, and host data — the market-leading alternative fails 1 in 13 runs; we build for the retry path from day one.
Free Apify credit covers a first run. No credit card to try.
What this Actor scrapes
Airbnb runs its own vast homes-search index with no public API and no documented quota — access is gated by anti-bot defenses, not an exhaustible rate limit. This Actor walks a search-results page (either a place name like "San Francisco, CA" or a full search URL you paste in, with your own check-in/check-out/guest filters applied) and pulls each listing's price, currency, rating, review count, host, superhost status, bedrooms/beds/bathrooms, location, and photos straight out of the page's embedded listing data. Flip on detail enrichment and we also fetch each listing's own page for its amenities list.
What we handle for you
- 🛡️ Browser fingerprint rotation —
curl-cffiimpersonates real Chrome / Firefox / Safari TLS handshakes so the target sees a browser, not Python. - 🌐 Residential proxy rotation via Apify Proxy — fresh session and exit IP on every block.
- 🔁 Retries with exponential backoff on
408 / 429 / 5xx— up to 5 attempts per page,Retry-Afterhonoured. - 🧱 Rate-limit-aware pacing — when the target pushes back, we slow down instead of getting banned.
- 🧊 Clean, typed dataset rows — Pydantic-validated, ISO-8601 timestamps, stable IDs, JSON / CSV / Excel export straight from the Apify Console.
- 💰 Pay-Per-Event pricing — you only pay for results that hit your dataset. No data, no charge.
Use cases
- STR investment comps — pull live nightly pricing and occupancy signals (ratings, review counts) for a market before buying a short-term rental property.
- Dynamic-pricing tools — feed real competitor nightly rates into your own pricing model for a neighborhood or city.
- Property-management benchmarking — compare your listings' price, rating, and amenities against nearby Superhosts.
- Housing-policy research — track short-term-rental density and pricing by neighborhood for zoning or policy studies.
- Travel-price monitoring — watch how nightly rates move for a destination as check-in dates approach.
Input
Paste this into the Apify Console, or send it as the run input over the API. Proxy settings are on by default; you rarely need to touch them.
| Field | Type | Required | What it does |
|---|---|---|---|
location | string | no | Place name, e.g. San Francisco, CA. Required if searchUrl is not set — used to build the Airbnb search URL. |
searchUrl | string | no | Full airbnb.com/s/.../homes search URL with your own filters already applied. Wins over location if both are set. |
checkIn | string | no | ISO date (YYYY-MM-DD). Appended as checkin; drives totalPrice on each row. |
checkOut | string | no | ISO date (YYYY-MM-DD), must be after checkIn. Appended as checkout. |
guests | integer | no | Number of adult guests. Appended as adults. |
maxResults | integer | no | Hard cap on dataset rows. Pagination stops once this cap is hit. |
enableDetailEnrichment | boolean | no | Fetch each emitted listing's /rooms/<id> page for its amenities list. Off by default — multiplies request volume. |
proxyCountry | string | no | 2-letter uppercase country code. Pins the residential proxy exit country for every request — never randomized. |
{
"location": "Austin, TX",
"maxResults": 3,
"enableDetailEnrichment": false,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": [
"RESIDENTIAL"
],
"apifyProxyCountry": "US"
}
} Output
One row per result, schema-validated before it is written. Export JSON, CSV, Excel or XML from the run, or read it over the API.
listing_idtitleprice_per_nighttotal_priceratingreview_counthost_nameamenitiesurl
{
"listing_id": "12345678",
"url": "https://www.airbnb.com/rooms/12345678",
"title": "Modern loft near Golden Gate Park",
"listing_type": "Entire home",
"room_type": "Entire home/apt",
"city": "San Francisco",
"country": "United States",
"lat": 37.7694,
"lng": -122.4862,
"price_per_night": 217.0,
"currency": "USD",
"total_price": 1085.0,
"rating": 4.87,
"review_count": 213,
"host_id": "987654",
"host_name": "Maria",
"is_superhost": true,
"bedrooms": 2,
"beds": 3,
"bathrooms": 1.5,
"max_guests": 4,
"amenities": [],
"image_urls": [
"https://a0.muscache.com/im/pictures/example.jpg"
],
"scraped_at": "2026-09-09T14:32:07Z"
} Pricing
| Event | Price | When |
|---|---|---|
| Actor start | $0.20 | Once per run, covers warm-up and proxy session setup. |
| Result scraped | $0.0029 | Per result written to the dataset. |
You pay only for results that land. Cap any run with maxTotalChargeUsd. See pricing & billing for worked examples.
Limitations
- Airbnb is fronted by anti-bot defenses — a residential proxy is required, and the Actor rotates its session and browser fingerprint on any block, which can still slow a run down under heavy load.
- Amenities are only populated when <code>enableDetailEnrichment</code> is on; the base search payload rarely carries them.
- Review text, full calendar/availability, and Airbnb Experiences/Luxe listings are out of scope — only aggregate rating/review count and homes search are covered.
- Prices and currency are passed through exactly as Airbnb reports them — no currency conversion is performed.
FAQ
Do I need an Airbnb account or API key?
Can I scrape a specific search with my own filters?
Why do I need check-in/check-out dates?
What does detail-page enrichment add?
Why does this need a residential proxy?
Ready to run it?
Open the listing on Apify, paste the input above, and watch rows land. If it ever breaks, it is our problem before it is yours.
Related Actors