# Airbnb Scraper - Listings, Prices & Details (`swerve/airbnb-scraper`) Actor

Scrape Airbnb listings by location: price, rating, coordinates, room type, beds, photos and superhost status. Add amenities, capacity, host and description. No login or API key. Pay per result.

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

## Pricing

from $5.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.

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js/docs.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Airbnb Scraper - Listings, Prices & Details

Scrape **Airbnb** in one run: search any location and get every listing with its price, rating, coordinates, room type, beds, photos and host badges. Turn on details to also pull amenities, guest capacity, host and the full description. **No login and no API key.**

### Why this scraper

Most Airbnb tools do one job each: one lists search results, another fetches reviews, another checks the calendar, so you buy and stitch three or four tools. This actor does search and full listing details in a single run, and it is built for reliability where the popular alternatives are not.

### What you can do with it

- Pull every listing for a city or area with price, rating and coordinates for market research
- Track prices and availability for specific dates by setting check-in and check-out
- Build a dataset of listings with amenities, capacity and host for competitor analysis
- Map a market by exporting coordinates, room types and superhost status

### Input

| Field | What it does | Example |
|-------|--------------|---------|
| **Locations** | Cities, regions or Airbnb search URLs to scrape. | `Austin, TX`, `Paris, France`, `Lisbon` |
| **Check-in / Check-out** | Optional dates so prices reflect those exact nights. | `2026-09-10` / `2026-09-14` |
| **Adults / children / infants / pets** | Guests, which affect availability and price. | `2` |
| **Currency** | 3-letter currency code for prices. | `USD`, `EUR`, `GBP` |
| **Min / max price per night** | Optional price filters. | `50` / `300` |
| **Max listings per location** | How many listings to collect per location. | `100` |
| **Include listing details** | Also add amenities, capacity, host and description (slower). | off |

### Output

One row per listing:

