Airbnb Search Scraper
Pricing
from $4.99 / 1,000 results
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
Maintained by CommunityActor stats
0
Bookmarked
22
Total users
3
Monthly active users
9 days ago
Last modified
Categories
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: requireslocation; returns up tomaxItemsunique room cards. SetdeepScrape:trueto enrich each card from its public room page.productUrl: requires one or more publicairbnb.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
| Field | Default | Notes |
|---|---|---|
mode | search | search or productUrl |
location | — | Required only for search mode, maximum 200 characters |
checkIn, checkOut | — | Optional future YYYY-MM-DD pair; checkout must follow check-in |
guests | 2 | 1–16 |
maxItems | 10 | 1–100 verified records |
maxPages | 3 | 1–20 public search pages |
priceMin, priceMax | — | Non-negative local-currency bounds |
propertyType | any | any, entire_home, private_room, or shared_room |
productUrls | — | Up to 100 public Airbnb room URLs; canonicalized and deduplicated |
deepScrape | false | Enrich search cards from room pages |
includeReviews | true | Extract up to ten visible reviews on detail pages |
proxyConfiguration | Residential | Standard 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-scriptsnpm testnpm run lintapify validate-schemaapify 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.
