# Airbnb Scraper: Whole-City Listings, Prices, Hosts & Reviews (`stratumics/airbnb-scraper`) Actor

Get every Airbnb listing in a city or from listing links: price per night, rating, reviews, guests, bedrooms, host and Superhost status. Add details, availability calendar and reviews.

- **URL**: https://apify.com/stratumics/airbnb-scraper.md
- **Developed by:** [Stratum ICS](https://apify.com/stratumics) (community)
- **Categories:** Travel, Real estate, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.80 / 1,000 listings

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
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 does Airbnb Scraper do?

**Airbnb Scraper** extracts Airbnb listings for any city, region or neighborhood, or from listing links: **price per night, total price for your dates, rating, number of reviews, guests, bedrooms, beds, bathrooms, property and room type, host name and Superhost status, Guest favorite badge, location and photos**. Add the listing details (description, amenities, house rules, check-in times, cancellation policy, rating breakdown, host response rate), the availability calendar and the reviews when you need them.

It reads the **whole city**, not just the first few hundred results: an Airbnb search stops at about 280 listings, so the scraper splits the map into small areas until every listing is covered. A run for Austin, TX saved **7,989 listings** inside the city outline Airbnb draws. Use it from the Apify Console, through the **Apify API** as an Airbnb API alternative, or from any AI agent connected to Apify.

### Why use this Airbnb scraper?

- **Every listing in a city.** The map is split until each area fits on one Airbnb results page, so nothing is skipped. For Austin, the 767 map areas read returned 8,690 different listings where Airbnb's own counts for those areas add up to 8,499; 7,989 of them are inside Austin's outline (the rest are kept out unless you turn the boundary off).
- **Prices for your dates.** With check-in and check-out you get the total for the stay with fees, the price before a discount, the nightly rate and each fee line. Without dates you get every listing and its nightly rate.
- **Host and size on every row.** Guests, bedrooms, beds, host name, host profile and Superhost status come with every listing at the base price, not as an extra.
- **Details, calendar and reviews on demand.** Description, every amenity, house rules, check-in and check-out times, cancellation policy, sleeping arrangements, rating per category and host response rate and time; availability and minimum nights for the next 12 months; reviews with dates, reviewer and host replies.
- **Any listing link.** Paste links from any Airbnb country site (airbnb.com, airbnb.co.uk, airbnb.de...) or bare listing ids.
- **Filters like on Airbnb.** Guests, price per night, type of place, minimum bedrooms, beds and bathrooms, currency and language.
- **Fast and light.** Plain HTTP requests and no browser: a town of 1,100 listings takes about 3 minutes, and all of Austin about 15.

Typical uses: **short-term rental investment** research (supply, prices and occupancy by neighborhood), revenue management and **competitor price tracking** for property managers, market reports for analysts, finding Superhosts and multi-listing hosts, and monitoring availability with the calendar.

### What data can you extract from Airbnb?

| Field                                                      | Example                                                          |
| ---------------------------------------------------------- | ---------------------------------------------------------------- |
| `title`, `url`, `id`                                       | 18th Floor Studio Suite Downtown Luxury High Rise · listing link |
| `propertyType`, `roomType`                                 | Apartment · Entire home/apt                                      |
| `city`, `neighborhood`, `country`, `lat`, `lng`            | Austin · Downtown Austin · United States · 30.25737 · -97.73919  |
| `rating`, `reviewsCount`                                   | 4.93 · 152                                                       |
| `pricePerNight`, `totalPrice`, `totalPriceBeforeDiscount`  | 183.67 · 551 · 921 (USD, Nov 20 to 23)                           |
| `priceBreakdown`                                           | 3 nights x $183.67, cleaning and resort fees, discounts          |
| `guests`, `bedrooms`, `beds`, `bathrooms`                  | 2 · 1 · 1 · 1                                                    |
| `hostName`, `hostId`, `hostUrl`, `isSuperhost`             | Alex · profile id · profile link · true                          |
| `isGuestFavorite`, `badges`, `photos`                      | true · Guest favorite · first 10 photo links                     |
| `description`, `amenities`, `houseRules`                   | with listing details                                             |
| `checkInTime`, `checkOutTime`, `cancellationPolicy`        | 4:00 PM - 10:00 PM · 11:00 AM · refund steps (with trip dates)   |
| `categoryRatings`                                          | accuracy, check-in, cleanliness, communication, location, value  |
| `hostResponseRate`, `hostResponseTime`, `hostYearsHosting` | 100 · Responds within an hour · 13                               |
| `availableDays30`, `availableDays90`, `calendar`           | 8 · 57 · one entry per day with minimum nights                   |
| `reviews`                                                  | text, rating, date, reviewer, host reply                         |

Each run also saves a free **summary** of every search (area read, map areas, Airbnb's counts, listings found and saved) in the `SUMMARY` record of the run's key-value store.

### How to scrape Airbnb

1. Open the **Input** tab and enter one or more **locations** as you would on Airbnb, for example `Austin, TX` or `Lisbon`. Or paste **listing links**.
2. Set **Max listings per location**. This also caps what you pay; set a high number to read the whole place.
3. Optionally add **check-in and check-out dates**, guests and filters (price per night, type of place, minimum bedrooms).
4. Turn on **listing details**, the **availability calendar** or **reviews per listing** if you need them.
5. Click **Start**. Listings appear in the **Output** tab as they are found.
6. Download the results as **CSV, Excel, JSON or HTML**, or send them to Google Sheets, Zapier, Make or n8n.

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

You pay per listing saved, plus the extras you turn on:

| Event                                              | Price                     |
| -------------------------------------------------- | ------------------------- |
| Listing saved (all fields of the first table rows) | $0.0015 ($1.50 per 1,000) |
| Listing details                                    | $0.0005 ($0.50 per 1,000) |
| Availability calendar (12 months)                  | $0.0005 ($0.50 per 1,000) |
| Review                                             | $0.0005 ($0.50 per 1,000) |
| Search summary, listings outside the boundary      | Free                      |

**1,000 listings cost $1.50.** The whole of Austin (7,989 listings) costs about **$12**, or about **$20** with details and calendars. Adding the 20 newest reviews to 500 listings costs 500 x $0.0015 + 10,000 x $0.0005 = **$5.75**. Apify's free plan includes $5 of monthly credit, enough for more than 3,000 listings.

Larger Apify plans pay less automatically: listings cost $1.20 per 1,000 on Starter, $1.00 on Scale and $0.80 on Business, and details and calendars $0.40, $0.30 and $0.15. Each run also has a small start fee.

### Input

See the **Input** tab for every option. A whole-city search for a weekend:

```json
{
    "locations": ["Austin, TX"],
    "maxListings": 100000,
    "checkIn": "2026-11-20",
    "checkOut": "2026-11-23",
    "adults": 2,
    "roomType": "entire",
    "currency": "USD"
}
```

Listing links with everything:

```json
{
    "listingUrls": ["https://www.airbnb.com/rooms/23860926", "https://www.airbnb.co.uk/rooms/5819674"],
    "checkIn": "2026-12-11",
    "checkOut": "2026-12-14",
    "includeDetails": true,
    "includeCalendar": true,
    "maxReviewsPerListing": 50
}
```

- **Locations**: a city, region, neighborhood or district. The scraper uses the outline Airbnb draws for the place; turn off **Only listings inside the place's boundary** to keep the surroundings too.
- **Dates**: with dates, only listings free on those dates are returned, with their total price. Without dates every listing is returned with a nightly rate for dates Airbnb picks (shown in `priceCheckIn` and `priceCheckOut`).
- **Currency and language**: prices come in the currency you choose; Airbnb's labels follow the language, while titles and descriptions stay as the host wrote them.

### Output

You can download the dataset in various formats such as JSON, HTML, CSV or Excel. A listing from a dated search (photos trimmed to two):

```json
{
    "id": "925896424191418887",
    "url": "https://www.airbnb.com/rooms/925896424191418887",
    "title": "18th Floor Studio Suite Downtown Luxury High Rise",
    "propertyType": "Apartment",
    "roomType": "Entire home/apt",
    "city": "Austin",
    "neighborhood": "Downtown Austin",
    "country": "United States",
    "lat": 30.25737,
    "lng": -97.73919,
    "rating": 4.93,
    "reviewsCount": 152,
    "isNew": false,
    "pricePerNight": 183.67,
    "totalPrice": 551,
    "totalPriceBeforeDiscount": 921,
    "priceBreakdown": [{ "label": "3 nights x $183.67", "amount": 551 }],
    "currency": "USD",
    "priceCheckIn": "2026-11-20",
    "priceCheckOut": "2026-11-23",
    "guests": 2,
    "bedrooms": 1,
    "beds": 1,
    "bathrooms": 1,
    "hostId": "1462667116177391509",
    "hostName": "Alex",
    "hostUrl": "https://www.airbnb.com/users/profile/1462667116177391509",
    "isSuperhost": true,
    "isGuestFavorite": true,
    "photos": [
        "https://a0.muscache.com/im/pictures/miso/Hosting-925896424191418887/original/82b31f90-51ed-4069-8a27-4b4e4f7a957c.jpeg",
        "https://a0.muscache.com/im/pictures/miso/Hosting-925896424191418887/original/7b3da2a5-177f-4093-86e5-a1e432cf4dc9.jpeg"
    ],
    "badges": ["Guest favorite"],
    "searchLocation": "Austin, TX",
    "scrapedAt": "2026-10-18T04:20:37.694Z"
}
```

The extra fields of a listing with details and calendar (Lisbon, priced in euros; long lists trimmed):

```json
{
    "title": "Beautiful apartment in Bairro Alto -Quiet",
    "neighborhood": "Misericórdia",
    "totalPrice": 250,
    "totalPriceBeforeDiscount": 299,
    "priceBreakdown": [
        { "label": "3 nights x €99.55", "amount": 298.65 },
        { "label": "Early booking discount", "amount": -49.5 },
        { "label": "Price after discount", "amount": 249.15 }
    ],
    "currency": "EUR",
    "amenities": ["Bathtub", "Hair dryer", "Cleaning products", "Shampoo", "Body soap"],
    "houseRules": [
        "Check-in: 4:00 PM - 10:00 PM",
        "Checkout before 11:00 AM",
        "Self check-in with lockbox",
        "2 guests maximum",
        "No pets"
    ],
    "checkInTime": "4:00 PM - 10:00 PM",
    "checkOutTime": "11:00 AM",
    "cancellationPolicy": {
        "summary": "Free cancellation for 24 hours. After that, the reservation is non-refundable.",
        "milestones": [
            {
                "refund": "Full refund",
                "when": "Within 24 hours after booking",
                "terms": "Get back 100% of what you paid."
            },
            { "refund": "No refund", "when": "After Oct 19 5:46 AM", "terms": "This reservation is non-refundable." }
        ]
    },
    "sleepingArrangements": [{ "room": "Bedroom", "beds": "1 double bed" }],
    "categoryRatings": {
        "accuracy": 4.83,
        "checkIn": 4.88,
        "cleanliness": 4.74,
        "communication": 4.87,
        "location": 4.87,
        "value": 4.7
    },
    "photoCount": 45,
    "hostIsVerified": true,
    "hostResponseRate": 100,
    "hostResponseTime": "Responds within an hour",
    "hostYearsHosting": 13,
    "hostRating": 4.82,
    "hostReviewsCount": 2602,
    "availableDays30": 8,
    "availableDays90": 57,
    "availableDaysInCalendar": 315,
    "calendar": [
        {
            "date": "2026-10-18",
            "available": false,
            "minNights": 2,
            "maxNights": 360,
            "availableForCheckIn": false,
            "availableForCheckOut": false
        }
    ]
}
```

### Tips for better results

- **Read a whole market** with a high **Max listings per location**. Results arrive as the map is read, and the search summary shows how complete the run was.
- **Compare prices fairly** with fixed dates and guests: Airbnb then prices every listing for the same stay.
- **Occupancy research**: turn on the calendar and look at `availableDays30` and `availableDays90`, or open the **Calendar** view for one row per day.
- **Reviews for analysis**: the **Reviews** view in the Output tab and in exports gives one row per review next to its listing.
- **Large runs with details** read three or four pages per listing; for tens of thousands of listings, raise the run timeout in the run options.
- The datacenter proxy is on by default. In our tests Airbnb answered both the proxy and a direct connection (proxy off) without refusing requests, and direct runs were faster. If Airbnb ever refuses the proxy, the scraper switches to a direct connection on its own.

### Integrations and API

- **API**: start runs and download results from any language. The **API** tab has ready code in Python, JavaScript and cURL.
- **Python**: `from apify_client import ApifyClient`, then `client.actor("stratumics/airbnb-scraper").call(run_input={"locations": ["Austin, TX"], "maxListings": 500})`.
- **JavaScript**: `import { ApifyClient } from 'apify-client'`, then `client.actor('stratumics/airbnb-scraper').call({ locations: ['Austin, TX'], maxListings: 500 })`.
- **No-code**: Zapier, Make, n8n, Google Sheets and Slack from the **Integrations** tab, for example to append each weekly price check to a sheet.
- **AI agents**: connect any MCP-capable assistant to Apify's MCP server (`mcp.apify.com`) and it can call this scraper as a tool to look up listings and prices.

### FAQ

#### Is it legal to scrape Airbnb?

This scraper reads what Airbnb shows to every visitor without logging in. Listings include some personal data: host first names, host and reviewer profile links and pictures, and reviewers' first names with their reviews. Personal data is protected by the GDPR in the European Union and by other laws around the world, so only collect it when you have a legitimate reason, and consult a lawyer if you are unsure. Also consider Airbnb's Terms of Service for your use case.

#### How many listings can I get from one search?

All the listings Airbnb has in the place. Airbnb itself shows at most about 280 per search and counts beyond 1,000 only as "Over 1,000". The scraper divides the map until every area holds at most 40 listings, reads each area on one results page, and checks the result against Airbnb's own count for each area.

#### Why do prices without dates show different dates for each listing?

Without dates Airbnb prices each listing for dates it picks (often the next free week that meets the minimum stay). The nightly rate is comparable; the total is not, so it is left empty. Give check-in and check-out dates to price every listing for the same stay.

#### Why is the location approximate?

Airbnb shows an approximate location for most homes to protect hosts' privacy, and the scraper gives the coordinates Airbnb shows.

#### Why are some fields empty?

`bathrooms` comes from the search card when Airbnb shows it there and is always filled with listing details. `rating` stays empty until a listing has three reviews, as on Airbnb. `cancellationPolicy` needs trip dates, because Airbnb states it only for a stay.

#### Does it need an Airbnb account or cookies?

No. It reads Airbnb as a logged-out visitor, with no account, login or cookies.

#### Found a problem or need a field?

Open an issue in the **Issues** tab with the input you used, and we will look at it.

### Other tools from Stratum ICS

- [App Store Reviews Scraper](https://apify.com/stratumics/app-store-reviews-scraper): Get Apple App Store reviews with star ratings, titles, text, app versions, helpful votes and developer replies, well past Apple's 500-review limit, for any country, plus app ratings.
- [Bilibili Scraper](https://apify.com/stratumics/bilibili-scraper): Scrape Bilibili videos by search, link or uploader without logging in: views, likes, coins, tags, uploader profiles, comments with replies and danmaku, in clean rows.
- [Facebook Ads Library Scraper](https://apify.com/stratumics/facebook-ads-library-scraper): Get ads from the Meta (Facebook) Ad Library by keyword, advertiser page or library link: texts, images, videos, dates, platforms and versions, plus spend for political ads.
- [Facebook Posts Scraper](https://apify.com/stratumics/facebook-posts-scraper): Get posts from public Facebook pages: text, reactions by type, comments, shares, views and media, plus page details with followers, contacts, rating and creation date.
- [Google Ads Transparency Scraper](https://apify.com/stratumics/google-ads-transparency-scraper): Get the ads any advertiser runs on Google Search, YouTube, Shopping, Maps and Play, from the Ads Transparency Center: images, formats, dates, regions and EU reach.
- [Google Maps Reviews Scraper](https://apify.com/stratumics/google-maps-reviews-scraper): Get the Google Maps reviews of any place: rating, full text, exact date, photos, owner reply, reviewer details and food or service scores.
- [Google Maps Scraper](https://apify.com/stratumics/google-maps-scraper): Get the businesses on Google Maps for any search and area: name, address, phone, website, rating, review count, opening hours, plus emails and social profiles.
- [Google News Scraper](https://apify.com/stratumics/google-news-scraper): Get Google News articles with real publisher URLs (not Google redirects), source, date, image, author and optional full text.
- [Google Play Reviews Scraper](https://apify.com/stratumics/google-play-reviews-scraper): Get Google Play reviews with star ratings, text, app versions, thumbs-up counts, developer replies and feature ratings in any language, plus app details with installs and star histogram.
- [Google Trends Scraper](https://apify.com/stratumics/google-trends-scraper): Get Google Trends data as JSON, CSV or Excel: interest over time, interest by region and city, related queries, and trending searches by country.
- [Instagram Scraper](https://apify.com/stratumics/instagram-scraper): Scrape public Instagram profiles, posts, reels and comments without logging in: followers, bio, posts count, captions, likes, video views, media links, tags and music.
- [LinkedIn Jobs Scraper](https://apify.com/stratumics/linkedin-jobs-scraper): Scrape LinkedIn jobs with full descriptions, salary ranges, seniority, job type and applicant counts.
- [Reddit Scraper](https://apify.com/stratumics/reddit-scraper): Get Reddit posts and full comment threads from subreddits, searches, user profiles and post links: titles, text, scores, flair, media and replies.
- [Telegram Channel Scraper](https://apify.com/stratumics/telegram-channel-scraper): Get messages from public Telegram channels with views, dates, media, reactions, polls and forwards, plus channel info with exact subscriber counts.
- [Threads Scraper](https://apify.com/stratumics/threads-scraper): Scrape Threads profiles, posts, replies and keyword search: followers, bio, post text, likes, replies, reposts, quotes, media and links.
- [TikTok Comments Scraper](https://apify.com/stratumics/tiktok-comments-scraper): Export TikTok comments and replies from any video or photo post: text, date, likes, reply count, commenter, pinned and creator-liked flags, plus video stats.
- [TikTok Scraper](https://apify.com/stratumics/tiktok-scraper): Scrape TikTok profiles and videos: followers, likes, bio, the latest 10 to 12 videos of each profile, and full stats for any video link.
- [Website Contact Scraper](https://apify.com/stratumics/website-contact-scraper): Turn a list of websites into one row per company with verified emails, formatted phone numbers, social profiles (LinkedIn, Facebook, Instagram, X), address and contact page.
- [YouTube Scraper](https://apify.com/stratumics/youtube-scraper): Get YouTube videos from searches, channels, playlists and links with exact views, likes, comment counts, dates and tags, plus channel profiles and comments.
- [YouTube Transcript Scraper](https://apify.com/stratumics/youtube-transcript-scraper): Get YouTube transcripts and captions as plain text, timed segments, SRT or WebVTT, from video links, whole channels or playlists, in any language YouTube offers.

# Actor input Schema

## `locations` (type: `array`):

Cities, regions or neighborhoods to search, one per line, written as you would on Airbnb: "Austin, TX", "Lisbon", "Brooklyn, NY". The scraper splits the map until the whole place is read, so a city search returns all its listings, not just the first few hundred.

## `listingUrls` (type: `array`):

Airbnb listing links (https://www.airbnb.com/rooms/23860926, any country domain) or listing ids, one per line. Use instead of or together with locations.

## `maxListings` (type: `integer`):

How many listings to save for each location. You pay per listing saved, so this also caps the cost. Set a high number (for example 100000) to save every listing in the place.

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

Trip start (YYYY-MM-DD). With dates you get only listings free for those dates and the total price of the stay; without dates you get every listing and its nightly price for dates Airbnb picks.

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

Trip end (YYYY-MM-DD). Give both dates or neither.

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

Number of adults; listings for fewer guests are left out.

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

Number of children (ages 2 to 12).

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

Leave out listings cheaper than this per night, in the currency below. 0 for no minimum.

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

Leave out listings more expensive than this per night, in the currency below. 0 for no maximum.

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

Entire homes, private rooms, shared rooms, or any type.

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

Leave out listings with fewer bedrooms. 0 for no minimum.

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

Leave out listings with fewer beds. 0 for no minimum.

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

Leave out listings with fewer bathrooms. 0 for no minimum.

## `insideBoundaryOnly` (type: `boolean`):

Keep only listings inside the outline Airbnb draws for the location (the city limits). Turn off to keep every listing in the rectangle around it, for example to include the suburbs.

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

Read each listing page for the description, amenities, house rules, check-in and check-out times, cancellation policy (with trip dates), sleeping arrangements, rating breakdown and host details such as response rate. Charged as an extra event per listing.

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

Add each listing's calendar for this month and the next 11: which days are free and the minimum and maximum nights. Charged as an extra event per listing.

## `maxReviewsPerListing` (type: `integer`):

How many reviews to add to each listing (0 for none). Each review is charged as a review event.

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

Newest reviews first, or Airbnb's most relevant first.

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

Three-letter code of the currency for prices: USD, EUR, GBP, CAD, AUD, MXN and so on.

## `locale` (type: `string`):

Language of Airbnb's labels in the results (titles written by hosts stay as written).

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

Apify's datacenter proxy works with Airbnb and is used by default. If Airbnb keeps refusing it, the scraper switches to a direct connection on its own.

## Actor input object example

```json
{
  "locations": [
    "Austin, TX"
  ],
  "listingUrls": [],
  "maxListings": 20,
  "checkIn": "",
  "checkOut": "",
  "adults": 1,
  "children": 0,
  "priceMin": 0,
  "priceMax": 0,
  "roomType": "any",
  "minBedrooms": 0,
  "minBeds": 0,
  "minBathrooms": 0,
  "insideBoundaryOnly": true,
  "includeDetails": false,
  "includeCalendar": false,
  "maxReviewsPerListing": 0,
  "reviewsSort": "newest",
  "currency": "USD",
  "locale": "en",
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `listings` (type: `string`):

No description

## `prices` (type: `string`):

No description

## `allFields` (type: `string`):

No description

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

No description

# 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 = {
    "locations": [
        "Austin, TX"
    ],
    "maxListings": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("stratumics/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 = {
    "locations": ["Austin, TX"],
    "maxListings": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("stratumics/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 '{
  "locations": [
    "Austin, TX"
  ],
  "maxListings": 20
}' |
apify call stratumics/airbnb-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,stratumics/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/bmuroubvgnONwXKc6/builds/WMz7RICRlVfzmMm0R/openapi.json
