# Airbnb Scraper (`data_wiki/airbnb-scraper`) Actor

Scrape Airbnb listings for any city, search link or listing link, no login or cookies. Get nightly and stay prices, hosts, amenities, photos, ratings, availability calendar and guest reviews. Bulk inputs and filters. Clean JSON for pricing and market research.

- **URL**: https://apify.com/data_wiki/airbnb-scraper.md
- **Developed by:** [Data WiKi](https://apify.com/data_wiki) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

### 🚀 What is Airbnb Scraper?

**Airbnb Scraper** is an Airbnb data scraper that collects public Airbnb listings: prices, photos, ratings, hosts, amenities, availability and guest reviews. Just **type a place, paste an Airbnb search link or a listing link** and download the results as JSON, CSV or Excel. It works without an Airbnb account, login or cookies, and you can run one place or hundreds of inputs in a single run.

- 🏠 **Listings for any place:** use it as an Airbnb listings scraper for a city, a neighbourhood or a whole list of places at once.
- 💵 **Prices that say what they cover:** every price shows its check-in date, check-out date and number of nights.
- 💬 **Reviews and calendar on request:** switch on guest reviews and the availability calendar only for the runs that need them.

> 💡 **Looking for another website?** This Actor reads Airbnb only. For second-hand and property ads on a different site, see the [Facebook Marketplace listings scraper](https://apify.com/data_wiki/facebook-marketplace-scraper).

### ✨ What can this Airbnb Scraper do?

- 🔎 **Scrape Airbnb listings** from place names, Airbnb search links, listing links and listing ids, mixed in one list.
- 💵 **Read prices** for the night and for the whole stay. As an Airbnb price scraper it keeps the discounted and original price when Airbnb shows both.
- 🗓️ **Use dates and guests:** set check-in, check-out, adults, children, infants and pets to get the exact price for a stay.
- 💱 **Choose the currency and filters:** any 3-letter currency code, price per night, bedrooms, beds, bathrooms and room type.
- 🧾 **Full listing details on or off:** description, amenities, house rules, host, co-hosts, all photos and sleeping arrangements, or a fast overview only.
- 📅 **Availability calendar:** read 1 to 12 months ahead and get the share of days that are not bookable, the way an Airbnb availability calendar scraper would.
- 💬 **Scrape Airbnb reviews** with rating, text, date, language, reviewer first name and location, and the host reply, saved in a separate Reviews table.
- ⚡ **See results while it runs:** each listing is saved the moment it is ready.
- 📥 **Export** the data in **JSON, CSV, Excel, HTML or XML**.
- 🔌 **Use the API**, schedules, webhooks and **integrations with other apps** through the Apify platform.

🔓 **Airbnb scraper no login:** it only reads pages that any visitor can see, so you need no account and no cookies.

### 📊 What data can this Airbnb Scraper extract?

The Actor works as an Airbnb data extractor and returns these groups of fields for every listing.

| | | |
|---|---|---|
| 🏠 Title, property type, room type | 📍 Coordinates, location label, area notes | 💵 Price per night, stay total, nights, original price |
| 🛏️ Bedrooms, beds, bathrooms, guest capacity | ⭐ Overall rating and six category ratings | 🏅 Superhost, guest favourite, badges |
| 👤 Host name, rating, years hosting, response rate | 🧾 Description, highlights, sleeping arrangements | 🛋️ Amenities and house rules |
| 📷 Cover photo and all photos | 📅 Share of days not bookable, next free date | 💬 Guest reviews and host replies |
| 🔗 Listing link and id | 🧭 Searched place and matched place | ⏱️ Scrape time and notes per listing |

> ⚠️ **Note:** with **Full listing details** switched off you only get what the search results show (id, link, title, photos, coordinates, rating, bedrooms, beds, bathrooms, badges and price). The other detail fields are then absent from the row, not empty. Fields Airbnb does not show for a listing are `null`.

#### Data Airbnb Scraper can't extract

- **Private content:** messages, bookings and anything behind a login are not read.
- **Contact details:** there are no email or phone fields. Host data is limited to the public profile details listed above.
- **Booked versus blocked days:** the calendar says a day is not bookable, not whether a guest booked it or the host blocked it.
- **Revenue:** the Actor returns prices and availability; any revenue figure is something you calculate from them.
- **Other languages:** text comes back in English.

### 💰 How much does it cost to scrape Airbnb?

Airbnb Scraper uses **pay-per-event pricing**: you pay for each listing it saves, with no subscription to the Actor. The prices below are the Actor's public prices as of 2026-10-18. Details, calendar and reviews do not change the price per listing, and rows in the Reviews table and the Inputs overview are not charged separately. Duplicate listings are skipped and not billed.

#### Base pricing

- **Results** (`main_result`): charged for each listing saved in the main dataset.
- **Actor start** (`apify-actor-start`): $0.00005 per event, one event per GB of memory. The Actor is set to 1024 MB (1 GB), so this is $0.00005 per run.

#### Pricing by plan tier

| Plan tier | Price per result | Per 1,000 results |
|---|---|---|
| 🆓 Free | $0.0025 | 1,000 x $0.0025 = $2.50 |
| 🥉 Bronze | $0.0020 | 1,000 x $0.0020 = $2.00 |
| 🥈 Silver | $0.0015 | 1,000 x $0.0015 = $1.50 |
| 🥇 Gold and above | $0.0010 | 1,000 x $0.0010 = $1.00 |

**Example:** 200 listings on the Free tier cost 200 x $0.0025 = $0.50, plus the $0.00005 start fee, so $0.50005 in total. The same run on the Gold tier costs 200 x $0.0010 = $0.20, plus $0.00005, so $0.20005.

Apify platform usage of the run is billed on top of these events. To cap your spend, set a maximum cost per run in Apify: the run then stops cleanly and keeps the listings already saved.

#### Why pay-per-event?

- **Transparent:** you pay for the listings you receive.
- **Predictable:** listings x price per result gives your cost before you start.
- **No idle charges:** waiting time is not billed as events.

### 🛠️ How do I use Airbnb Scraper to scrape Airbnb data?

This Airbnb scraper Apify Actor runs in the Apify Console, so there is nothing to install. Here is how to scrape Airbnb data in five steps:

1. [Create a free Apify account](https://console.apify.com/sign-up).
2. Open **Airbnb Scraper** in the Apify Store.
3. Add places, Airbnb search links, listing links or listing ids, then set dates, guests, filters and extras.
4. Click **Start** and watch the log: each saved listing appears as a line.
5. Open the **Output** tab, pick a table, and download the data as JSON, CSV or Excel, or fetch it by API.

### ⬇️ Input

The only required field is **Places, search links & listing links** (`urls`), one entry per line. Everything else is optional, and bulk input is supported. Here is a simple example input (20 listings from one city, with full details):

```json
{
    "urls": ["Lisbon, Portugal"],
    "maxItems": 20,
    "adults": 2,
    "currency": "USD",
    "includeDetails": true
}
```

Open the **Input** tab for a full explanation of every field.

#### Places, search links and listing links

Type a place such as `Lisbon, Portugal`, paste an Airbnb search page link, a listing link or a listing id (digits only). Add the country to avoid a look-alike match: the `resolvedPlace` field shows which place Airbnb really used. Names in non-Latin scripts are not understood, so write `Tokyo, Japan` instead, or paste a search link. Anything else is marked as invalid in the Inputs overview and does not stop the run.

#### Max listings

`maxItems` is **one total across all places and search links**, not one per place. `0` means every listing Airbnb shows, which can take a long time for big cities. Listing links are not counted against this limit, but each saved listing is still charged.

#### Dates, guests and currency

Fill in both `checkIn` and `checkOut` (`YYYY-MM-DD`) to get the exact stay price and only listings that are free on those dates. A single date is ignored, check-out must be after check-in, and a check-in date in the past stops the run with an input message. Guests: `adults` 1 to 16, `children`, `infants` and `pets` 0 to 10.

```json
{
    "urls": ["Lisbon, Portugal"],
    "maxItems": 10,
    "checkIn": "2027-03-10",
    "checkOut": "2027-03-14",
    "adults": 2,
    "currency": "EUR",
    "includeDetails": true,
    "includeCalendar": true,
    "calendarMonths": 6,
    "includeReviews": true,
    "maxReviews": 3,
    "reviewsSort": "newest"
}
```

#### Filters

`priceMin` and `priceMax` are per night in the chosen currency (`0` = no limit; a minimum above the maximum is rejected). `minBedrooms`, `minBeds` and `minBathrooms` use `0` for any. `roomType` is one of `any`, `entire_home`, `private_room`, `shared_room`, `hotel_room`. Airbnb ignores the shared-room filter for logged-out searches, so check the `roomType` field of the rows you get.

#### Extra data

- **Full listing details** (`includeDetails`, default on): one extra page is read per listing. Switch it off for a fast overview.
- **Availability calendar** (`includeCalendar`, `calendarMonths` 1 to 12, default 12).
- **Guest reviews** (`includeReviews`, `maxReviews` where `0` means all, `reviewsSort`: newest, best, highest or lowest).

#### Proxy configuration

Optional. Runs start without a proxy and switch to a proxy when Airbnb blocks a request. You can also add your own proxy settings.

### ⬆️ Output

Each listing is one row in the default dataset. In the **Output** tab you get separate tables: Overview, Pricing, Ratings, Hosts, Location, Description, Amenities & rules, Photos, Availability, Reviews and Run info. A **Reviews table** holds one row per guest review, which is the output you expect from an Airbnb reviews scraper, and the **Inputs overview** holds one row per input with its status and the number of listings found. A run summary with totals is stored as the `SUMMARY` record. Export as **JSON, CSV, Excel, HTML or XML**, and pick or leave out fields before exporting.

#### Example output (illustrative)

The values below are made up to show the shape of a row (names and numbers are fictional):

```json
{
    "id": "12345678",
    "url": "https://www.airbnb.com/rooms/12345678",
    "title": "Bright apartment near the river",
    "roomType": "Entire home/apt",
    "personCapacity": 4,
    "bedrooms": 2,
    "beds": 2,
    "bathrooms": 1,
    "isSuperHost": true,
    "rating": { "guestSatisfaction": 4.9, "reviewsCount": 120, "cleanliness": 4.9, "location": 4.8 },
    "price": { "label": "$480 for 4 nights", "perNight": 120, "total": 480, "nights": 4, "checkIn": "2027-03-10", "checkOut": "2027-03-14" },
    "host": { "name": "Example Host", "isSuperHost": true, "rating": 4.9, "yearsHosting": 6 },
    "availability": { "unavailablePct": 62.5, "nextAvailableDate": "2027-03-01" },
    "reviews": [ { "createdAt": "2026-09-02", "rating": 5, "text": "Great stay.", "reviewer": { "name": "Sample Guest" } } ],
    "resolvedPlace": "Lisbon, Portugal",
    "scrapedAt": "2026-10-18T10:00:00Z"
}
```

#### Output fields explained

| Field | Meaning |
|---|---|
| `price` | Label, amount, nights, check-in and check-out, `perNight`, `total` and `originalAmount` when Airbnb shows a discount |
| `rating.checking` | The Check-in category rating |
| `availability` | Share of days not bookable (`unavailablePct`, also for the next 30 and 90 days), next free date, typical minimum nights and the day-by-day list |
| `availableForDates`, `unavailableReason` | Filled only for listing links when you set dates |
| `searchQuery`, `resolvedPlace` | The input a listing came from and the place Airbnb matched (not set for listing links) |
| `reviews`, `reviewsTotal` | Reviews read for the listing and the total Airbnb reports |
| `warnings` | Notes when something could not be read; the row is still saved |
| `scrapedAt` | UTC time the row was saved |

### 📅 Dates, prices and nights

- **No dates:** Airbnb shows prices for a stay length it picks itself. Each row's `price` states the check-in, check-out and nights it covers, so you always know what you are comparing.
- **Dates set:** you get the exact stay price, and search results contain only listings that are free on those dates.
- **Long stays:** stays over 90 nights may have no price.
- **Currency:** if Airbnb cannot price a place in your currency, the row carries a note.
- **Occupancy:** a day is "not bookable" when it is booked or blocked by the host, so treat `unavailablePct` as an occupancy estimate.
- **Big areas:** as an Airbnb crawler it works through the results pages of a place, and large areas are searched in more detail, so runs with `maxItems` set to `0` take longer.

### 🎯 Use cases

- 💵 **Airbnb price tracker:** run the same places and dates on a schedule and compare the rows. Every row has a `scrapedAt` time, so saving each run lets you build an Airbnb price history tracker in a sheet.
- 📈 **Airbnb competitor analysis:** compare price, rating, amenities and photos of listings near your own.
- 🧮 **Price comparison:** compare Airbnb prices for the same dates across neighbourhoods.
- 🗺️ **Airbnb market data by city:** run one place per input and compare neighbourhoods and cities.
- 🔬 **Market research:** the rows work as Airbnb market research data that you can combine with your own sources.
- 📊 **Airbnb occupancy rate by city:** use the calendar share of days not bookable as an estimate, not as an exact figure.
- 🏘️ **Short term rental data:** collect listings by area and season for your own spreadsheets.
- 🏖️ **Vacation rental pricing data:** compare nightly prices across places and dates.
- 💰 **Airbnb revenue estimate:** combine `perNight` with `unavailablePct` in your own sheet. The Actor does not calculate revenue.
- 🏦 **Airbnb investment property analysis:** compare areas by price, rating and how often listings are booked or blocked, as a starting point for short term rental market analysis.
- 💬 **Airbnb review sentiment analysis:** export the Reviews table and run your own text analysis on guest comments.
- 🗂️ **Airbnb listings dataset:** collect a listing table once, or on a schedule, for your own database.
- 📚 **Airbnb listings and reviews dataset:** join the main table and the Reviews table on the listing id.
- 📉 **Airbnb data analysis:** open the export in Excel, Python or a BI tool.
- 🤖 **Airbnb data for machine learning:** feed the structured JSON rows into your own models.
- 👤 **Host research:** use it as an Airbnb host scraper for public host profile details such as rating, years hosting and response rate.

### 🔗 What are other tools for Airbnb data?

The Actors below scrape other websites, not Airbnb. They are separate tools for other kinds of public data, listed here in case you work with such data as well.

- [Facebook Marketplace Scraper](https://apify.com/data_wiki/facebook-marketplace-scraper): public Marketplace listings with prices, photos and locations.
- [scrape public Facebook group posts](https://apify.com/data_wiki/facebook-group-scraper): posts, comments and Buy & Sell listings from public groups.
- [LinkedIn profile data without cookies](https://apify.com/data_wiki/linkedin-profile-scraper-email-no-cookies): public LinkedIn profile data with no login or cookies.
- The scraped website: [Airbnb](https://www.airbnb.com). Learn more about running Actors in the [Apify API documentation](https://docs.apify.com/api/v2) and about [Apify integrations](https://docs.apify.com/platform/integrations).

### ❓ Frequently asked questions

#### How does Airbnb Scraper work?

It is a hosted Airbnb web scraper: you give it places, search links or listing links plus optional dates and filters. It reads the public Airbnb pages for each input, saves every listing as soon as it is ready, and returns the data in tables you can export. The Reviews table and the Inputs overview are filled alongside the main results.

#### Can you scrape Airbnb without a login?

Yes. The Actor reads only public information that any visitor can see, so you do not need an Airbnb account, cookies or API keys. Anything that needs a login, such as messages or bookings, is not available.

#### Can I scrape many places at once?

Yes. Add as many places, search links and listing links as you like, one per line. `maxItems` is a single total across all places and search links, so set it high enough, or to `0` for every listing Airbnb shows.

#### What are the limits of Airbnb Scraper?

Text is returned in English, non-Latin place names are not understood, the shared-room filter is unreliable, and stays over 90 nights may have no price. The run also stops cleanly if your maximum cost per run is reached, and keeps the listings already saved. The Actor is configured with 1024 MB of memory.

#### Why am I getting fewer results than expected?

Airbnb may simply have no more listings for your filters in the area it searched. Loosen price, bedroom or room type filters, check the spelling of the place, or add the country. The Inputs overview shows how many listings each input found and any problem.

#### Why does a price cover a different number of nights than I expected?

Without dates, Airbnb picks a stay length itself. Each `price` states its own check-in, check-out and nights. Set both dates to get exact stay prices.

#### Can I integrate Airbnb Scraper with other apps?

Yes. Through the Apify platform you can connect it with Make, Zapier, Slack, Airbyte, GitHub, Google Sheets and more, or use webhooks to react when a run finishes. You can also export Airbnb listings to Excel from the dataset.

#### Can I use Airbnb Scraper as an Airbnb scraper API?

Yes. Start runs and read results with the Apify API or the `apify-client` packages for Node.js and Python (`https://apify.com/data_wiki/airbnb-scraper/api`). For Python, the snippet below is a complete Airbnb scraper Python example:

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("data_wiki/airbnb-scraper").call(
    run_input={"urls": ["Lisbon, Portugal"], "maxItems": 20}
)
items = client.dataset(run["defaultDatasetId"]).list_items().items
```

It also works as an Airbnb listing data API for your own tools: start a run, then read the dataset.

#### Does Airbnb have a public API?

For Airbnb's own API options and documentation, check Airbnb's official developer information. This Actor is a separate tool, not an official Airbnb API: it reads public pages and returns the data as JSON.

#### Can I use Airbnb Scraper through MCP?

Yes. The hosted Apify MCP server (`https://mcp.apify.com`) lets AI agents find an Actor with `search-actors`, check it with `fetch-actor-details` and run it with `call-actor`.

#### Is it legal to scrape Airbnb data?

The Actor reads publicly visible information only, but whether your use is allowed depends on Airbnb's terms and on privacy laws such as GDPR and CCPA. Reviews and host details can contain first names and places, which count as personal data, so use them with care. This is not legal advice; you are responsible for your use of the data.

#### 💬 Your feedback and custom solutions

Found a bug or need another field? Open an issue on the Actor's **Issues** tab. Need a custom solution? Contact hello.datawiki@gmail.com.

# Actor input Schema

## `urls` (type: `array`):

One entry per line. Mix freely: place names (e.g. Lisbon, Portugal), Airbnb search page links, Airbnb listing links or listing ids. Bulk input is supported.

## `maxItems` (type: `integer`):

Total number of listings to collect from places and search links (one total across all of them). 0 means every listing Airbnb shows. Listing links are not counted against it.

## `checkIn` (type: `string`):

YYYY-MM-DD. With both dates set you get the exact stay price and only listings free on those dates. Leave empty for no dates.

## `checkOut` (type: `string`):

YYYY-MM-DD, after the check-in date. Both dates are needed for dated prices.

## `adults` (type: `integer`):

Number of adult guests (1 to 16).

## `children` (type: `integer`):

Number of children (0 to 10).

## `infants` (type: `integer`):

Number of infants (0 to 10).

## `pets` (type: `integer`):

Number of pets (0 to 10).

## `currency` (type: `string`):

3-letter code used for all prices, for example USD or EUR.

## `priceMin` (type: `integer`):

In the chosen currency. 0 means no minimum.

## `priceMax` (type: `integer`):

In the chosen currency. 0 means no maximum.

## `minBedrooms` (type: `integer`):

0 means any.

## `minBeds` (type: `integer`):

0 means any.

## `minBathrooms` (type: `integer`):

0 means any.

## `roomType` (type: `string`):

Kind of place to include.

## `includeDetails` (type: `boolean`):

Adds description, amenities, house rules, host, co-hosts, all photos, ratings by category and sleeping arrangements (one extra page per listing). Turn off for a fast overview.

## `includeCalendar` (type: `boolean`):

Adds the day-by-day calendar and the share of days that are not bookable (booked or blocked by the host).

## `calendarMonths` (type: `integer`):

How many months ahead to read when the calendar is on (1 to 12).

## `includeReviews` (type: `boolean`):

Adds guest reviews to each listing and to the Reviews table.

## `maxReviews` (type: `integer`):

Used when guest reviews are on. 0 means all reviews.

## `reviewsSort` (type: `string`):

Which reviews come first.

## `proxyConfiguration` (type: `object`):

Runs start without a proxy. If Airbnb blocks a request, the run switches to a datacenter proxy and then to a residential proxy, and stays on it.

## Actor input object example

```json
{
  "urls": [
    "Lisbon"
  ],
  "maxItems": 10,
  "adults": 2,
  "children": 0,
  "infants": 0,
  "pets": 0,
  "currency": "USD",
  "priceMin": 0,
  "priceMax": 0,
  "minBedrooms": 0,
  "minBeds": 0,
  "minBathrooms": 0,
  "roomType": "any",
  "includeDetails": true,
  "includeCalendar": false,
  "calendarMonths": 12,
  "includeReviews": false,
  "maxReviews": 5,
  "reviewsSort": "newest",
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `overview` (type: `string`):

Every listing with photo, type, size, rating and link.

## `pricing` (type: `string`):

Nightly price, stay total, dates and availability for the dates.

## `ratings` (type: `string`):

Overall and per-category guest ratings.

## `hosts` (type: `string`):

Host name, rating, experience and co-hosts.

## `location` (type: `string`):

Coordinates, location label and matched place.

## `description` (type: `string`):

Listing summary, description, highlights and sleeping arrangements.

## `amenities` (type: `string`):

Amenities and house rules.

## `photos` (type: `string`):

Cover photo and every photo.

## `availability` (type: `string`):

Calendar summary: share of days not bookable and next free date.

## `reviews` (type: `string`):

Reviews read for each listing.

## `run_info` (type: `string`):

Scrape time and notes per listing.

## `allReviews` (type: `string`):

One row per guest review.

## `sources` (type: `string`):

One row per input: status and listings found.

## `summary` (type: `string`):

Totals for the whole run.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "urls": [
        "Lisbon"
    ],
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("data_wiki/airbnb-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "urls": ["Lisbon"],
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("data_wiki/airbnb-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "urls": [
    "Lisbon"
  ],
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call data_wiki/airbnb-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,data_wiki/airbnb-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/OvleOmaS2W8DWuq83/builds/VDq1vTtbutRfX0RcU/openapi.json
