Airbnb Listing Details Scraper
Pricing
from $1.50 / 1,000 results
Airbnb Listing Details Scraper
Paste any Airbnb /rooms/<id> URL and get every PDP field: photos, amenities, host info, ratings, house rules, location, pricing, and more. Fast Cheerio scraper, no browser, undercuts the market.
Pricing
from $1.50 / 1,000 results
Rating
3.7
(4)
Developer
Crikit
Maintained by CommunityActor stats
1
Bookmarked
80
Total users
21
Monthly active users
9 hours ago
Last modified
Categories
Share
Scrape any Airbnb listing by pasting its /rooms/ URL or listing ID. This Airbnb listing scraper returns the complete property detail page as structured JSON: every photo, the full amenity list, host profile, ratings and category breakdown, house rules, capacity, room topology, and location — plus live pricing for your dates and an optional day-by-day availability calendar in the same row.
No Airbnb API key, no login, and no headless browser. Results land in a structured dataset you can export to JSON, CSV, Excel, or XML, or pull straight from the Apify API.
What is Airbnb Listing Details Scraper?
Airbnb Listing Details Scraper is an Apify Actor that extracts full listing detail pages from Airbnb and returns them as clean, structured records. It runs on Airbnb's own persisted-GraphQL endpoint over plain HTTP with no headless browser, which makes it roughly eight times faster and cheaper than a Playwright-based stack. Supply checkIn and checkOut and the same request also returns the quoted price; turn on includeCalendar and you get availability too, so one run replaces three.
What data can this Airbnb listing scraper extract?
Every run writes one row per listing. The full schema carries 37 fields; the most-used ones are below.
| Field | Type | Description |
|---|---|---|
extractionStatus | string | Outcome for this listing. 'full' = complete PDP payload extracted (the success case — 99%+ of inputs); 'partial' =... |
id | string | Airbnb listing identifier. Null only for a run-level error item. |
url | string | Listing URL requested by the actor. Null only for a run-level error item. |
finalUrl | string | URL after redirects, when available. |
canonicalUrl | string | Canonical Airbnb URL from SEO metadata. |
title | string | Listing title from the PDP payload. |
description | string | Plain-text long listing description. |
propertyType | string | Airbnb property type label. |
roomType | string | Room type value from Airbnb event metadata. |
personCapacity | number | Maximum number of guests advertised for the listing. |
bedrooms | number | Bedroom count parsed from listing title metadata. |
beds | number | Bed count parsed from listing title metadata. |
bathrooms | number | Bathroom count parsed from listing title metadata. |
coordinates | object | Approximate listing latitude and longitude. |
locationSubtitle | string | Location subtitle shown on the listing page. |
host | object | Host profile, verification, response, co-host, and metric details. |
coverImage | string | Primary listing image URL. |
photos | array | Ordered listing photos with labels and room categories. |
amenities | array | Flat amenity list with availability and category metadata. |
amenityGroups | array | Amenities grouped by Airbnb category. |
reviewCount | number | Visible review count. |
overallRating | number | Overall star rating. |
See the Output tab in Apify Console for all 37 fields.
How to scrape Airbnb listing details
- Open Airbnb Listing Details Scraper and click Try for free.
- Paste one or more Airbnb
/rooms/<id>URLs intostartUrls, or pass bare IDs tolistingIds. - Set
checkInandcheckOutto get pricing — Airbnb only quotes a price against real dates, so without them every price field is empty by design. Set the guest mix withadults,children,infants, andpets. - Turn on
includeCalendarand setcalendarMonthsif you also want day-by-day availability. - Choose
currencyandlocale, and useincludeInlineReviewsfor a review sample in the same row. - Click Start and watch rows appear live in the Output tab.
- Export the dataset as JSON, CSV, Excel, or XML — or fetch it from the Apify API once the run finishes.
Airbnb Listing Details Scraper input options
| Input | Type | What it does | Default |
|---|---|---|---|
startUrls | array | One or more Airbnb listing URLs (e.g. https://www.airbnb.com/rooms/12937). Mix freely with listingIds below. Each... | see schema |
listingIds | array | Convenience input — pass just the numeric listing IDs and we'll build the URLs for you. Mix with startUrls above. | |
checkIn | string | YYYY-MM-DD. Supply check-in AND check-out to get real pricing for those dates: priceAmount, pricePerNightAmount, the... | |
checkOut | string | YYYY-MM-DD. Must be after check-in. | |
adults | integer | Guest count used for the price quote. Defaults to 1. | 1 |
children | integer | Children (ages 2-12) included in the quote. | |
infants | integer | Infants (under 2) included in the quote. | |
pets | integer | Pets included in the quote. Affects pet fees in the price breakdown. | |
includeCalendar | boolean | Fetch day-by-day availability (bookable, min/max nights, check-in eligibility) plus an occupancy summary. Costs one... | false |
calendarMonths | integer | How many months of availability to pull (1-12). Ignored when the calendar is off. | 6 |
includePricing | boolean | Fetch the price quote when check-in/check-out are set. Turn off to skip the extra request if you only need static... | true |
includeInlineReviews | boolean | Fetch the first few reviews per listing (via the same GraphQL backend) so you get a ready-to-use preview alongside... | true |
inlineReviewsCount | integer | How many inline reviews to attach per listing (max 50). Ignored when includeInlineReviews is off. | 6 |
currency | string | Currency for all prices (USD, EUR, GBP, CAD, AUD, ...). Verified 2026-08-30: this is honoured regardless of your... | "USD" |
locale | string | Locale for human-readable text in the response (e.g. en-US, en-GB, de, fr, es). Affects amenity labels, review... | "en-US" |
maxItems | integer | Hard cap on the total number of listings to push. Leave empty for no limit. |
Proxy is configured through the standard proxyConfiguration object; the defaults shipped with this Actor are already tuned for the target site.
Example output
{"extractionStatus": "active","id": "a1b2c3d4","url": "https://example.com/item/12345","finalUrl": "https://example.com/item/12345","canonicalUrl": "https://example.com/item/12345","title": "Example title","description": "Example text ...","propertyType": "...","roomType": "...","personCapacity": 42.5,"bedrooms": 3,"beds": 3,"bathrooms": 3,"coordinates": {"...": "..."},"locationSubtitle": "Example title","host": {"...": "..."},"coverImage": "...","photos": ["https://example.com/image-1.jpg"]}
How much does it cost to scrape Airbnb?
This Actor runs on pay per result pricing: $0.0015 per listing ($1.5 per 1,000). A one-time start fee of $0.00005 applies per run.
| Results | Approximate cost |
|---|---|
| 1,000 | $1.50 |
| 10,000 | $15.00 |
| 100,000 | $150.00 |
You pay for rows you actually receive, so a search that returns nothing costs nothing beyond the start fee. Every Apify account includes free monthly usage credit, so you can trial Airbnb Listing Details Scraper at no cost.
What can you build with Airbnb data?
Audit a short-term-rental portfolio
Pull every listing you manage in one run and check that photos, amenities, and house rules are consistent across the portfolio — the amenity array makes gaps obvious at a glance.
Build competitor comp sheets
Take listing URLs from a search run and enrich each one with capacity, bed count, amenity list, and rating so your comp set compares like with like rather than by price alone.
Power a listing-quality or SEO scoring tool
Photo counts, description length, amenity coverage, and rating all arrive in one row, which is everything a listing-optimisation score needs as input.
Enrich real-estate and investment models
personCapacity, bedrooms, beds, bathrooms, and coordinates give you the physical property profile to pair with revenue data when underwriting a purchase.
Collect training data for property-description models
Title, description, amenity groups, and photo URLs together form a clean multimodal record per property.
Get price, facts, and availability in one request
With dates and includeCalendar set, a single row carries the static property profile, the live quote for your stay, and the forward calendar — replacing three separate scraping jobs.
Airbnb scraping tips and limits
- Feed this Actor from Airbnb Search Scraper output — the
urlfield on every search row is exactly whatstartUrlsexpects. extractionStatustells you whether a listing resolved fully, partially, or was unavailable. Filter on it before analysis rather than assuming every row is complete.currencyis honoured regardless of proxy country, and the output reports bothcurrency(what Airbnb actually returned) andcurrencyRequestedso a mismatch is visible rather than silent.- Turn
includePricingoff when you only need static facts — it saves a request per listing. includeRawPayloadis useful when you need a field this Actor does not surface yet — the raw page data is there.
Integrations and automation
Run Airbnb Listing Details Scraper on a schedule to keep a Airbnb dataset fresh, or trigger it from your own stack through the Apify API and the official JavaScript and Python clients. Native integrations push results into Google Sheets, Slack, Airtable, Zapier, Make, GitHub, or any webhook endpoint. The Actor also works as an MCP tool, so an AI agent can call it directly.
Related scrapers
| Actor | What it does |
|---|---|
| Airbnb Search Scraper | Find the listings first — search any destination for $0.50 per 1,000. |
| Airbnb Reviews Scraper | Every review on a listing, fully paginated. |
| Airbnb Host Listings Scraper | The host profile plus every other listing they manage. |
| Airbnb Availability Calendar Scraper | Day-by-day availability for the next 12 months. |
Frequently asked questions
Can I scrape an Airbnb listing without the listing URL?
Yes. Pass the numeric listing ID to listingIds and the Actor builds the URL for you. IDs are the digits at the end of any airbnb.com/rooms/... link.
Does it include reviews?
It can include a sample inline via includeInlineReviews, up to 50 per listing. For every review with full pagination, use the Airbnb Reviews Scraper instead.
Why are all my price fields empty?
Airbnb only quotes a price against real dates. Supply both checkIn and checkOut and the price fields populate; without them they are empty by design, not because the run failed.
Do I need a Airbnb API key?
No. Airbnb Listing Details Scraper reads publicly available Airbnb pages and endpoints directly, so there is no key to obtain, no OAuth app to register, and no account to connect.
Can I export Airbnb data to CSV, Excel, or Google Sheets?
Yes. Every run stores results in an Apify dataset that exports to JSON, JSONL, CSV, Excel, XML, or HTML with one click, and the Google Sheets integration writes rows straight into a spreadsheet.
Can I run Airbnb Listing Details Scraper on a schedule?
Yes. Apify schedules run the Actor hourly, daily, weekly, or on any cron expression, and webhooks can notify your systems the moment a run finishes.
Is it legal to scrape Airbnb?
Scraping publicly available data is broadly lawful in the US and EU, but the answer depends on what you collect and how you use it. This Actor is built to gather public listing information that Airbnb publishes publicly, with host names appearing as they do on the live page. Personal data carries extra obligations under GDPR and CCPA. Read Apify's guide on whether web scraping is legal and take your own legal advice for your use case.
Support and feedback
Found a bug, a missing field, or a Airbnb page shape this Actor does not handle yet? Open an issue from the Issues tab on the Actor page. Feature requests and custom-scraper enquiries are welcome there too.