All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog .
- Retry with exponential backoff on 429, 5xx, and network errors (3 attempts)
- Support for partial URLs:
/rooms/123456 or raw ID 123456
- Key-value store OUTPUT:
{ listings, summary: { count, requestCount, durationSec } }
- Metrics in final log: API request count and total duration
- Troubleshooting section in README (401, missing revenue, invalid URLs)
- Clearer 401 error message with instructions to refresh token
- Validation: skip invalid inputs with warning instead of failing, show invalid examples in error
- AirDNA enrichment for Airbnb listing URLs
- Market mode: fetch listings by market ID (revenue, occupancy, revenue_potential)
- Listing mode: fetch individual listing details
- Input:
airbnbListingUrls, bearerToken, cookies, marketId, currency
- Output: dataset with listing_id, url, title, market, bedrooms, bathrooms, accommodates, rating, reviews, adr, revenue, occupancy, revenue_potential, days_available, lat, lng, photo_url, currency
- Use
Actor.main() instead of Actor.init() for proper callback execution
- Use
log from apify package instead of non-existent Actor.log