Airbnb Property Details Scraper · 30+ Fields by City or URL avatar

Airbnb Property Details Scraper · 30+ Fields by City or URL

Pricing

$10.00/month + usage

Go to Apify Store
Airbnb Property Details Scraper · 30+ Fields by City or URL

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

Corentin Robert

Maintained by Community

Actor stats

0

Bookmarked

31

Total users

6

Monthly active users

12 days ago

Last modified

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

BenefitWhat it means for you
Full listing recordDescription, 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 idlistingId plus canonical url for dedup and joins with your own data
Photosimages — structured carousel data plus the same HTML muscache URL sweep as the Professional Host actor (merged, deduped)
LocationCity-style location string plus latitude / longitude when available
PricingpricePerNight / totalPrice from the stay window used for the fetch (search dates are internal to the actor and are not exported)
Quality signalcompletenessScore (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.json in the project root is merged when not on Apify (see src/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 proxyConfiguration in input (Apify proxy groups).

Changelog

See CHANGELOG.md.