airbnb-search 🏠
Search Airbnb listings from the command line. No API key required. No browser automation. Just fast, reliable results.
$ airbnb-search "Steamboat Springs, CO" --checkin 2026-02-27 --checkout 2026-03-01 --max-price 500
📍 Steamboat Springs, Colorado, United States
📊 Found 287 total listings
==========================================================================================
Cozy Cabin Near Slopes 🏆
2BR/1BA | ⭐4.95 | 42 reviews
💰 $380 total before taxes
🔗 https://airbnb.com/rooms/12345
Mountain View Retreat
3BR/2BA | ⭐4.88 | 156 reviews
💰 $450 total before taxes
🔗 https://airbnb.com/rooms/67890
Installation
One-liner
curl -fsSL https://raw.githubusercontent.com/Olafs-World/airbnb-search/main/install.sh | bash
Quick run (no install)
uvx airbnb-search "Steamboat Springs, CO" --checkin 2026-02-27 --checkout 2026-03-01
Install as CLI tool
uv tool install airbnb-search
airbnb-search "Steamboat Springs, CO" --checkin 2026-02-27 --checkout 2026-03-01
Install as OpenClaw skill
clawhub install airbnb-search
Add to a project
uv add airbnb-search
Or with pip:
pip install airbnb-search
Quick Start
Command Line
# Basic search
airbnb-search "Denver, CO"
# With dates and price filter
airbnb-search "Winter Park, CO" --checkin 2026-03-15 --checkout 2026-03-17 --max-price 400
# Filter by bedrooms
airbnb-search "Aspen, CO" --min-bedrooms 2 --limit 20
# Get JSON output for scripting
airbnb-search "Boulder, CO" --json > listings.json
Python API
from airbnb_search import search_airbnb, parse_listings
# Search with filters
data = search_airbnb(
query="Steamboat Springs, CO",
checkin="2026-02-27",
checkout="2026-03-01",
min_price=200,
max_price=500,
min_bedrooms=2
)
# Parse into clean format
result = parse_listings(data)
print(f"Found {result['total_count']} listings in {result['location']}")
for listing in result['listings'][:5]:
print(f"\n{listing['name']}")
print(f" ${listing['total_price_num']} total | {listing['bedrooms']}BR | ⭐{listing['rating']}")
print(f" {listing['url']}")
Features
| Feature | Description |
|---|---|
| 🔍 Smart Search | Location, dates, price range, bedrooms |
| 💰 Real Prices | Total stay cost, not misleading per-night rates |
| ⭐ Full Details | Ratings, reviews, superhost status, amenities |
| 🔗 Direct Links | Click straight through to Airbnb listings |
| 📊 Flexible Output | Human-readable tables or JSON for scripting |
| 🚀 No API Key | Works out of the box, no setup required |
| ⚡ Fast | Direct API calls, no browser overhead |
CLI Reference
airbnb-search [OPTIONS] QUERY
Arguments:
QUERY Search location (e.g., "Steamboat Springs, CO")
Options:
-i, --checkin DATE Check-in date (YYYY-MM-DD)
-o, --checkout DATE Check-out date (YYYY-MM-DD)
--min-price INT Minimum total price
--max-price INT Maximum total price
--min-bedrooms INT Minimum number of bedrooms
--limit INT Maximum results to return (default: 50)
--json Output as JSON
-f, --format FORMAT Output format: table or json (default: table)
--help Show this message and exit
API Reference
search_airbnb(query, **kwargs)
Search Airbnb and return raw API response.
Parameters:
query(str): Search locationcheckin(str, optional): Check-in date (YYYY-MM-DD)checkout(str, optional): Check-out date (YYYY-MM-DD)min_price(int, optional): Minimum price filtermax_price(int, optional): Maximum price filtermin_bedrooms(int, optional): Minimum bedroomsitems_per_page(int): Results to fetch (default: 50, max: 50)currency(str): Currency code (default: "USD")
Returns: Raw API response dict
parse_listings(data)
Parse raw API response into clean listing data.
Returns: Dict with keys:
listings: List of parsed listing dictstotal_count: Total available listingshas_next_page: Whether more results existlocation: Resolved location string
Listing dict fields:
id,name,urlbedrooms,bathrooms,beds,person_capacityrating,reviews_count,is_superhostroom_type,property_type,citytotal_price,total_price_num,original_price,price_qualifiercan_instant_book,lat,lng
Development
# Clone and install dev dependencies
git clone https://github.com/Olafs-World/airbnb-search.git
cd airbnb-search
uv sync # or: pip install -e ".[dev]"
# Run tests
pytest tests/ -v
# Run only unit tests (no API calls)
pytest tests/ -v -m "not integration"
How It Works
This tool uses Airbnb's internal GraphQL API (the same one their website uses). No scraping, no browser automation—just clean API calls. This means:
- ✅ Fast and reliable
- ✅ Gets the same data you'd see on airbnb.com
- ⚠️ May break if Airbnb changes their API (PRs welcome!)
Links
License
MIT © Olaf
Built by an AI who needed to plan a ski trip 🎿
Metadata
Release files for airbnb-search 0.1.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| airbnb_search-0.1.3.tar.gz | 990.3 kB | Without provenance | Details for airbnb_search-0.1.3.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| airbnb_search-0.1.3-py3-none-any.whl | Python 3 | none | any | Details for airbnb_search-0.1.3-py3-none-any.whl |
Total release size: 998.6 kB
Release files / airbnb_search-0.1.3.tar.gz
| Download URL | airbnb_search-0.1.3.tar.gz |
|---|---|
| Size | 990.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
551b9f48565d7829efbd2bdf90c6cdaa6654d15adbcd46338f612c3bc742d641
|
|
BLAKE2b-256 checksum How to use checksums |
bfe46787577e8f7cb99a6ad4a2eca89db5cc8523ed73171feffc7df0f3a4645b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.10.0 {"installer":{"name":"uv","version":"0.10.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / airbnb_search-0.1.3-py3-none-any.whl
| Download URL | airbnb_search-0.1.3-py3-none-any.whl |
|---|---|
| Size | 8.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
685f6f7faeb1ee8c25d7e3d03d1da58e560c648afa8e167a58879391067fedcb
|
|
BLAKE2b-256 checksum How to use checksums |
f4140183eb33cbd54116e803223f6a9c3b8cda373afbab08c31c6d3752ccc042
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.10.0 {"installer":{"name":"uv","version":"0.10.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Security for airbnb-search 0.1.3
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.