Arcadium Data Scrapers
Home / Switch / Booking Reviews Scraper

Switching from Booking Reviews Scraper to Review Monitor

Review Monitor (arcadium/reputation-monitor) reads input written for voyager/booking-reviews-scraper: 2 of its 5 input fields work as they are. Field list from its public input schema (build 0.0.184, 2026-10-31); prices and run results from the public Apify API, 2026-10-31.

Their fields that work as they are

Their fieldTypeNote
startUrlsarrayAs is
maxReviewsPerHotelintegerAs is

Their fields this actor does not read

sortReviewsBy, cutoffDate, reviewScores. 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-reviews-scraper, pasted unchanged:

{
  "startUrls": [
    {
      "url": "https://www.booking.com/hotel/cz/jeromehouse.en-gb.html"
    }
  ],
  "maxReviewsPerHotel": 150
}

One row from arcadium/reputation-monitor (README example; long text shortened):

{
  "rowType": "summary",
  "status": "changed",
  "platform": "appstore",
  "entityId": "618783545-us",
  "input": "https://apps.apple.com/us/app/slack/id618783545",
  "name": "Slack",
  "url": "https://apps.apple.com/us/app/slack/id618783545",
  "checkedAt": "2026-10-21T22:59:28.653Z",
  "previousCheckAt": "2026-10-21T22:54:50.343Z",
  "rating": 4.14,
  "previousRating": 4.14,
  "ratingChange": 0,
  "reviewCount": 54143,
  "previousReviewCount": 54115,
  "reviewCountChange": 28,
  "newReviews": 6,
  "editedReviews": 0,
  "newNegativeReviews": 1,
  "newReviewsAvgRating": 4.5,
  "avgRating30d": 3.29,
  "previousAvgRating30d": 3.29,
  "reviews7d": 55,
  "reviews30d": 100,
  "reviewsPerWeek": 23.3,
  "avgRatingLifetime": 3.29,
  "lifetimeSource": "sample",
  "rating30dVsLifetime": 0,
  "ownerReplyRate90d": 0.05,
  "medianReplyLagDays": 0,
  "unansweredNegative30d": 35,
  "appVersions": [],
  "versionRegression": null,
  "windowComplete30d": false,
  "historyReviews": 100,
  "historySince": "2026-10-08",
  "stopReason": "onlyNew",
  "flags": [
    "new_negative",
    "unanswered_negative"
  ]
}

Output fields: rowType, platform, entityId, input, checkedAt, entityName, entityUrl, reviewId, reviewUrl, date, title, text, pros, cons, language, appVersion, ownerReplied, ownerReply, changeType, status, name, url, previousCheckAt, rating, previousRating, ratingChange, reviewCount, previousReviewCount, reviewCountChange, newReviews, editedReviews, newNegativeReviews, newReviewsAvgRating, avgRating30d, previousAvgRating30d, reviews7d, reviews30d, reviewsPrior30d, reviewsPerWeek, avgRatingLifetime, lifetimeSource, rating30dVsLifetime, ownerReplyRate90d, replySample90d, medianReplyLagDays, replyLagSample, unansweredNegative30d, appVersions, versionRegression, windowComplete30d, windowComplete60d, historyReviews, historySince, stopReason, flags, code, message, scrapedAt. The rows use these names, not the other actor’s.

Price

ActorPricing modelCharged perPer 1,000, Free planPer 1,000, lowest plan
arcadium/reputation-monitorPay per eventEntity checked$12.00$12.00
voyager/booking-reviews-scraperPay per eventScraped review$2.00$0.30

Live Apify prices on 2026-10-31, 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

ActorRuns, last 30 daysFailedTimed out
arcadium/reputation-monitorunder 50 runs (8 runs)--
voyager/booking-reviews-scraper250,8060.0%0.0%

Apify’s public run statistics for each actor, last 30 days to 2026-10-31: 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

  1. Open arcadium/reputation-monitor and sign in to Apify.
  2. On the Input tab, switch the editor to JSON and paste the input you used for voyager/booking-reviews-scraper, without the fields listed above as not read.
  3. 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-reviews-scraper to arcadium~reputation-monitor; the body stays the same apart from the fields this actor does not read.

curl -X POST "https://api.apify.com/v2/acts/arcadium~reputation-monitor/run-sync-get-dataset-items" \
  -H "Authorization: Bearer $APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"startUrls":[{"url":"https://www.booking.com/hotel/cz/jeromehouse.en-gb.html"}],"maxReviewsPerHotel":150}'

In n8n

In the Apify node, change the actor to arcadium/reputation-monitor and keep the input JSON. With an HTTP Request node:

{
  "nodes": [
    {
      "name": "Run arcadium/reputation-monitor",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4,
      "position": [
        0,
        0
      ],
      "parameters": {
        "method": "POST",
        "url": "https://api.apify.com/v2/acts/arcadium~reputation-monitor/run-sync-get-dataset-items",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "sendBody": true,
        "specifyBody": "json",
        "jsonBody": "{\"startUrls\":[{\"url\":\"https://www.booking.com/hotel/cz/jeromehouse.en-gb.html\"}],\"maxReviewsPerHotel\":150}",
        "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/reputation-monitor",
      "headers": {
        "Authorization": "Bearer <APIFY_TOKEN>"
      }
    }
  }
}

All switching guides