Switching from Booking Scraper to Booking.com Hotel Prices Scraper
Booking.com Hotel Prices Scraper (arcadium/booking-prices) reads input written for voyager/booking-scraper: 14 of its 17 input fields work as they are. Field list from its public input schema (build 0.0.200, 2026-10-31); prices and run results from the public Apify API, 2026-11-01.
Their fields that work as they are
| Their field | Type | Note |
|---|---|---|
search | string | As is |
startUrls | array | Search-result links are read as destinations (with their dates when the input has none). |
maxItems | integer | Hotels per destination and check-in date, up to 1,000. |
sortBy | string | Mapped to the nearest order (distance_from_search to distance, class_asc to fewest stars, and so on). |
minScore | string | As is |
starsCountFilter | string | As is |
currency | string | As is |
language | string | As is |
checkIn | string | As is |
checkOut | string | Read as the number of nights after checkIn. |
rooms | integer | As is |
adults | integer | As is |
children | integer | Read as that many children aged 10. |
minMaxPrice | string | Read as the price range per night. |
Their fields this actor does not read
extractAdditionalHotelData, propertyType, flexWindow. Leave them out of the input; the actor’s own options are in the guide.
Side by side: their input, our rows
Input written for voyager/booking-scraper, pasted unchanged:
{
"search": "Lisbon",
"checkIn": "2027-03-12",
"checkOut": "2027-03-15",
"rooms": 2,
"adults": 3,
"children": 1,
"currency": "USD",
"language": "de",
"minScore": "8",
"starsCountFilter": "4",
"minMaxPrice": "80-250",
"maxItems": 50
}One row from arcadium/booking-prices (README example; long text shortened):
{
"rowType": "price",
"platform": "booking",
"hotelId": "55103",
"hotelName": "Hôtel De La Paix",
"hotelUrl": "https://www.booking.com/hotel/fr/de-la-paix-paris1.html",
"stars": 3,
"reviewScore": 8.5,
"reviewCount": 2112,
"city": "Paris",
"countryCode": "fr",
"checkIn": "2026-12-10",
"checkOut": "2026-12-12",
"nights": 2,
"adults": 2,
"children": 0,
"rooms": 1,
"currency": "EUR",
"available": true,
"soldOut": false,
"minPrice": 236.73,
"minPricePerNight": 118.37,
"originalPrice": 338.18,
"taxesAndFeesExcluded": 45.79,
"mealPlan": "ROOM_ONLY",
"freeCancellation": false,
"cancellationPolicy": "non_refundable",
"cheapestRoom": "Standard Double Room",
"roomRates": [
{
"roomName": "Standard Double Room",
"mealPlan": "ROOM_ONLY",
"price": 236.73,
"pricePerNight": 118.37,
"cancellation": "non_refundable",
"cancellationText": "Non-refundable",
"payment": "prepayment_required"
}
],
"rateCount": 12,
"source": "roomTable",
"scrapedAt": "2026-10-21T08:00:00.000Z"
}Output fields: rowType, hotelId, hotelName, hotelUrl, stars, reviewScore, reviewCount, city, countryCode, checkIn, checkOut, nights, adults, children, rooms, currency, available, soldOut, minPrice, minPricePerNight, originalPrice, taxesAndFeesExcluded, mealPlan, freeCancellation, cancellationPolicy, cheapestRoom, roomRates, rateCount, source, searchDestination, searchRank, change, scrapedAt, code, message. The rows use these names, not the other actor’s.
Price
| Actor | Pricing model | Charged per | Per 1,000, Free plan | Per 1,000, lowest plan |
|---|---|---|---|---|
| arcadium/booking-prices | Pay per event | Price row | $2.70 | $2.58 |
| voyager/booking-scraper | Pay per event | Scraped place result | $5.00 | $1.25 |
Live Apify prices on 2026-11-01, in USD, for each actor’s main charged event. Start fees and platform usage are not included. Units differ: compare what one charged row contains. The Store page of each actor is the current source.
Common issues: failed or timed-out runs
- Booking Scraper timed out: 0.5% of 378,813 runs timed out.
- Booking Scraper failed: 0.9% of 378,813 runs ended as failed.
| Actor | Runs, last 30 days | Failed | Timed out |
|---|---|---|---|
| arcadium/booking-prices | under 50 runs | - | - |
| voyager/booking-scraper | 378,813 | 0.9% | 0.5% |
Apify’s public run statistics for each actor, last 30 days to 2026-11-01: FAILED and TIMED-OUT runs as a share of all runs. Shown from 50 runs. A failed run can also come from a bad input. Here an input that cannot be read comes back as a free error row with a code, and the other inputs still arrive.
How to switch
In the Apify Store
- Open arcadium/booking-prices and sign in to Apify.
- On the Input tab, switch the editor to JSON and paste the input you used for voyager/booking-scraper, without the fields listed above as not read.
- Start the run. Set a maximum cost per run in the run options if you want a hard cap.
Over the API
Change the actor ID in the URL from voyager~booking-scraper to arcadium~booking-prices; the body stays the same apart from the fields this actor does not read.
curl -X POST "https://api.apify.com/v2/acts/arcadium~booking-prices/run-sync-get-dataset-items" \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"search":"Lisbon","checkIn":"2027-03-12","checkOut":"2027-03-15","rooms":2,"adults":3,"children":1,"currency":"USD","language":"de","minScore":"8","starsCountFilter":"4","minMaxPrice":"80-250","maxItems":50}'
In n8n
In the Apify node, change the actor to arcadium/booking-prices and keep the input JSON. With an HTTP Request node:
{
"nodes": [
{
"name": "Run arcadium/booking-prices",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4,
"position": [
0,
0
],
"parameters": {
"method": "POST",
"url": "https://api.apify.com/v2/acts/arcadium~booking-prices/run-sync-get-dataset-items",
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth",
"sendBody": true,
"specifyBody": "json",
"jsonBody": "{\"search\":\"Lisbon\",\"checkIn\":\"2027-03-12\",\"checkOut\":\"2027-03-15\",\"rooms\":2,\"adults\":3,\"children\":1,\"currency\":\"USD\",\"language\":\"de\",\"minScore\":\"8\",\"starsCountFilter\":\"4\",\"minMaxPrice\":\"80-250\",\"maxItems\":50}",
"options": {
"timeout": 300000
}
}
}
],
"connections": {}
}
From an AI assistant (MCP)
Add the actor as a tool on Apify’s MCP server; an agent can pass the same input fields.
{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com/?tools=arcadium/booking-prices",
"headers": {
"Authorization": "Bearer <APIFY_TOKEN>"
}
}
}
}