✈️ Booking Data Scraping + CSV, JSON & API avatar

✈️ Booking Data Scraping + CSV, JSON & API

Pricing

from $8.40 / 1,000 rows

Go to Apify Store
✈️ Booking Data Scraping + CSV, JSON & API

✈️ Booking Data Scraping + CSV, JSON & API

Extract Airbnb data in bulk and export to CSV, JSON or API. No cookies, no login. Pay only for rows that return data. Returns title, url, description, author, publishedAt, image.

Pricing

from $8.40 / 1,000 rows

Rating

0.0

(0)

Developer

Tarek Etman

Tarek Etman

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Airbnb Scraper

Airbnb Scraper extracts structured records in bulk and exports them for analysis, enrichment and downstream pipelines. It covers google, maps, email, tool, extracting, contact, information, place, metadata, listings, locates, identifier, category, keyword, city, address, coordinates, custom, polygons, returns.

Built for teams that need phone, numbers, websites, social, media, links, across, linkedin without maintaining scrapers, proxies or browser infrastructure themselves.

Quick start (SDK examples)

Python

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("airbnb-scraper").call(run_input={"targets": ["<target>"], "maxResults": 100})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)

JavaScript

import { ApifyClient } from "apify-client";
const client = new ApifyClient({ token: "YOUR_APIFY_TOKEN" });
const run = await client.actor("airbnb-scraper").call({ targets: ["<target>"], maxResults: 100 });
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

cURL

curl -X POST "https://api.apify.com/v2/acts/airbnb-scraper/runs?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"targets":["<target>"],"maxResults":100}'

Fields returned

fielddescriptiontype
titletitle returned for every recordstring
urlurl returned for every recordstring
descriptiondescription returned for every recordstring
authorauthor returned for every recordstring
publishedAtpublishedAt returned for every recordstring
imageimage returned for every recordstring
locationlocation returned for every recordstring
currencycurrency returned for every recordstring
webhookUrlwebhookUrl returned for every recordstring
scrapedAtscrapedAt returned for every recordstring

What it does

  • Extract google, maps, email, tool, extracting, contact into structured rows.
  • Enrich each record with information, place, metadata, listings, locates, identifier.
  • Bulk export covering category, keyword, city, address, coordinates, custom.
  • Pipeline integration for polygons, returns, phone, numbers, websites, social.
  • Downstream analysis across media, links, across, linkedin, twitter, youtube.
  • Recurring monitoring of tiktok, facebook, instagram, pinterest, discord, plus.
  • Deduplicated output keyed on the record identifier.
  • Configurable result caps and runtime bounds.

Use cases

  • Lead generation — build contactable lists covering google, maps, email, tool, extracting
  • Data enrichment — attach contact, information, place, metadata, listings to an existing record set
  • Market research — map locates, identifier, category, keyword, city across a category or region
  • Competitive monitoring — track address, coordinates, custom, polygons, returns over time on a schedule
  • AI and RAG pipelines — feed clean structured rows into embeddings and retrieval
  • Warehousing — land phone, numbers, websites, social, media into BigQuery, Snowflake or Postgres

Input

Provide targets as a list of URLs or identifiers, one per line.

inputpurpose
targetsURLs or identifiers to process, one per line
maxResultshard cap on returned rows
maxSecondsruntime bound for the run
includeEmptyreturn rows that resolved to no data, or skip them

Output

Every run writes a dataset exportable as CSV, Excel, JSON, or readable directly from the Apify API. Attach a webhook to push results into your own system as soon as a run finishes.

Integrations

Works with Zapier, Make, n8n, Google Sheets, Slack, and any HTTP endpoint via webhooks. The Apify MCP server exposes this Actor to AI agents directly.

Performance and limits

Runs are concurrent and bounded by maxResults and maxSeconds. Proxy rotation and retry handling are managed for you. Failed targets are reported rather than silently dropped.

Frequently asked questions

Do I need an account or cookies?

No. The Actor reads public data only and requires no login, cookies or personal API keys.

What formats can I export?

CSV, Excel, JSON, or read the dataset straight from the Apify API.

What does a row contain?

Every row carries google, maps, email, tool, extracting, contact, information, place where available.

Can I schedule it?

Yes. Attach a schedule or a webhook and the dataset is produced on your cadence.

How do I limit cost?

Use maxResults to cap returned rows and maxSeconds to bound runtime.

Is the output stable?

Field names are fixed by the dataset schema, so downstream pipelines do not break between runs.

Field glossary

title — the title associated with the record. Present on every row where the source exposes it; absent values are returned as null rather than omitted, so column order stays stable across runs and downstream schemas do not drift. url — the url associated with the record. Present on every row where the source exposes it; absent values are returned as null rather than omitted, so column order stays stable across runs and downstream schemas do not drift. description — the description associated with the record. Present on every row where the source exposes it; absent values are returned as null rather than omitted, so column order stays stable across runs and downstream schemas do not drift. author — the author associated with the record. Present on every row where the source exposes it; absent values are returned as null rather than omitted, so column order stays stable across runs and downstream schemas do not drift. publishedAt — the publishedAt associated with the record. Present on every row where the source exposes it; absent values are returned as null rather than omitted, so column order stays stable across runs and downstream schemas do not drift. image — the image associated with the record. Present on every row where the source exposes it; absent values are returned as null rather than omitted, so column order stays stable across runs and downstream schemas do not drift. location — the location associated with the record. Present on every row where the source exposes it; absent values are returned as null rather than omitted, so column order stays stable across runs and downstream schemas do not drift. currency — the currency associated with the record. Present on every row where the source exposes it; absent values are returned as null rather than omitted, so column order stays stable across runs and downstream schemas do not drift. webhookUrl — the webhookUrl associated with the record. Present on every row where the source exposes it; absent values are returned as null rather than omitted, so column order stays stable across runs and downstream schemas do not drift. scrapedAt — the scrapedAt associated with the record. Present on every row where the source exposes it; absent values are returned as null rather than omitted, so column order stays stable across runs and downstream schemas do not drift.

Troubleshooting

  • Empty dataset — Check that targets contains reachable identifiers and that includeEmpty is set the way you expect.
  • Run times out — Lower maxResults or raise maxSeconds; very large target lists are better split across scheduled runs.
  • Missing fields — Not every source exposes every field. Absent values are returned as null so the schema stays stable.
  • Rate limiting — Proxy rotation is automatic. If a source throttles hard, reduce concurrency and retry.
  • Duplicate rows — Output is deduplicated on the record identifier; duplicates across separate runs are expected by design.

Data quality notes

Records are parsed from public sources covering google, maps, email, tool, extracting, contact, information, place, metadata, listings. Values are returned exactly as published rather than normalised or inferred, so you can audit any row back to its source URL. Timestamps are ISO-8601 UTC. Numeric counters are integers. No field is synthesised when the source does not publish it.

Scheduling and automation

Attach a schedule to run this Actor hourly, daily or weekly. Combine it with a webhook to push each finished dataset into your warehouse, CRM or Slack channel automatically. Runs are idempotent with respect to their input, so a repeated schedule produces a comparable dataset rather than a drifting one.

Support

Open an issue on the Actor's Issues tab. Include the run ID and the input used so it can be reproduced.