Airbnb Listings Scraper
Pricing
from $0.03 / 1,000 result extracteds
Airbnb Listings Scraper
Scrape public Airbnb listings from search pages and room URLs with prices, ratings, review counts, amenities, images, and listing metadata.
Pricing
from $0.03 / 1,000 result extracteds
Rating
0.0
(0)
Developer
Hanna Nosova
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Share
Scrape public Airbnb listing data from search pages, room URLs, or a location search. Get listing URLs, titles, prices, ratings, review counts, images, coordinates, badges, amenities, and other public metadata in a clean dataset.
At a glance
- Airbnb search and room URLs: scrape public search result pages, individual room URLs, or a generated location search.
- Listing metadata: save URLs, listing IDs, titles, room types, locations, prices, ratings, reviews, badges, images, coordinates, and source type.
- Trip filters: add check-in, check-out, adult count, and currency for generated location searches.
- Market snapshots: schedule repeatable searches for rental supply, pricing, review count, and rating analysis.
- API-ready output: export public Airbnb rows to CSV, JSON, Excel, dashboards, BI tools, or AI agents.
Ready-to-run examples
- Austin market supply - collect a small public Airbnb supply snapshot for Austin.
- New York listings - export public New York listing prices, ratings, reviews, and coordinates.
- Search and room URLs - combine a search results URL with individual room URLs in one run.
What can it do?
Airbnb Listings Scraper helps you collect public Airbnb supply data for market research, pricing checks, competitive tracking, and hospitality analysis.
It can start from Airbnb search URLs, individual room URLs, or a simple location such as New York, NY.
The actor saves structured rows to an Apify dataset so you can export results as JSON, CSV, Excel, XML, or HTML.
Who is it for?
- Property managers: track competing short-term rentals and public listing changes.
- Revenue analysts: compare visible nightly price signals and review counts.
- Travel market researchers: map public supply by destination and listing type.
- Real estate teams: evaluate neighborhood rental density and public coordinates.
- Data teams: build hospitality dashboards from clean dataset rows.
- Journalists: research public accommodation trends and market snapshots.
Why use this Airbnb scraper?
- Simple inputs for both search pages and listing pages.
- Public listing fields in one flat dataset.
- Optional check-in, check-out, adults, and currency filters.
- Conservative defaults for inexpensive first runs.
- Works well for repeatable market snapshots.
- Exports directly through Apify datasets and API clients.
What Airbnb data can you extract?
| Field | Description |
|---|---|
url | Public Airbnb listing URL |
listingId | Airbnb listing identifier when available |
title | Listing title or public name |
name | Listing name duplicate for compatibility |
roomType | Public room/property type text |
category | Public category tag when available |
location | Public location text |
price | Numeric price parsed from visible price text |
priceText | Original visible price string |
currency | Currency code when known |
rating | Public average rating |
reviewsCount | Public review count |
badges | Public badges shown on search results |
isSuperhost | Superhost signal when visible |
amenities | Public amenities from listing pages when available |
imageUrls | Public listing images |
latitude | Public approximate latitude when available |
longitude | Public approximate longitude when available |
source | search or listing |
scrapedAt | ISO timestamp of extraction |
How much does it cost to scrape Airbnb listings?
This actor uses pay-per-event pricing. A $0.005 start event is charged once per run, and a result event is charged for each saved listing row.
Current BRONZE pricing is $0.000049046 per saved listing, about $0.049 per 1,000 saved listings, with lower per-listing prices on higher Apify tiers.
The default input is intentionally small so your first run is inexpensive.
How to scrape Airbnb search results
- Open Airbnb in your browser.
- Search for a destination.
- Copy the Airbnb search results URL.
- Paste it into
startUrls. - Set
maxItemsto the number of listings you need. - Run the actor.
- Export the dataset.
How to scrape Airbnb room URLs
- Copy one or more public Airbnb room URLs.
- Paste them into
startUrls. - Keep
maxItemsequal to or above the number of URLs. - Run the actor.
- Review the dataset rows.
How to use the location input
Use location when you do not already have a search URL.
Example:
{"location": "New York, NY","maxItems": 25,"currency": "USD"}
You can add optional trip filters:
{"location": "Paris, France","checkIn": "2026-09-10","checkOut": "2026-09-15","adults": 2,"maxItems": 50,"currency": "EUR"}
Input configuration
| Setting | JSON key | Use it for | Example |
|---|---|---|---|
| Airbnb start URLs | startUrls | Public Airbnb search result URLs or room/listing URLs. | [{"url":"https://www.airbnb.com/s/New-York--NY/homes"}] |
| Location search | location | Optional Airbnb destination search. | New York, NY |
| Check-in date | checkIn | Optional stay start date in YYYY-MM-DD format. | 2026-09-10 |
| Check-out date | checkOut | Optional stay end date in YYYY-MM-DD format. | 2026-09-15 |
| Adults | adults | Adult guest count for generated searches. | 2 |
| Maximum listings | maxItems | Maximum listing records saved. | 25 |
| Currency | currency | Preferred currency code for generated searches and fallback output. | USD |
| Proxy configuration | proxyConfiguration | Optional proxy settings. Start without a proxy. | {"useApifyProxy":false} |
Example input
{"startUrls": [{ "url": "https://www.airbnb.com/s/New-York--NY/homes" },{ "url": "https://www.airbnb.com/rooms/50633275" }],"location": "New York, NY","adults": 1,"maxItems": 25,"currency": "USD","proxyConfiguration": { "useApifyProxy": false }}
Example output
{"url": "https://www.airbnb.com/rooms/123456789","listingId": "123456789","title": "Sunny apartment near Central Park","name": "Sunny apartment near Central Park","roomType": "Entire rental unit","category": "Tag:8678","location": "New York, United States","price": 187,"priceText": "$187 night","currency": "USD","rating": 4.91,"reviewsCount": 122,"badges": ["Guest favorite"],"isSuperhost": false,"amenities": [],"imageUrls": ["https://a0.muscache.com/...jpg"],"latitude": 40.76,"longitude": -73.98,"source": "search","scrapedAt": "2026-06-15T09:00:00.000Z"}
Tips for better results
- Use real Airbnb search URLs when you need exact filters.
- Use a low
maxItemsfor your first test. - Add check-in and check-out dates for price comparisons.
- Use the same input repeatedly to build time-series snapshots.
- Use room URLs when you need richer page-level metadata.
- Export CSV for spreadsheets and JSON for pipelines.
Common workflows
Market snapshot
Run a location search weekly and compare prices, review counts, and ratings.
Competitor monitoring
Track a fixed list of room URLs and watch public metadata changes over time.
Supply mapping
Use coordinates and locations to map public short-term rental inventory.
Pricing research
Use date filters to compare visible nightly price signals across neighborhoods.
Integrations
Use the Apify dataset export links to connect results to:
- Google Sheets
- Airtable
- BigQuery
- Snowflake
- Tableau
- Looker Studio
- Zapier
- Make
- custom ETL jobs
API usage with Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('fetch_cat/airbnb-listings-scraper').call({location: 'New York, NY',maxItems: 25,currency: 'USD'});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
API usage with Python
from apify_client import ApifyClientimport osclient = ApifyClient(os.environ['APIFY_TOKEN'])run = client.actor('fetch_cat/airbnb-listings-scraper').call(run_input={'location': 'New York, NY','maxItems': 20,'currency': 'USD',})items = client.dataset(run['defaultDatasetId']).list_items().itemsprint(items)
API usage with cURL
curl -X POST 'https://api.apify.com/v2/acts/fetch_cat~airbnb-listings-scraper/runs?token=YOUR_APIFY_TOKEN' \-H 'Content-Type: application/json' \-d '{"location":"New York, NY","maxItems":20,"currency":"USD"}'
MCP and AI agents
Connect this actor to MCP-compatible tools through Apify MCP Server:
$claude mcp add apify-airbnb-listings "https://mcp.apify.com/?tools=fetch_cat/airbnb-listings-scraper"
Use this server URL when a client asks for an MCP endpoint:
https://mcp.apify.com/?tools=fetch_cat/airbnb-listings-scraper
MCP JSON configuration example:
{"mcpServers": {"apify-airbnb-listings": {"url": "https://mcp.apify.com/?tools=fetch_cat/airbnb-listings-scraper"}}}
Example prompts:
- "Scrape 20 Airbnb listings for New York and summarize price ranges."
- "Compare ratings and review counts for these Airbnb room URLs."
- "Create a CSV of public Airbnb listings for this destination."
Data quality notes
Airbnb decides which public fields are shown on each page.
Search pages usually include prices, ratings, review counts, images, and approximate coordinates.
Room pages may include richer descriptions, amenities, and public metadata, but price visibility depends on selected dates and current Airbnb page content.
Limitations
- Only public Airbnb pages are supported.
- The actor does not log in.
- The actor does not access private booking, guest, host dashboard, or messaging data.
- Some fields can be missing when Airbnb does not show them publicly.
- Airbnb can change page content and availability at any time.
Troubleshooting
The run returned no items
Check that the URL is a public Airbnb search page or public room URL. Try a smaller maxItems and a well-known destination first.
Prices are missing
Some listing pages do not show a current nightly price unless dates are selected. Add checkIn and checkOut or use a search URL that already includes dates.
Airbnb limits the request
Enable Apify Proxy in proxyConfiguration and retry with a small maxItems value.
Legality
This actor extracts public information visible on Airbnb pages. Use it responsibly, respect Airbnb terms, and avoid collecting personal or private information. You are responsible for making sure your use case complies with applicable laws and platform rules.
FAQ
Can I scrape private Airbnb account data?
No. This actor is designed for public Airbnb search and room pages only.
Why do some listings have missing prices or amenities?
Airbnb controls which public fields are visible for each page, date range, and market. Add trip dates or use a public search URL that already shows the fields you need.
Related scrapers
Explore other data extraction tools from the same Apify account:
- Rightmove Property Listings Scraper
- Yandex Maps Scraper
- YouTube Transcript Scraper
- Apple App Store Reviews Scraper
Changelog
0.1
Initial version for public Airbnb search and listing pages.
Support
If you have trouble with an input, share the run URL and the public Airbnb URL you tried so the issue can be reproduced.
Field reference
Use the field table above as the canonical output reference.
Export formats
Apify supports dataset export as JSON, CSV, Excel, XML, RSS, and HTML.
Scheduling
Use Apify schedules to run repeat market snapshots daily, weekly, or monthly.
Webhooks
Use Apify webhooks to send completed dataset URLs to your pipeline after every run.
Storage
Each run stores output in the default Apify dataset. You can keep, export, or delete datasets according to your retention needs.