Skip to main content

Airbnb scraper in Python

Project description

Airbnb scraper in Python

Overview

This project is an open-source tool developed in Python for extracting product information from Airbnb. It's designed to be easy to use, making it an ideal solution for developers looking for Airbnb product data.

Features

  • Extract prices, available dates, reviews and others
  • Full search support
  • Extracts detailed product information from Airbnb
  • Implemented in Python just because it's popular
  • Easy to integrate with existing Python projects
  • The code is optimize to work on this format: https://www.airbnb.com/rooms/[room_id]

Legacy

Important

  • With the new airbnb changes, if you want to get the price from a room url you need to specify the date range the date range should be on the format year-month-day, if you leave the date range empty, you will get the details but not the price

Install

$ pip install pyairbnb

Examples

import pyairbnb
import json
currency="MXN"
check_in = "2025-02-01"
check_out = "2025-02-04"
ne_lat = -1.03866277790021
ne_long = -77.53091734683608
sw_lat = -1.1225978433925647
sw_long = -77.59713412765507
zoom_value = 2
search_results = pyairbnb.search_all(check_in,check_out,ne_lat,ne_long,sw_lat,sw_long,zoom_value, currency,"")
details_data = []
progress = 1
with open('search_results.json', 'w', encoding='utf-8') as f:
    f.write(json.dumps(search_results))
for result in search_results[:10]:
    data = pyairbnb.get_details_from_id(result["room_id"],currency,check_in,check_out,"")
    details_data.append(data)
    print("len results: ",progress, len(search_results))
    progress=progress+1

with open('details_data_json.json', 'w', encoding='utf-8') as f:
    f.write(json.dumps(details_data))

Example for getting prices, avaiable dates, reviews and other metadata

Getting the reviews, along with metadata

import pyairbnb
import json
room_url="https://www.airbnb.com/rooms/30931885"
data = pyairbnb.get_reviews(room_url,"")
with open('reviews.json', 'w', encoding='utf-8') as f:
    f.write(json.dumps(data["reviews"]))

Getting listings from user id

import pyairbnb
import json
host_id = 0
api_key = pyairbnb.get_api_key("")
listings = pyairbnb.get_listings_from_user(host_id,api_key,"")
with open('listings.json', 'w', encoding='utf-8') as f:
    f.write(json.dumps(listings))

Getting experience from user id

import pyairbnb
import json
check_in = "2025-04-10"
check_out = "2025-04-12"
api_key = pyairbnb.get_api_key("")
experiences = pyairbnb.search_experience("Estados Unidos",check_in,check_out,"EUR",api_key,"")
with open('experiences.json', 'w', encoding='utf-8') as f:
    f.write(json.dumps(experiences))

Getting available/unavailable, along with metadata

import pyairbnb
import json
room_url="https://www.airbnb.com/rooms/44590727"
calendar = pyairbnb.get_calendar(room_url,"")
with open('calendar.json', 'w', encoding='utf-8') as f:
    f.write(json.dumps(calendar["calendar"]))

if you want to get the price you need to send the check in and check out date(this is a requirement on airbn itself)

import pyairbnb
import json
room_url="https://www.airbnb.com/rooms/43198150"
currency="USD"
check_in = "2025-01-02"
check_out = "2025-01-04"
data = pyairbnb.get_details_from_url(room_url,currency,check_in,check_out,"")
with open('details_data_json.json', 'w', encoding='utf-8') as f:
    f.write(json.dumps(data))

example for getting details and NOT price

if you won't want the price, you can just leave it empty

import pyairbnb
import json
room_url="https://www.airbnb.com/rooms/1029961446117217643"
currency="USD"
check_in = ""
check_out = ""
data = pyairbnb.get_details_from_url(room_url,currency,check_in,check_out,"")
with open('details_data_json.json', 'w', encoding='utf-8') as f:
    f.write(json.dumps(data))
import pyairbnb
import json
room_id=18039593#the room id
currency="MXN"
check_in = ""
check_out = ""
proxy_url = pyairbnb.parse_proxy("[IP or domain]","[port]","[user name]","[password]")
data = pyairbnb.get_details_from_id(room_id,currency,check_in,check_out,proxy_url)
with open('details_data_json.json', 'w', encoding='utf-8') as f:
    f.write(json.dumps(data))

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyairbnb-0.0.2.tar.gz (14.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pyairbnb-0.0.2-py3-none-any.whl (19.1 kB view details)

Uploaded Python 3

File details

Details for the file pyairbnb-0.0.2.tar.gz.

File metadata

  • Download URL: pyairbnb-0.0.2.tar.gz
  • Upload date:
  • Size: 14.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.13.1

File hashes

Hashes for pyairbnb-0.0.2.tar.gz
Algorithm Hash digest
SHA256 08ab13525632c8dc15d01dcdcb618e6362e030e96aa1a812f335cab5a40d362e
MD5 a19c848c2c6c644933794d24dce9607e
BLAKE2b-256 4f654c468a91c941546c4ac48b4cb5325cf67637bc680e4618124dc93d62bfc1

See more details on using hashes here.

File details

Details for the file pyairbnb-0.0.2-py3-none-any.whl.

File metadata

  • Download URL: pyairbnb-0.0.2-py3-none-any.whl
  • Upload date:
  • Size: 19.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.13.1

File hashes

Hashes for pyairbnb-0.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 b74e79e1938fb028873eb7ebccd78fa90c7101f81a0ecf4b0932cdd73febb684
MD5 4cbb1541976344d6b2a5c63e08ebf2cb
BLAKE2b-256 03daa3ec0ee957956532e78e4cad6c0fbb7881613228184511aa147a68b8b18f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page