Airbnb Property Details Scraper · 30+ Fields by City or URL
Pricing
$10.00/month + usage
Airbnb Property Details Scraper · 30+ Fields by City or URL
Extract full Airbnb listing data from any city worldwide. Get pricing, amenities, host info, ratings, coordinates, and images — one structured row per property, ready to export.
Pricing
$10.00/month + usage
Rating
0.0
(0)
Developer
Corentin Robert
Actor stats
0
Bookmarked
31
Total users
6
Monthly active users
12 days ago
Last modified
Categories
Share
Airbnb Property Details Scraper
Turn Airbnb listing pages into a structured table — one row per property with amenities, capacity, pricing context, host display (name, Superhost flag, tenure), ratings, coordinates, images, and a completeness score. Export to CSV, JSON, or Excel for analysis, comps, or internal tools.
No company legal / B2B contact fields — this actor is listing intelligence only. For pro host emails, phones, and company details at scale, use Airbnb Professional Host Scraper on Apify. Custom integrations: corentin@outreacher.fr
City-mode discovery (domain per country, autocomplete, optional 23-pass merged search) is intentionally the same as that actor; the dataset is different: here you get deep listing fields, there you get pro-host contact enrichment.
Why use it
| Benefit | What it means for you |
|---|---|
| Full listing record | Description, room type, beds/baths/guests, amenity list + common flags (Wi‑Fi, pool, etc.) |
| Host (display) | Name, photo, Superhost / Host (neutral labels), years hosting — not company registry or contact enrichment |
| Stable id | listingId plus canonical url for dedup and joins with your own data |
| Photos | images — structured carousel data plus the same HTML muscache URL sweep as the Professional Host actor (merged, deduped) |
| Location | City-style location string plus latitude / longitude when available |
| Pricing | pricePerNight / totalPrice from the stay window used for the fetch (search dates are internal to the actor and are not exported) |
| Quality signal | completenessScore (0–100) from how many fields were filled |
What you get (columns)
Key fields include: listingId, url, title, propertyType, roomType, propertyCategory, description, location, latitude, longitude, guests, bedrooms, bathrooms, beds, pricePerNight, totalPrice, host fields, amenity booleans, amenities, rating, ratingCount, mainImage, images, extractedAt, completenessScore.
Locales: Phase 2 requests use Accept-Language from the listing domain (e.g. .es, .de, .com). Parsed fields like roomType use neutral English where we split the subtitle; raw propertyType / amenities stay in the page language.
The Apify dataset has table views (overview, amenities) in .actor/dataset_schema.json.
How to run
Step 1 — Mode
- City search — Enter one or more lines in
City, Country(e.g.Lyon, France). Each line runs a sequential search; discovered/rooms/…links are merged, then every listing is scraped. - Listing URLs — Paste one or many
/rooms/{id}URLs (Apify request list or JSON array of strings /{ "url": "…" }).
If listingUrls is non-empty, the actor always uses URL mode (safe for saved JSON).
Step 2 — Search filters (city mode only)
Optional: Maximum coverage (multiDateSearch) — same multi-pass strategy as the Professional Host actor (merged, deduplicated URLs); search variants run up to 10 in parallel by default for speed. Also: min/max total stay price (€ for the whole trip, not per night) + number of nights that total refers to (default 5), property type (apartment/house/…), pool/jacuzzi (empty by default). City search paginates until there is no next page (no UI cap). City search always uses Airbnb autocomplete for the search URL (no UI toggle).
Examples
City + filters — see input-city-with-filters.json.
Several cities:
{"mode": "city","city": ["Lyon, France", "Marseille, France"]}
Bulk URLs — see input-bulk-listings.json.
Single listing (recommended shape):
{"mode": "bulkUrls","listingUrls": [{ "url": "https://www.airbnb.fr/rooms/46034337" }]}
Legacy: listingUrl (string) is still read by the code if listingUrls is empty.
Who it’s for
- Revenue / pricing analysts comparing listings and amenities
- Operators and PMs auditing portfolio or competitor sets
- Data teams building comps tables or enriching internal listings with
listingId
Developers
- Local run:
input.jsonin the project root is merged when not on Apify (seesrc/main.js). - Tests:
npm run test:unit— pure input / URL builders only (no network). - Phase 1 lives in src/phase1CollectUrls.js; input helpers in src/inputResolve.js.
- Proxy: optional
proxyConfigurationin input (Apify proxy groups).
Changelog
See CHANGELOG.md.