Airbnb Property Details · Listing Intel by City avatar

Airbnb Property Details · Listing Intel by City

Pricing

from $3.49 / 1,000 results

Go to Apify Store
Airbnb Property Details · Listing Intel by City

Airbnb Property Details · Listing Intel by City

Full listing rows: description, capacity, amenities, ratings, GPS, photos, completeness — not B2B/legal contacts. City or URLs. Pro host data: apify.com/corent1robert/airbnb-professional-host-scraper · corentin@outreacher.fr

Pricing

from $3.49 / 1,000 results

Rating

0.0

(0)

Developer

Corentin Robert

Corentin Robert

Maintained by Community

Actor stats

0

Bookmarked

125

Total users

3

Monthly active users

1.2 hours

Issues response

4 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.

No login. No API key. No Airbnb account needed.


Also available

The Store does not cross-sell this suite. Pick the Actor that matches the job:

ActorUse when
Airbnb Pro HostBusiness emails and phones by city
This Actor — Property DetailsAmenities, GPS, photos, completeness
Airbnb CalendarOccupancy and day-by-day availability
Airbnb Price MonitorNightly rates across a market
Airbnb Host PortfolioMap a host’s listings from profile URLs
Airbnb ExperiencesExperience hosts, emails when enriched

Who is this for?

You are…Typical goalSuggested setup
Revenue / pricing analystCompare nightly rates and amenities across a marketCity search + price filter
STR operator / PMAudit your portfolio or a competitor setListing URLs mode (bulk)
Data team / engineerEnrich an internal table using listingIdListing URLs mode
Market researcherSnapshot a city by property type and ratingCity search + Maximum coverage
Vacation rental investorEvaluate a new market (pool supply, superhost rate)City search + Pool filter

By default you get: URL, listing ID, title, room type, capacity, amenity flags, rating, GPS, host display, and price context — typically 25–33 fields per listing.

For B2B contacts (email, phone, company name, SIREN) from professional hosts, use the companion scraper linked above.


Quick start

  1. Open the actor in Apify Console
  2. Mode: choose City search
  3. City name(s): enter Lyon, France (one per line)
  4. Click Start — results appear in the Dataset tab within minutes

To scrape specific listings instead: switch Mode to Listing URLs, paste your /rooms/… links, and run.


Ready-made examples (published tasks)

ExampleBest for
Export Airbnb listing details in LyonSTR operators snapshotting a French city for comps.
Airbnb listing intel for Barcelona marketMarket researchers comparing a second EU city.
Enrich Airbnb listing URLs with amenitiesData teams enriching an internal table of listing IDs.
Airbnb market snapshot — prices and amenitiesInvestors who want a slim price/amenity table, not the full field dump.
Export Airbnb listing details in ParisSTR operators snapshotting Paris comps.
Export Airbnb listing details in AmsterdamSTR operators snapshotting Amsterdam comps.
Export Airbnb listing details in LisbonSTR operators snapshotting Lisbon comps.
Export Airbnb listing details in BerlinSTR operators snapshotting Berlin comps.
Export Airbnb listing details in RomeSTR operators snapshotting Rome comps.
Airbnb amenities intel for London listingsInvestors comparing amenity mix in London.
Export Airbnb listing details in NiceSTR operators snapshotting Nice comps.
Enrich Airbnb URLs — market-research viewAnalysts enriching known listing URLs into a slim comps table.

What it extracts

CategoryFields
IdentitylistingId, url, title
TypepropertyType, roomType, propertyCategory
Capacityguests, bedrooms, bathrooms, beds
PricepricePerNight, totalPrice
Locationlocation, latitude, longitude
HosthostName, hostType (Superhost / Host), hostSinceYears, hostUrl
Ratingsrating, ratingCount
Amenitiesamenities (raw list), boolean flags: hasPool, hasWifi, hasParking, hasGarden, hasTerrasse, hasVueMer, hasJacuzzi, hasCheminee, hasSauna, hasHammam, hasAnimaux, hasBilliard
PhotosmainImage, images (array)
QualitycompletenessScore (0–100)
MetaextractedAt

The dataset has two table views: overview (key fields) and amenities breakdown — selectable in the Console Dataset tab.

Locales: Phase 2 detail fetches match the listing domain (.fr, .es, .de, .com). roomType is always in neutral English; raw propertyType and amenities stay in the page language.


Input parameters

Console fields

