Airbnb Listings Scraper avatar

Airbnb Listings Scraper

Pricing

from $0.03 / 1,000 result extracteds

Go to Apify Store
Airbnb Listings Scraper

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

Hanna Nosova

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

1

Monthly active users

5 days ago

Last modified

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

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?

FieldDescription
urlPublic Airbnb listing URL
listingIdAirbnb listing identifier when available
titleListing title or public name
nameListing name duplicate for compatibility
roomTypePublic room/property type text
categoryPublic category tag when available
locationPublic location text
priceNumeric price parsed from visible price text
priceTextOriginal visible price string
currencyCurrency code when known
ratingPublic average rating
reviewsCountPublic review count
badgesPublic badges shown on search results
isSuperhostSuperhost signal when visible
amenitiesPublic amenities from listing pages when available
imageUrlsPublic listing images
latitudePublic approximate latitude when available
longitudePublic approximate longitude when available
sourcesearch or listing
scrapedAtISO 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

  1. Open Airbnb in your browser.
  2. Search for a destination.
  3. Copy the Airbnb search results URL.
  4. Paste it into startUrls.
  5. Set maxItems to the number of listings you need.
  6. Run the actor.
  7. Export the dataset.

How to scrape Airbnb room URLs

  1. Copy one or more public Airbnb room URLs.
  2. Paste them into startUrls.
  3. Keep maxItems equal to or above the number of URLs.
  4. Run the actor.
  5. 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

SettingJSON keyUse it forExample
Airbnb start URLsstartUrlsPublic Airbnb search result URLs or room/listing URLs.[{"url":"https://www.airbnb.com/s/New-York--NY/homes"}]
Location searchlocationOptional Airbnb destination search.New York, NY
Check-in datecheckInOptional stay start date in YYYY-MM-DD format.2026-09-10
Check-out datecheckOutOptional stay end date in YYYY-MM-DD format.2026-09-15
AdultsadultsAdult guest count for generated searches.2
Maximum listingsmaxItemsMaximum listing records saved.25
CurrencycurrencyPreferred currency code for generated searches and fallback output.USD
Proxy configurationproxyConfigurationOptional 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 maxItems for 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 ApifyClient
import os
client = 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().items
print(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.

Explore other data extraction tools from the same Apify account:

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.