Airbnb Search Scraper avatar

Airbnb Search Scraper

Pricing

from $4.99 / 1,000 results

Go to Apify Store
Airbnb Search Scraper

Airbnb Search Scraper

A robust, high-performance utility designed for developer automation, data integration, and AI training. Features built-in captcha bypass, headful/headless browser execution, and proxy support to scrape Airbnb data seamlessly, reliably, and at scale.

Pricing

from $4.99 / 1,000 results

Rating

0.0

(0)

Developer

Coding Frontned

Coding Frontned

Maintained by Community

Actor stats

0

Bookmarked

22

Total users

3

Monthly active users

9 days ago

Last modified

Share

Extract validated public Airbnb search cards or specific room pages. The Actor supports bounded pagination, optional detail-page enrichment, first-page reviews, deduplication, filters, and configurable Apify proxying.

Modes

  • search: requires location; returns up to maxItems unique room cards. Set deepScrape:true to enrich each card from its public room page.
  • productUrl: requires one or more public airbnb.com/rooms/{id} URLs and extracts room details directly. A search location is not required.

deepScrape defaults to false for a faster, lower-cost search. includeReviews is applied only while reading detail pages. Residential proxying is the default because Airbnb may restrict datacenter traffic.

Input

FieldDefaultNotes
modesearchsearch or productUrl
locationRequired only for search mode, maximum 200 characters
checkIn, checkOutOptional future YYYY-MM-DD pair; checkout must follow check-in
guests21–16
maxItems101–100 verified records
maxPages31–20 public search pages
priceMin, priceMaxNon-negative local-currency bounds
propertyTypeanyany, entire_home, private_room, or shared_room
productUrlsUp to 100 public Airbnb room URLs; canonicalized and deduplicated
deepScrapefalseEnrich search cards from room pages
includeReviewstrueExtract up to ten visible reviews on detail pages
proxyConfigurationResidentialStandard Apify proxy configuration; may be explicitly disabled

Example bounded search:

{
"mode": "search",
"location": "Paris, France",
"guests": 2,
"maxItems": 3,
"maxPages": 1,
"deepScrape": false,
"includeReviews": false,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"]
}
}

Output

The default dataset contains verified listing rows only. Core fields are position, listingId, listingTitle, link, detail, and scrapedAt. Search rows can also include prices, ratings, review counts, property type, room counts, cancellation signal, thumbnails, and host/favourite badges. Detail rows can include a compact detailData object with description, capacity, host, ratings, pricing, amenities, policies, coordinates, images, neighbourhood, and reviews.

Optional unavailable values are omitted rather than emitted as empty strings, arrays, objects, or null. Room URLs are canonicalized to https://www.airbnb.com/rooms/{id} and deduplicated globally.

Every run writes OUTPUT with success, found/partial/explicit-empty status, item/page/failure counts, bounded failure messages, and elapsed time. Blocked pages, parser drift, and unverifiable zero-result pages fail the run; an explicit Airbnb empty-search state may succeed with zero rows.

Local development

npm ci --ignore-scripts
npm test
npm run lint
apify validate-schema
apify run --input-file qa-inputs/local-search.json

Use only public pages and comply with Airbnb's terms, robots guidance, rate limits, privacy obligations, and applicable law.