Airbnb Price Tracker — Monitor Listing Prices
Pricing
from $10.00 / 1,000 results
Go to Apify Store

Airbnb Price Tracker — Monitor Listing Prices
Scrape Airbnb search results across multiple locations, dates, and guest counts. Extract listing details, prices, ratings, amenities, and more. - **Multi-locati
Pricing
from $10.00 / 1,000 results
Rating
0.0
(0)
Developer
Julien ApiKiy
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Airbnb Price Tracker — Apify Actor
Scrape Airbnb search results across multiple locations, dates, and guest counts. Extract listing details, prices, ratings, amenities, and more.
Features
- Multi-location search — search across multiple cities/regions in one run
- Date-aware pricing — includes check-in/check-out for accurate nightly and total prices
- Rich data extraction — name, price/night, total price, rating, reviews, host, bedrooms, beds, baths, amenities, images, and URLs
- Pagination support — automatically follows "Next" pages up to your
maxResultslimit - Anti-detection — randomized user agents, stealth browser args, human-like delays, no proxy required
- Price & property filters — filter by min/max price and property type (apartment/house/all)
- ESM / Node 22+ — modern JavaScript throughout
Input
| Field | Type | Default | Description |
|---|---|---|---|
locations | string[] | required | Cities, regions, or addresses to search |
checkIn | string | — | Check-in date (YYYY-MM-DD) |
checkOut | string | — | Check-out date (YYYY-MM-DD) |
guests | integer | 2 | Number of guests (1–16) |
minPrice | integer | 0 | Minimum nightly price filter (USD) |
maxPrice | integer | 0 | Maximum nightly price filter (USD) |
propertyType | string | "all" | apartment, house, or all |
maxResults | integer | 20 | Max listings per location (1–200) |
Output
Each dataset item contains:
{"listingName": "Cozy Studio in Downtown","pricePerNight": 120,"totalPrice": 600,"rating": 4.85,"reviewCount": 342,"hostName": "Jane","bedrooms": 1,"beds": 1,"bathrooms": 1,"amenities": ["WiFi", "Kitchen"],"imageUrl": "https://...","listingUrl": "https://www.airbnb.com/rooms/123456","location": "New York","scrapedAt": "2025-07-04T12:00:00.000Z"}
Usage
Run locally
npm installnpm start
Run via Apify CLI
apify actor:create airbnb-price-trackerapify call -i '{"locations": ["New York"], "checkIn": "2025-08-01", "checkOut": "2025-08-05", "guests": 2, "maxResults": 10}'
Docker build
docker build -t airbnb-price-tracker .docker run airbnb-price-tracker
Tests
$npm test
Architecture
airbnb-price-tracker/├── .actor/│ ├── actor.json # Actor configuration│ ├── input_schema.json # Input schema with editor hints│ └── output_schema.json # Output schema├── src/│ ├── main.js # Entry point, validation, orchestration│ ├── scraper.js # Playwright scraping, anti-detection, extraction│ └── utils.js # URL builders, parsers, helpers├── test/│ ├── utils.test.js # Tests for URL builders, parsers, helpers│ ├── main.test.js # Tests for validation and defaults│ └── scraper.test.js # Tests for module exports├── Dockerfile├── package.json└── README.md
Anti-Detection Strategy
- Random user agent from pool of 4 real Chrome strings
- Playwright args to disable
AutomationControlledand other fingerprinting vectors navigator.webdriveroverride viaaddInitScript- Mock
window.chrome,navigator.plugins,navigator.languages - Random delays (1–5s) between pages and locations
- No proxy required — works from datacenter IPs
💰 Pricing
Pay-per-use, no monthly fees:
| Price | |
|---|---|
| Actor start | $0.01 |
| Per result | $0.01 |
💡 Example: A run returning 500 results costs $5.01 total ($0.01 start + 500 × $0.01).
License
MIT