```json
{
  "id": "28254684",
  "url": "https://www.airbnb.com/rooms/28254684",
  "name": "Designer Lake View Retreat | 5 bedrooms | Rooftop",
  "roomType": "Home in Austin",
  "latitude": 30.3159,
  "longitude": -97.8036,
  "priceTotal": 2476,
  "pricePerNight": 495,
  "currency": "USD",
  "rating": 4.95,
  "reviewsCount": 270,
  "bedrooms": 5,
  "beds": 11,
  "baths": 4,
  "isSuperhost": true,
  "isGuestFavorite": true,
  "badges": ["Guest favorite"],
  "photos": ["https://a0.muscache.com/im/pictures/..."],
  "searchLocation": "Austin, TX",
  "personCapacity": 16,
  "amenities": ["Kitchen", "Fast wifi", "Free parking", "Pool"],
  "hostName": "Katherine",
  "propertyType": "Entire home/apt",
  "scrapedAt": "2026-07-17T11:00:00.000Z"
}
````

Fill rates on the core fields (id, url, name, price, coordinates, room type, photos) are ~100%; rating and review count are present for listings that have reviews.

### How it works

Every Airbnb search page embeds its results as JSON and hands out pagination cursors, so the actor reads that data directly over a residential connection (used by default for reliability). No browser, no login and no API key. When details are on, it opens each listing to read amenities, capacity, host and description.

### Limits

- Airbnb returns up to ~270 listings per search. To get more from a dense city, narrow by dates, price or a smaller area, or add several neighborhoods as separate locations.
- Airbnb matches almost any location text to some area. Check the coordinates in the output match the area you intended.
- Reviews text is not included in this version (listing rating and review count are).

### Pricing

Pay per result. You only pay for the listings you actually get.

# Actor input Schema

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

Cities, regions or Airbnb search URLs to scrape. Examples: Austin, TX ; Paris, France ; Lisbon ; or a full https://www.airbnb.com/s/... search URL. Each returns its listings.

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

Optional. Check-in date as YYYY-MM-DD (e.g. 2026-08-02). Setting dates makes prices reflect those exact nights.

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

Optional. Check-out date as YYYY-MM-DD (e.g. 2026-08-07).

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

Number of adults (affects availability and price).

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

Optional number of children.

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

Optional number of infants.

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

Optional number of pets.

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

3-letter currency code for prices, e.g. USD, EUR, GBP. Default USD.

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

Optional minimum nightly price in the chosen currency.

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

Optional maximum nightly price in the chosen currency.

## `maxListingsPerLocation` (type: `integer`):

How many listings to collect for each location. Airbnb returns up to ~270 per search; narrow by dates, price or a smaller area to reach more. Default 100.

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

Also open each listing to add amenities, guest capacity, host and description. More complete, but slower (one extra request per listing). Off by default.

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

Optional overall cap on listings returned. Leave blank for everything your locations point to.

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

Airbnb is scraped through a residential proxy by default for reliability at scale. Leave as is unless you have a reason to change it.

## Actor input object example

```json
{
  "locations": [
    "Austin, TX"
  ],
  "adults": 1,
  "currency": "USD",
  "maxListingsPerLocation": 100,
  "includeDetails": false,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# 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"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("swerve/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"],
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

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

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).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"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call swerve/airbnb-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=swerve/airbnb-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Airbnb Scraper - Listings, Prices & Details",
        "description": "Scrape Airbnb listings by location: price, rating, coordinates, room type, beds, photos and superhost status. Add amenities, capacity, host and description. No login or API key. Pay per result.",
        "version": "0.1",
        "x-build-id": "IkFGYlq16ia83uAg8"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/swerve~airbnb-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-swerve-airbnb-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/swerve~airbnb-scraper/runs": {
            "post": {
                "operationId": "runs-sync-swerve-airbnb-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/swerve~airbnb-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-swerve-airbnb-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "locations": {
                        "title": "Locations",
                        "type": "array",
                        "description": "Cities, regions or Airbnb search URLs to scrape. Examples: Austin, TX ; Paris, France ; Lisbon ; or a full https://www.airbnb.com/s/... search URL. Each returns its listings.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "checkIn": {
                        "title": "Check-in date",
                        "type": "string",
                        "description": "Optional. Check-in date as YYYY-MM-DD (e.g. 2026-08-02). Setting dates makes prices reflect those exact nights."
                    },
                    "checkOut": {
                        "title": "Check-out date",
                        "type": "string",
                        "description": "Optional. Check-out date as YYYY-MM-DD (e.g. 2026-08-07)."
                    },
                    "adults": {
                        "title": "Adults",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Number of adults (affects availability and price).",
                        "default": 1
                    },
                    "children": {
                        "title": "Children",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Optional number of children."
                    },
                    "infants": {
                        "title": "Infants",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Optional number of infants."
                    },
                    "pets": {
                        "title": "Pets",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Optional number of pets."
                    },
                    "currency": {
                        "title": "Currency",
                        "type": "string",
                        "description": "3-letter currency code for prices, e.g. USD, EUR, GBP. Default USD.",
                        "default": "USD"
                    },
                    "priceMin": {
                        "title": "Min price per night",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Optional minimum nightly price in the chosen currency."
                    },
                    "priceMax": {
                        "title": "Max price per night",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Optional maximum nightly price in the chosen currency."
                    },
                    "maxListingsPerLocation": {
                        "title": "Max listings per location",
                        "minimum": 1,
                        "type": "integer",
                        "description": "How many listings to collect for each location. Airbnb returns up to ~270 per search; narrow by dates, price or a smaller area to reach more. Default 100.",
                        "default": 100
                    },
                    "includeDetails": {
                        "title": "Include listing details",
                        "type": "boolean",
                        "description": "Also open each listing to add amenities, guest capacity, host and description. More complete, but slower (one extra request per listing). Off by default.",
                        "default": false
                    },
                    "maxItems": {
                        "title": "Max listings in total",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Optional overall cap on listings returned. Leave blank for everything your locations point to."
                    },
                    "proxyConfiguration": {
                        "title": "Proxy",
                        "type": "object",
                        "description": "Airbnb is scraped through a residential proxy by default for reliability at scale. Leave as is unless you have a reason to change it.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "RESIDENTIAL"
                            ]
                        }
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