FieldTypeDefaultDescription
modeselectcitycity — search by city name; bulkUrls — scrape specific listing URLs
citystring listOne city per line. Format: City or City, Country (e.g. Lyon, France). Country improves autocomplete accuracy.
listingUrlsURL list/rooms/{id} URLs (plain strings or { "url": "…" } objects). Used when mode = bulkUrls.
multiDateSearchbooleanfalse23 search variants merged and deduplicated — same strategy as the Professional Host actor. Finds 4–6× more listings.
priceMinintegerMinimum total stay price (€). Leave empty for no floor.
priceMaxintegerMaximum total stay price (€). Leave empty for no ceiling.
priceFilterNumNightsinteger5Number of nights the total price refers to.
propertyTypesselectallFilter by apartment, house, guest_house, or hotel.
amenitiesselectnoneFilter by Pool or Jacuzzi.

API-only fields (pass via JSON input)

These are not in the Console form but are accepted by the actor:

FieldTypeDefaultDescription
maxResultsinteger0 (no cap)Stop after N listings extracted in Phase 2. 0 = unlimited.
maxPagesinteger0 (no cap)Maximum search result pages per city pass. 0 = paginate until end.
checkinstringauto (+21 days)Check-in date for search (YYYY-MM-DD).
checkoutstringauto (+26 days)Check-out date for search (YYYY-MM-DD).
adultsinteger1Number of guests for the search query.
flexibleTripLengthsstring[][]Extra flexible search passes: weekend_trip, one_week, one_month.
multiPassConcurrencyinteger10Parallel city search passes when multiDateSearch is on (max 10).
useCityAutocompletebooleantrueUse Airbnb autocomplete to resolve city → place_id.
localestringautoForce locale: fr, en, es, de, it, pt.
proxyConfigurationobjectautoApify proxy config. Defaults to datacenter proxy on cloud.

JSON example (API / bulk):

{
"mode": "city",
"city": ["Amsterdam", "Barcelona, Spain"],
"amenities": ["Pool"],
"maxResults": 200,
"maxPages": 5
}

How it works

  1. Phase 1 — Discovery: For each city, builds a search URL (Airbnb autocomplete → place_id), crawls search result pages with Cheerio (no browser needed), and collects all /rooms/… URLs.
  2. Phase 2 — Extraction: Opens each listing page, parses the niobeClientData JSON block, extracts all fields, applies locale-aware normalization, and pushes one row per listing to the dataset.

Output sample

{
"listingId": "12345678",
"url": "https://www.airbnb.fr/rooms/12345678",
"title": "Charming apartment near the canal",
"propertyType": "Logement entier : appartement",
"roomType": "Entire place",
"guests": 4,
"bedrooms": 2,
"bathrooms": 1,
"beds": 2,
"pricePerNight": 95,
"totalPrice": 475,
"location": "Amsterdam, Netherlands",
"latitude": 52.3676,
"longitude": 4.9041,
"hostName": "Marie",
"hostType": "Superhost",
"hostSinceYears": 5,
"rating": 4.87,
"ratingCount": 142,
"hasPool": false,
"hasWifi": true,
"amenities": ["Wi-Fi", "Cuisine", "Machine à laver"],
"mainImage": "https://a0.muscache.com/im/pictures/…",
"completenessScore": 82,
"extractedAt": "2026-06-29T16:00:00.000Z"
}

How much does it cost to scrape Airbnb listings?

This actor uses HTTP-only crawling (no browser) — compute is very cheap.

ScenarioApprox. cost
25 listings (test run)< $0.01
500 listings, one city~$0.05
5,000 listings, multi-city~$0.20–0.50
50,000 listings~$1–3

No residential proxies required for most cities. For heavily geo-restricted searches, enabling Apify datacenter proxies (included at no extra cost on paid plans) is sufficient.

This actor only accesses data that Airbnb makes publicly available on their website — the same pages any visitor can see without logging in. As with any data collection involving publicly visible information, ensure your use complies with Airbnb's Terms of Service and applicable regulations (GDPR, CCPA, etc.) for your specific use case.


Airbnb host cluster

This Actor is step 3 — listing intelligence after you already have URLs. For B2B emails, start at Pro Host.

StepActorBest for
1 — Discover contactsAirbnb Pro Host ScraperCity search → email, phone, company, hostProfileUrl
2 — Size the hostAirbnb Host Portfolio ScraperPaste hostProfileUrl → listing URLs
3 — Listing intelligenceThis ActorAmenities, GPS, photos, pricing context — not B2B emails
4 — AvailabilityAirbnb Calendar Availability ScraperDay-by-day calendar from listing URLs

Local development

npm install
# Write input to the Apify local storage:
cp input-city-with-filters.json storage/key_value_stores/default/INPUT.json
# Or use --input-file:
apify run --input-file=./input-city-with-filters.json

storage/ is excluded from Docker via .apifyignore. When not on Apify cloud, the actor merges the repo-root input.json (if present) with Actor.getInput() — KV input wins on key collision.

Tests: npm run test:unit — pure input / URL builders, no network.


Changelog

See CHANGELOG.md.