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

Scrape airbnb properties listings from search results and extract complete details for each property including availability calendar.

💰 Cost: $0.2 per 1000 results

- **URL**: https://apify.com/curious_coder/airbnb-scraper.md
- **Developed by:** [Curious Coder](https://apify.com/curious_coder) (community)
- **Categories:** Real estate, Travel
- **Stats:** 870 total users, 85 monthly users, 99.3% runs succeeded, 45 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $0.20 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

### Overview

If you're looking to scrape [Airbnb](https://airbnb.com) search results and extract detailed information efficiently, you've come to the right place. This tool is designed to help you extract vital data such as ratings, amenities, location details, host information, house rules, pricing, and more, all from Airbnb's platform.

### Features

- Scrape property search results
- Scrape property urls
- Scrape properties of airbnb host
- Scrape property reviews
- Scrape availability data at dates

### How to scrape Airbnb properties

- Go to [Airbnb Scraper](https://apify.com/curious_coder/airbnb-scraper) on the Apify platform
- Click the Try for free button
- Go to airbnb and search for properties with required filters and copy the search url from the address bar
- Click the 'Start' button, the tool will start scraping.
- When the run has finished, click the Export button
- View and download your data

### Input

Here are sample inputs:

```
{
  "scrapeDetail": true,
  "urls": [
	"https://www.airbnb.co.in/users/show/212911408",
	"https://www.airbnb.co.in/rooms/1041764586939560403?source_impression_id=p3_1723186677_P3-X_oC5Hfx4XuQ1",
	"https://www.airbnb.co.in/s/India/homes?tab_id=home_tab&refinement_paths%5B%5D=%2Fhomes&flexible_trip_lengths%5B%5D=one_week&monthly_start_date=2024-07-01&monthly_length=3&monthly_end_date=2024-10-01&price_filter_input_type=0&channel=EXPLORE&query=India&place_id=ChIJkbeSa_BfYzARphNChaFPjNc&location_bb=Qg6xeULCymxAzs5wQog4Kw%3D%3D&date_picker_type=calendar&checkin=2024-06-29&checkout=2024-07-05&source=structured_search_input_header&search_type=autocomplete_click"
  ],
  "startPage": 1
}
```

### Output

Here is the sample output of this actor:

```json
{
	"id": "1135700964697993602",
	"ratings": [],
	"amenities": [
		{
			"groupName": "Bathroom",
			"title": "Hair dryer",
			"available": true,
			"subTitle": ""
		},
		{
			"groupName": "Bedroom and laundry",
			"title": "Essentials",
			"available": true,
			"subTitle": "Towels, bed sheets, soap, and toilet paper"
		},
		{
			"groupName": "Bedroom and laundry",
			"title": "Hangers",
			"available": true,
			"subTitle": ""
		},
		{
			"groupName": "Bedroom and laundry",
			"title": "Bed linens",
			"available": true,
			"subTitle": ""
		},
		{
			"groupName": "Bedroom and laundry",
			"title": "Extra pillows and blankets",
			"available": true,
			"subTitle": ""
		},
		{
			"groupName": "Bedroom and laundry",
			"title": "Room-darkening shades",
			"available": true,
			"subTitle": ""
		},
		{
			"groupName": "Bedroom and laundry",
			"title": "Iron",
			"available": true,
			"subTitle": ""
		},
		{
			"groupName": "Bedroom and laundry",
			"title": "Safe",
			"available": true,
			"subTitle": ""
		},
		{
			"groupName": "Bedroom and laundry",
			"title": "Clothing storage",
			"available": true,
			"subTitle": ""
		},
		{
			"groupName": "Family",
			"title": "Crib",
			"available": true,
			"subTitle": ""
		},
		{
			"groupName": "Heating and cooling",
			"title": "Air conditioning",
			"available": true,
			"subTitle": ""
		},
		{
			"groupName": "Heating and cooling",
			"title": "Indoor fireplace",
			"available": true,
			"subTitle": ""
		},
		{
			"groupName": "Heating and cooling",
			"title": "Heating",
			"available": true,
			"subTitle": ""
		},
		{
			"groupName": "Privacy and safety",
			"title": "Lock on bedroom door",
			"available": true,
			"subTitle": ""
		},
		{
			"groupName": "Privacy and safety",
			"title": "Fire extinguisher",
			"available": true,
			"subTitle": ""
		},
		{
			"groupName": "Privacy and safety",
			"title": "First aid kit",
			"available": true,
			"subTitle": ""
		},
		{
			"groupName": "Internet and office",
			"title": "Wifi",
			"available": true,
			"subTitle": ""
		},
		{
			"groupName": "Internet and office",
			"title": "Dedicated workspace",
			"available": true,
			"subTitle": ""
		},
		{
			"groupName": "Location features",
			"title": "Ski-in/Ski-out",
			"available": true,
			"subTitle": "Guests can access ski lifts without driving or taking paid transportation"
		},
		{
			"groupName": "Outdoor",
			"title": "Fire pit",
			"available": true,
			"subTitle": ""
		},
		{
			"groupName": "Outdoor",
			"title": "Outdoor dining area",
			"available": true,
			"subTitle": ""
		},
		{
			"groupName": "Outdoor",
			"title": "BBQ grill",
			"available": true,
			"subTitle": ""
		},
		{
			"groupName": "Parking and facilities",
			"title": "Free parking on premises",
			"available": true,
			"subTitle": ""
		},
		{
			"groupName": "Parking and facilities",
			"title": "Paid parking on premises",
			"available": true,
			"subTitle": ""
		},
		{
			"groupName": "Not included",
			"title": "Exterior security cameras on property",
			"available": false,
			"subTitle": null
		},
		{
			"groupName": "Not included",
			"title": "Kitchen",
			"available": false,
			"subTitle": ""
		},
		{
			"groupName": "Not included",
			"title": "TV",
			"available": false,
			"subTitle": ""
		},
		{
			"groupName": "Not included",
			"title": "Washer",
			"available": false,
			"subTitle": ""
		},
		{
			"groupName": "Not included",
			"title": "Dryer",
			"available": false,
			"subTitle": ""
		},
		{
			"groupName": "Not included",
			"title": "Smoke alarm",
			"available": false,
			"subTitle": "This place may not have a smoke detector. Reach out to the host with any questions."
		},
		{
			"groupName": "Not included",
			"title": "Carbon monoxide alarm",
			"available": false,
			"subTitle": "This place may not have a carbon monoxide detector. Reach out to the host with any questions."
		},
		{
			"groupName": "Not included",
			"title": "Hot water",
			"available": false,
			"subTitle": ""
		}
	],
	"hostDetails": {
		"id": "568305068",
		"profileUrl": "https://www.airbnb.com/users/show/568305068",
		"name": "Atef",
		"isSuperhost": false,
		"timeAsHost": {
			"years": 1,
			"months": 6
		},
		"profilePictureUrl": "https://a0.muscache.com/im/pictures/user/User-568305068/original/6ec75489-0b4f-4731-b20d-2226793e2965.jpeg",
		"ratingCount": 78,
		"ratingAverage": 4.72,
		"about": "Badawi grew up  in Wadi Rum. I made one of the most beautiful camps to preserve the heritage of our ancestors. I like to communicate with my guests. I will accompany you during the activities. I will be very happy to share with you the distinctive and multiple places.",
		"hostRespondTimeCopy": null,
		"hostDetails": [
			"Response rate: 100%",
			"Responds within an hour"
		],
		"location": "Lives in Wadi Rum Village, Jordan",
		"cohosts": []
	},
	"houseRules": [
		{
			"title": "Check-in after 2:00 PM"
		},
		{
			"title": "2 guests maximum"
		}
	],
	"description": "Reconnect with nature at this unforgettable escape.",
	"starRating": null,
	"reviewsCount": 2,
	"costPerNight": "$65.67",
	"available": true,
	"canInstantBook": true,
	"maxGuestCapacity": 2,
	"maxPlusValue": 16,
	"petsAllowed": null,
	"location": {
		"latitude": 29.67348,
		"longitude": 35.46849,
		"city": "Wadi Rum Village",
		"state": "Aqaba Governorate",
		"country": "Jordan",
		"isExactLocation": false,
		"approximateRadiusMeters": 500,
		"address": "",
		"description": "",
		"title": "Wadi Rum Village"
	},
	"title": "The magic of Wadi Rum",
	"roomTypeTitle": "Room in Wadi Rum Village, Jordan",
	"propertyType": "Private room in dome",
	"sharingTitle": "Dome in Wadi Rum Village · 1 bedroom · 2 beds · 1 private bath",
	"overviewItems": [
		"2 beds",
		"Private attached bathroom"
	],
	"roomType": "Private room",
	"descriptionLanguage": "ar",
	"hostOverviewItems": [
		"2 years hosting"
	],
	"pricing": {
		"checkin": "2026-09-20",
		"checkout": "2026-09-24",
		"price": "$263",
		"originalPrice": null,
		"qualifier": "for 4 nights",
		"breakdown": [
			{
				"price": "$262.69",
				"description": "4 nights x $65.67",
				"type": "DETAIL"
			},
			{
				"price": "$262.69",
				"description": "Price after discount",
				"type": "TOTAL"
			}
		]
	},
	"photos": [
		{
			"id": "1884775562",
			"url": "https://a0.muscache.com/im/pictures/hosting/Hosting-1117627316721738691/original/2126b797-bcfe-452c-a00f-60d18f9a0c8b.jpeg",
			"caption": "Living room image 1",
			"primary": true
		},
		{
			"id": "2081345030",
			"url": "https://a0.muscache.com/im/pictures/hosting/Hosting-U3RheVN1cHBseUxpc3Rpbmc6MTExNzYyNzMxNjcyMTczODY5MQ%3D%3D/original/bc5cf0c0-b134-4690-a239-7d55edd77e3c.jpeg",
			"caption": "Bedroom image 1"
		},
		"removed remaining items for brevity.."
	],
	"inputUrl": "https://www.airbnb.com/rooms/1135700964697993602?adults=1&category_tag=Tag%3A8099&children=0&enable_m3_private_room=true&infants=0&pets=0&photo_id=1884775584&search_mode=flex_destinations_search&check_in=2025-10-21&check_out=2025-10-25&source_impression_id=p3_1722932634_P3cX0ltCq-IPA6hc&previous_page_section_name=1000&federated_search_id=3fbe074c-e6fe-499c-91e8-3150ebc465f3",
	"availability": [
		{
			"date": "2025-10-01",
			"available": false,
			"bookable": null
		},
		{
			"date": "2025-10-02",
			"available": false,
			"bookable": null
		},
		{
			"date": "2025-10-03",
			"available": false,
			"bookable": null
		},
		{
			"date": "2025-10-04",
			"available": false,
			"bookable": null
		},
		"removed remaining items for brevity.."
	],
	"reviews": [
		{
			"collectionTag": "LAST MINUTE TRIP",
			"comments": "Está muy padre lo disfrutamos mucho mi hija y yo <br/>La locación es padrísima y tienes unas panorámicas hermosas <br/>El lugar tiene internet solo en el restaurante y la recepción pero está perfecto para desconectarse y descansar <br/>Todo funciona perfecto<br/>Nosotros disfrutamos mucho la estancia y las actividades (puesta de sol montando camello y paseo en camioneta por el Wadi Rum",
			"id": "1225901680476345869",
			"language": "es",
			"createdAt": "2024-08-18T10:07:48Z",
			"reviewee": {
				"deleted": false,
				"firstName": "Atef",
				"hostName": "Atef",
				"id": "568305068",
				"pictureUrl": "https://a0.muscache.com/im/pictures/user/User-568305068/original/6ec75489-0b4f-4731-b20d-2226793e2965.jpeg",
				"profilePath": "/users/show/568305068",
				"isSuperhost": false,
				"userProfilePicture": {
					"baseUrl": "https://a0.muscache.com/im/pictures/user/User-568305068/original/6ec75489-0b4f-4731-b20d-2226793e2965.jpeg",
					"onPressAction": {
						"url": "/users/show/568305068"
					}
				}
			},
			"reviewer": {
				"deleted": false,
				"firstName": "Teresa",
				"hostName": "Teresa",
				"id": "143592582",
				"pictureUrl": "https://a0.muscache.com/im/pictures/user/User-143592582/original/1ff8da6f-678a-4c25-bb47-2744759337c0.jpeg",
				"profilePath": "/users/show/143592582",
				"isSuperhost": false,
				"userProfilePicture": {
					"baseUrl": "https://a0.muscache.com/im/pictures/user/User-143592582/original/1ff8da6f-678a-4c25-bb47-2744759337c0.jpeg",
					"onPressAction": {
						"url": "/users/show/143592582"
					}
				}
			},
			"reviewHighlight": "Stayed one night",
			"highlightType": "LENGTH_OF_STAY",
			"localizedDate": "August 2024",
			"localizedRespondedDate": null,
			"localizedReviewerLocation": "McAllen, Texas",
			"localizedReview": {
				"comments": "He is a very father, we enjoyed it very much by my daughter and I <br/>The location is very good and you have beautiful panoramas <br/>The place has internet only at the restaurant and reception but is perfect for disconnecting and lounging <br/>Everything works<br/>We really enjoyed the stay and activities (sunset riding camel and pickup ride on the Wadi Rum",
				"commentsLanguage": "es",
				"disclaimer": "Translated from Spanish",
				"needsTranslation": true,
				"response": null,
				"responseDisclaimer": null
			},
			"rating": 5,
			"ratingAccessibilityLabel": "Rating, 5 stars",
			"recommendedNumberOfLines": null,
			"response": null,
			"roomTypeListingTitle": null,
			"highlightedReviewSentence": [],
			"highlightReviewMentioned": null,
			"showMoreButton": {
				"title": "Show more",
				"loggingEventData": {
					"loggingId": "pdp.reviews.readMore",
					"experiments": [],
					"eventData": null,
					"eventDataSchemaName": null,
					"section": null,
					"component": null
				}
			},
			"subtitleItems": [],
			"channel": null,
			"reviewMediaItems": [],
			"isHostHighlightedReview": null,
			"reviewPhotoUrls": []
		},
		{
			"collectionTag": null,
			"comments": "К отелю на своей машине вы не сможете добраться.вас встретят и вернут.все необходимое берите с собой.ужин будет на территории отеля. Отель новый,чистый. В отеле предлагают рассвет и закат в пустыне.",
			"id": "1181717278361646152",
			"language": "ru",
			"createdAt": "2024-06-18T11:01:17Z",
			"reviewee": {
				"deleted": false,
				"firstName": "Atef",
				"hostName": "Atef",
				"id": "568305068",
				"pictureUrl": "https://a0.muscache.com/im/pictures/user/User-568305068/original/6ec75489-0b4f-4731-b20d-2226793e2965.jpeg",
				"profilePath": "/users/show/568305068",
				"isSuperhost": false,
				"userProfilePicture": {
					"baseUrl": "https://a0.muscache.com/im/pictures/user/User-568305068/original/6ec75489-0b4f-4731-b20d-2226793e2965.jpeg",
					"onPressAction": {
						"url": "/users/show/568305068"
					}
				}
			},
			"reviewer": {
				"deleted": false,
				"firstName": "Elena",
				"hostName": "Elena",
				"id": "517338277",
				"pictureUrl": "https://a0.muscache.com/im/pictures/user/dce3fa09-3c93-40be-a8c9-7fb6b56da5b1.jpg",
				"profilePath": "/users/show/517338277",
				"isSuperhost": false,
				"userProfilePicture": {
					"baseUrl": "https://a0.muscache.com/im/pictures/user/dce3fa09-3c93-40be-a8c9-7fb6b56da5b1.jpg",
					"onPressAction": {
						"url": "/users/show/517338277"
					}
				}
			},
			"reviewHighlight": "Stayed one night",
			"highlightType": "LENGTH_OF_STAY",
			"localizedDate": "June 2024",
			"localizedRespondedDate": null,
			"localizedReviewerLocation": "2 years on Airbnb",
			"localizedReview": {
				"comments": "You can't get to the hotel by your car. You will be met and returned. Take all the necessary things with you. Dinner will be on the territory of the hotel. The hotel is new,clean. The hotel offers sunrise and sunset in the desert.",
				"commentsLanguage": "ru",
				"disclaimer": "Translated from Russian",
				"needsTranslation": true,
				"response": null,
				"responseDisclaimer": null
			},
			"rating": 5,
			"ratingAccessibilityLabel": "Rating, 5 stars",
			"recommendedNumberOfLines": null,
			"response": null,
			"roomTypeListingTitle": null,
			"highlightedReviewSentence": [],
			"highlightReviewMentioned": null,
			"showMoreButton": {
				"title": "Show more",
				"loggingEventData": {
					"loggingId": "pdp.reviews.readMore",
					"experiments": [],
					"eventData": null,
					"eventDataSchemaName": null,
					"section": null,
					"component": null
				}
			},
			"subtitleItems": [],
			"channel": null,
			"reviewMediaItems": [],
			"isHostHighlightedReview": null,
			"reviewPhotoUrls": []
		}
	]
}
```

#### Output fields (reference)

Fields depend on which URLs you scrape and on input flags (`scrapeDetail`, `scrapeReviews`, `scrapeAvailability`).

**Search / host listing rows** (no detail scrape): `id`, `propertyUrl`, `title`, `subtitle`, `starRating`, `reviewsCount`, `price`, `originalPrice`, `dates`, `bedInfo` (bed and bath lines from the card when present), `location` (coordinates), `badges`, `photos`, `hostDetails`, `inputUrl`. On search rows `title` is the card heading (e.g. “Apartment in Rio de Janeiro”) and `subtitle` is the listing’s own headline, matching how Airbnb displays search cards; the first entry in `photos` is the card’s cover image and carries `"primary": true`. Host-profile listings also include `propertyType`, `roomType`, `rating`, `reviewCount` where the API provides them.

**Property detail** (`scrapeDetail: true` or a `/rooms/{id}` URL): all fields above are merged with PDP data, including `amenities`, `houseRules`, `description`, `ratings` (category scores), `available`, `canInstantBook`, `maxGuestCapacity`, `maxPlusValue`, `petsAllowed`, `pricing`, richer `photos`, `hostDetails`, and:

| Field | Description |
|--------|-------------|
| `title` | The listing’s actual headline, exactly as shown at the top of the Airbnb page (e.g. “The magic of Wadi Rum”). |
| `roomTypeTitle` | The generic room-type heading (e.g. “Room in Wadi Rum Village, Jordan”). |
| `photos` | All listing photos in the same order Airbnb displays them, each with `id`, `url` and `caption`. The cover photo comes first and carries `"primary": true`. |
| `pricing` | The stay's price quote: total `price`, `originalPrice` (when discounted), `qualifier` (e.g. "for 3 nights"), a line-by-line `breakdown`, and the `checkin` / `checkout` dates the quote is for. Airbnb only prices concrete dates — set the check-in/check-out inputs to control them. With no dates set, the actor automatically picks the listing's first bookable window (respecting its minimum-stay rule) and marks the quote with `"datesAutoSelected": true`. |
| `costPerNight` | The nightly rate from the price breakdown (e.g. "$65.67"). |
| `propertyType` | Listing type string from sharing metadata (e.g. “Private room in dome”). |
| `sharingTitle` | Full sharing headline with bullets (location · bedrooms · beds · baths). |
| `overviewItems` | Short lines from the PDP overview (e.g. “2 beds”, “Private attached bathroom”). |
| `roomType` | Room type from listing context (e.g. “Private room”). |
| `descriptionLanguage` | Language code for the listing description when available. |
| `hostOverviewItems` | Short lines from the host overview block (stats, response rate, etc.). |
| `location.city` / `location.state` / `location.country` | The listing's place names as shown in Airbnb's "Where you'll be" section (`state` is null when Airbnb shows only city and country). |
| `location.isExactLocation` | `true` when Airbnb publishes the exact point. `false` means Airbnb only reveals an approximate area until booking — the coordinates are the center of a circle of `location.approximateRadiusMeters` meters, so they intentionally won't match the exact property position. |
| `location.title` | Short place name when provided by sharing metadata (alongside `latitude` / `longitude` / `address` when present). |

If the reviews section is omitted from the API response, category scores may still appear under `ratings` (from listing analytics metadata), and `starRating` / `reviewsCount` may be filled from sharing metadata when needed.

**Reviews** (`scrapeReviews: true`): `reviews` array on the same record.

**Availability** (`scrapeAvailability: true`): `availability` array (`date`, `available`, `bookable`).

### Integrations

You can use [Make](https://www.make.com/en/register?pc=growthhack) to integrate Airbnb Scraper to any other SaaS platform by designing your own automation flows.

### Airbnb properties API

The actor stores results in a dataset. You can export data in various formats such as CSV, JSON, XLS, etc.
You can scrape and access data on demand using API. For more information, Go to [Airbnb Scraper API integration](https://apify.com/curious_coder/airbnb-scraper/api/endpoints) page

### How much will it cost me to scrape Airbnb properties ?

Based on historical data our scraper costs less than $1 per thousand Airbnb properties as usage credits.
You can scrape upto 50,000 Airbnb properties per month with Apify starter plan

### Is it legal to scrape Airbnb ?

Our scrapers are ethical and do not extract any private user data, such as email addresses, gender, or location. They only extract what the user has chosen to share publicly. We therefore believe that our scrapers, when used for ethical purposes by Apify users, are safe.
However, you should be aware that your results could contain personal data. Personal data is protected by the [GDPR](https://docs.apify.com/academy/get-most-of-actors/actor-readme#:~:text=protected%20by%20the-,GDPR,-in%20the%20European) in the European Union and by other regulations around the world.
You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers. You can also read our blog post on the [legality of web scraping](https://blog.apify.com/is-web-scraping-legal/)

### Your feedback

We’re always working on improving the performance of our Actors. So if you’ve got any technical feedback for this scraper or simply found a bug, please create an issue on the actor’s Issues tab in Apify Console

For additional information you can email us at <heycuriouscoder@gmail.com>

# Changelog

This Actor's version history is a separate document: https://apify.com/curious_coder/airbnb-scraper/changelog.md

# Actor input Schema

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

You can add Property search URLs, Airbnb host profile URLs (`/users/show/…` or `/users/profile/…`), Property URLs

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

Select the currency you want to scrape the prices in

## `scrapeDetail` (type: `boolean`):

No description

## `scrapeAvailability` (type: `boolean`):

Scrape the availability of the property for dates around the check-in date

## `scrapeReviews` (type: `boolean`):

No description

## `checkInDate` (type: `string`):

Default check-in date to use if not available in the URL

## `checkOutDate` (type: `string`):

Default check-out date to use if not available in the URL

## `count` (type: `integer`):

Leave this field empty if you want to scrape all items.

## `limitPerUrl` (type: `integer`):

Maximum number of records to scrape from each start URL (e.g. from each search or host profile URL). Leave empty for no per-URL limit.

## `proxy` (type: `object`):

You can use custom proxy urls if you have

## Actor input object example

```json
{
  "urls": [
    "https://www.airbnb.co.in/s/India/homes?tab_id=home_tab&refinement_paths%5B%5D=%2Fhomes&flexible_trip_lengths%5B%5D=one_week&monthly_start_date=2024-07-01&monthly_length=3&monthly_end_date=2024-10-01&price_filter_input_type=0&channel=EXPLORE&query=India&place_id=ChIJkbeSa_BfYzARphNChaFPjNc&location_bb=Qg6xeULCymxAzs5wQog4Kw%3D%3D&date_picker_type=calendar&checkin=2024-06-29&checkout=2024-07-05&source=structured_search_input_header&search_type=autocomplete_click",
    "https://www.airbnb.com/rooms/1135700964697993602?adults=1&category_tag=Tag%3A8099&children=0&enable_m3_private_room=true&infants=0&pets=0&photo_id=1884775584&search_mode=flex_destinations_search&check_in=2024-08-06&check_out=2024-08-11&source_impression_id=p3_1722932634_P3cX0ltCq-IPA6hc&previous_page_section_name=1000&federated_search_id=3fbe074c-e6fe-499c-91e8-3150ebc465f3",
    "https://www.airbnb.co.in/users/show/212911408"
  ],
  "currency": "USD",
  "scrapeDetail": false,
  "scrapeAvailability": false,
  "scrapeReviews": false,
  "count": 100
}
```

# 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": [
        "https://www.airbnb.co.in/s/India/homes?tab_id=home_tab&refinement_paths%5B%5D=%2Fhomes&flexible_trip_lengths%5B%5D=one_week&monthly_start_date=2024-07-01&monthly_length=3&monthly_end_date=2024-10-01&price_filter_input_type=0&channel=EXPLORE&query=India&place_id=ChIJkbeSa_BfYzARphNChaFPjNc&location_bb=Qg6xeULCymxAzs5wQog4Kw%3D%3D&date_picker_type=calendar&checkin=2024-06-29&checkout=2024-07-05&source=structured_search_input_header&search_type=autocomplete_click",
        "https://www.airbnb.com/rooms/1135700964697993602?adults=1&category_tag=Tag%3A8099&children=0&enable_m3_private_room=true&infants=0&pets=0&photo_id=1884775584&search_mode=flex_destinations_search&check_in=2024-08-06&check_out=2024-08-11&source_impression_id=p3_1722932634_P3cX0ltCq-IPA6hc&previous_page_section_name=1000&federated_search_id=3fbe074c-e6fe-499c-91e8-3150ebc465f3",
        "https://www.airbnb.co.in/users/show/212911408"
    ],
    "count": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("curious_coder/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": [
        "https://www.airbnb.co.in/s/India/homes?tab_id=home_tab&refinement_paths%5B%5D=%2Fhomes&flexible_trip_lengths%5B%5D=one_week&monthly_start_date=2024-07-01&monthly_length=3&monthly_end_date=2024-10-01&price_filter_input_type=0&channel=EXPLORE&query=India&place_id=ChIJkbeSa_BfYzARphNChaFPjNc&location_bb=Qg6xeULCymxAzs5wQog4Kw%3D%3D&date_picker_type=calendar&checkin=2024-06-29&checkout=2024-07-05&source=structured_search_input_header&search_type=autocomplete_click",
        "https://www.airbnb.com/rooms/1135700964697993602?adults=1&category_tag=Tag%3A8099&children=0&enable_m3_private_room=true&infants=0&pets=0&photo_id=1884775584&search_mode=flex_destinations_search&check_in=2024-08-06&check_out=2024-08-11&source_impression_id=p3_1722932634_P3cX0ltCq-IPA6hc&previous_page_section_name=1000&federated_search_id=3fbe074c-e6fe-499c-91e8-3150ebc465f3",
        "https://www.airbnb.co.in/users/show/212911408",
    ],
    "count": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("curious_coder/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": [
    "https://www.airbnb.co.in/s/India/homes?tab_id=home_tab&refinement_paths%5B%5D=%2Fhomes&flexible_trip_lengths%5B%5D=one_week&monthly_start_date=2024-07-01&monthly_length=3&monthly_end_date=2024-10-01&price_filter_input_type=0&channel=EXPLORE&query=India&place_id=ChIJkbeSa_BfYzARphNChaFPjNc&location_bb=Qg6xeULCymxAzs5wQog4Kw%3D%3D&date_picker_type=calendar&checkin=2024-06-29&checkout=2024-07-05&source=structured_search_input_header&search_type=autocomplete_click",
    "https://www.airbnb.com/rooms/1135700964697993602?adults=1&category_tag=Tag%3A8099&children=0&enable_m3_private_room=true&infants=0&pets=0&photo_id=1884775584&search_mode=flex_destinations_search&check_in=2024-08-06&check_out=2024-08-11&source_impression_id=p3_1722932634_P3cX0ltCq-IPA6hc&previous_page_section_name=1000&federated_search_id=3fbe074c-e6fe-499c-91e8-3150ebc465f3",
    "https://www.airbnb.co.in/users/show/212911408"
  ],
  "count": 100
}' |
apify call curious_coder/airbnb-scraper --silent --output-dataset

```

## MCP server setup

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