A powerful Python scraper for extracting vacation rental data from Airbnb. Search homes, experiences, and services worldwide. Get listing details, reviews, availability, and more using the Airbnb Scraper API by RealtyAPI.
- Home Search - Search by destination, coordinates, Google Place ID, or category with 25+ filters
- Experience Search - Find Airbnb experiences by destination or place ID
- Service Search - Photography, catering, spa, chefs, and more
- Home Details - Full listing data with pricing for specific dates
- Home Reviews - Guest reviews with sorting (most recent, highest/lowest rated)
- Home Availability - Calendar availability data
- Experience Details - Full experience listing data
- Experience Reviews - Experience guest reviews
- Experience Availability - Date availability for experiences
- Service Details & Reviews - Full service data and reviews
- Autocomplete - Location search suggestions
- Categories - Beachfront, Countryside, Trending, Mansions, etc.
- Filter Lists - Amenities, property types, accessibility, host languages
- Flexible Dates - Weekend, week, month stays and date flexibility
- Bulk Mode - Process hundreds of searches from
input.jsonwith progress tracking - Export to JSON or CSV - Save results in your preferred format
Sign up at realtyapi.io to get your API key.
git clone https://github.com/realtyapi/airbnb-scraper-python.git
cd airbnb-scraper-python
pip install -r requirements.txtpython scraper.pyimport requests
url = "https://airbnb.realtyapi.io/search/homes/bydestination"
params = {
"searchDestinations": "toronto, canada",
"checkIn": "2025-06-01",
"checkOut": "2025-06-07",
"adults": 2,
"bedrooms": 2,
"typeOfPlace": "Entire_home"
}
headers = {
"x-realtyapi-key": "YOUR_API_KEY"
}
response = requests.get(url, headers=headers, params=params)
print(response.json())from airbnb_api import AirbnbAPI
api = AirbnbAPI("YOUR_API_KEY")
data = api.search_homes_by_destination(
destination="toronto, canada",
check_in="2025-06-01",
check_out="2025-06-07",
adults=2,
bedrooms=2,
type_of_place="Entire_home",
price_max=300,
)
print(data)data = api.search_homes_by_coordinates(
ne_lat="44.029433", ne_lng="-79.317392",
sw_lat="43.824096", sw_lng="-79.498301",
check_in="2025-06-01",
check_out="2025-06-07",
adults=2,
)
print(data)data = api.search_homes_by_place_id("ChIJpTvG15DL1IkRd8S0KlBVNTI")
print(data)# Use /categories endpoint to get available tags
data = api.search_homes_by_category(
category_tag="Tag:4104", # Countryside
adults=2,
price_max=200,
)
print(data)data = api.search_homes_by_destination(
destination="bali, indonesia",
superhost=True,
guest_favorite=True,
type_of_place="Entire_home",
price_max=150,
)
print(data)data = api.search_experiences_by_destination(
destination="tokyo, japan",
experience_type="cooking, cultural",
price_max=100,
)
print(data)data = api.search_services_by_destination(
destination="new york, usa",
check_in="2025-06-01",
check_out="2025-06-03",
type_of_service="Photography",
)
print(data)data = api.get_home_details(
stay_listing_id="RGVtYW5kU3RheUxpc3Rpbmc6MTI1NTc2NzAzNTg2MDMzMTgxOQ==",
check_in="2025-06-01",
check_out="2025-06-07",
)
print(data)data = api.get_home_reviews(
stay_listing_id="U3RheUxpc3Rpbmc6MTExNjA4Mjc3OTc0NDI3OTM4Nw==",
review_limit="10",
sorting_preference="most_recent",
)
print(data)data = api.get_home_availability("868126372367701281")
print(data)data = api.get_experience_details("QWN0aXZpdHlMaXN0aW5nOjMxMDk1ODQ=")
print(data)
reviews = api.get_experience_reviews(
"U3RheUxpc3Rpbmc6OTQxOTg1NTQyMTc4NDcxMjA0",
review_limit="10",
)
print(reviews)data = api.get_service_details("QWN0aXZpdHlMaXN0aW5nOjYwNjcyNzE=")
print(data)data = api.autocomplete("paris")
print(data)categories = api.get_categories()
amenities = api.get_amenities_filter()
property_types = api.get_property_types_filter()
languages = api.get_host_language_filter()Enter one input manually. Shows a preview (first 1000 characters), then asks to save as JSON or CSV.
Process hundreds of inputs from input.json. Shows a progress bar, saves all results at the end.
Copy input_sample.json to input.json and fill in your data.
{
"search_homes_destinations": [
{
"destination": "toronto, canada",
"check_in": "2025-06-01",
"check_out": "2025-06-07",
"adults": 2,
"bedrooms": 2,
"type_of_place": "Entire_home",
"price_max": 300
},
"paris, france"
],
"search_homes_coordinates": [
{"ne_lat": "44.02", "ne_lng": "-79.31", "sw_lat": "43.82", "sw_lng": "-79.49"}
],
"search_homes_place_ids": ["ChIJpTvG15DL1IkRd8S0KlBVNTI"],
"search_homes_categories": ["Tag:4104"],
"search_exp_destinations": [
{"destination": "toronto", "experience_type": "art, cooking"}
],
"search_services": [
{"destination": "toronto", "check_in": "2025-06-01", "check_out": "2025-06-07", "type_of_service": "Photography"}
],
"home_listing_ids": [
{"stay_listing_id": "...", "check_in": "2025-06-01", "check_out": "2025-06-07"}
],
"home_product_ids": ["868126372367701281"],
"experience_listing_ids": ["QWN0aXZpdHlMaXN0aW5nOjMxMDk1ODQ="],
"service_listing_ids": ["QWN0aXZpdHlMaXN0aW5nOjYwNjcyNzE="],
"autocomplete_queries": ["paris", "tokyo"]
}| Option | Format | Best for |
|---|---|---|
| 1 | JSON (.json) | Full nested data, programmatic access |
| 2 | CSV (.csv) | Spreadsheets, Excel, data analysis |
| 3 | Both | Keep JSON for detail + CSV for quick review |
export REALTYAPI_KEY=rt_your_key_here
python scraper.py{ "api_key": "rt_your_key_here" }from airbnb_api import AirbnbAPI
api = AirbnbAPI("rt_your_key_here")Any_type, Room, Entire_home
House, Flat, Guest house, Hotel
instant book, self checkin, allow pets, free cancellation
Exact_dates, plusminus_1day, plusminus_2days, plusminus_3days, plusminus_7days, plusminus_14days
Weekend, Week, Month
search_results, map_results, map_plus_search_results
most_relevant, highest_rated, lowest_rated, most_recent
architecture, art, beauty, cooking, cultural, dining, flying, food, galleries, landmarks, museum, outdoor, performance, shopping, tasting, water, wellness, wildlife, workout
Photography, Prepared_Meals, Training, Makeup, Hair, Spa_Treatment, Catering, Nails, Chefs
Kids, Big Groups, Solo Travellers, Date Night
morning (before 12 PM), afternoon (after 12 PM), evening (after 5 PM)
Min: 30, 45, 60, 90, 120, 180 | Max: 45, 60, 90, 120, 180
| Category | Endpoint | Description |
|---|---|---|
| Search | /search/homes/bydestination |
Homes by destination (25+ filters) |
| Search | /search/homes/bycoordinates |
Homes by bounding box |
| Search | /search/homes/byplaceid |
Homes by Google Place ID |
| Search | /search/homes/bycategory |
Homes by category tag |
| Search | /search/exp/bydestination |
Experiences by destination |
| Search | /search/exp/byplaceid |
Experiences by Place ID |
| Search | /search/services/bydestination |
Services by destination |
| Search | /autocomplete |
Location autocomplete |
| Details | /home/details |
Full home listing details |
| Details | /home/reviews |
Home guest reviews |
| Details | /home/availability |
Home calendar availability |
| Details | /experience/details |
Experience details |
| Details | /experience/reviews |
Experience reviews |
| Details | /experience/availability |
Experience date availability |
| Details | /service/details |
Service details |
| Details | /service/reviews |
Service reviews |
| Filters | /categories |
Airbnb categories |
| Filters | /filter/amenities |
Amenity IDs |
| Filters | /filter/property_types |
Property types |
| Filters | /filter/accessibility |
Accessibility features |
| Filters | /filter/host_language |
Host languages |
| Tools | /currencies |
Available currencies |
| Tools | /language_codes |
Available languages |
airbnb-scraper-python/
├── scraper.py # Interactive CLI (test one or bulk run)
├── airbnb_api.py # Airbnb API client library (24 endpoints)
├── config.py # API key management
├── examples.py # Code examples for every endpoint
├── input_sample.json # Template for bulk input (copy to input.json)
├── input.json # Your bulk input data (gitignored)
├── requirements.txt # Python dependencies
├── config.json # Your API key (auto-created, gitignored)
├── output/ # Saved JSON/CSV outputs (auto-created)
└── README.md # This file
- Python 3.7+
requestslibrary
Sign up at realtyapi.io to get your Airbnb Scraper API key.
RealtyAPI also offers scraper APIs for:
MIT
Keywords: airbnb scraper, airbnb api, airbnb data scraper, airbnb property data, airbnb scraper python, airbnb listing scraper, airbnb api python, scrape airbnb, airbnb scraping tool, airbnb price scraper, airbnb review scraper, airbnb availability scraper, airbnb search api, airbnb experience api, airbnb rental data, airbnb vacation rental scraper, airbnb home data, airbnb listing data api, airbnb calendar scraper, airbnb host data, airbnb superhost, airbnb guest favorite, airbnb category search, airbnb beachfront, airbnb countryside, airbnb automation, airbnb data mining, airbnb web scraper, airbnb crawler, airbnb property lookup, vacation rental api, short term rental data, airbnb service scraper, airbnb photography, airbnb experience scraper, realtyapi, realty api