{
  "data": {
    "id": "st8tljbwv7rdc2EYZ",
    "userId": "p0xUeRWRSQaCPZ0Uy",
    "name": "google-hotels-multi-query-scraper",
    "username": "jy-labs",
    "description": "Search up to 5 hotel queries in one run and compare live prices across 30+ OTAs including Booking.com, Expedia and Agoda. Every hotel returns overview, OTA offers with booking links, rating, property type, reviews, photos and amenities. Stable per-stay keys make daily rate monitoring diffable.",
    "isPublic": true,
    "createdAt": "2026-03-04T06:30:43.140Z",
    "modifiedAt": "2026-10-01T03:53:49.772Z",
    "taggedBuilds": {
      "latest": {
        "buildId": "zKUgej43JiB5dLFBN",
        "finishedAt": "2026-10-01T03:38:47.337Z",
        "buildNumberInt": 10800027,
        "buildNumber": "1.8.27"
      },
      "p04-private-32ca6e8": {
        "buildId": "td9kVeEGx4qTd1GuY",
        "finishedAt": "2026-07-14T01:15:55.065Z",
        "buildNumberInt": 10000013,
        "buildNumber": "1.0.13"
      },
      "p04-krw-ed4da19": {
        "buildId": "Mm1fcLzpgEmA1Cuf6",
        "finishedAt": "2026-07-14T01:55:46.356Z",
        "buildNumberInt": 10000014,
        "buildNumber": "1.0.14"
      },
      "p04-krw-8097138": {
        "buildId": "dMitCS2M8rCeyge4m",
        "finishedAt": "2026-07-14T02:06:38.662Z",
        "buildNumberInt": 10000015,
        "buildNumber": "1.0.15"
      },
      "p0-ota-c2275f4": {
        "buildId": "KBSbirVhb9CVqCLJm",
        "finishedAt": "2026-07-29T07:16:49.911Z",
        "buildNumberInt": 10100001,
        "buildNumber": "1.1.1"
      },
      "sdk-shape-5291685-jin": {
        "buildId": "sOz6nOthZAEy8Hk7a",
        "finishedAt": "2026-07-29T13:57:05.917Z",
        "buildNumberInt": 10000016,
        "buildNumber": "1.0.16"
      },
      "direct-detail-7760bf7-jin": {
        "buildId": "DeAGvWv97GxCqWASj",
        "finishedAt": "2026-07-29T23:53:22.798Z",
        "buildNumberInt": 10000017,
        "buildNumber": "1.0.17"
      },
      "q-loss-c19f739-jin": {
        "buildId": "pFHxavtJsoCvLUymA",
        "finishedAt": "2026-07-30T01:44:58.781Z",
        "buildNumberInt": 10000018,
        "buildNumber": "1.0.18"
      },
      "q-loss-e6270cb-jin": {
        "buildId": "clDzcUyWKMH9FZxnD",
        "finishedAt": "2026-07-30T04:32:15.311Z",
        "buildNumberInt": 10000019,
        "buildNumber": "1.0.19"
      },
      "currency-grammar-f7be5cf-jin": {
        "buildId": "N9tSXeod6EHfqWJN8",
        "finishedAt": "2026-07-30T09:40:30.704Z",
        "buildNumberInt": 10200001,
        "buildNumber": "1.2.1"
      },
      "prices-scope-b7fd391-jin": {
        "buildId": "8NPDl2ZrGy8QxvMvR",
        "finishedAt": "2026-07-30T13:34:38.897Z",
        "buildNumberInt": 10300001,
        "buildNumber": "1.3.1"
      },
      "ghm-45d45a2-0803": {
        "buildId": "FThF524QxCChA1dx2",
        "finishedAt": "2026-08-03T03:22:55.008Z",
        "buildNumberInt": 10400001,
        "buildNumber": "1.4.1"
      },
      "ghm-489d83c-0803": {
        "buildId": "HlFfLh5UnnPSuxaLI",
        "finishedAt": "2026-08-03T03:55:06.584Z",
        "buildNumberInt": 10500001,
        "buildNumber": "1.5.1"
      },
      "ota-charging-fix-rc": {
        "buildId": "U7y1NLzfZg5fhzn6p",
        "finishedAt": "2026-08-18T05:54:31.827Z",
        "buildNumberInt": 10600005,
        "buildNumber": "1.6.5"
      },
      "views-rc": {
        "buildId": "S720StfXSXiPt3dFa",
        "finishedAt": "2026-08-18T12:50:23.861Z",
        "buildNumberInt": 10700015,
        "buildNumber": "1.7.15"
      },
      "consent-eea-rc": {
        "buildId": "JxrxxoOJpBqIO32c6",
        "finishedAt": "2026-08-20T05:31:41.698Z",
        "buildNumberInt": 10800001,
        "buildNumber": "1.8.1"
      },
      "http-rescue-rc": {
        "buildId": "60FdFhTWe9PDfneAe",
        "finishedAt": "2026-08-21T13:29:28.648Z",
        "buildNumberInt": 10800004,
        "buildNumber": "1.8.4"
      },
      "next-rc": {
        "buildId": "aaxg0nzUa7XRbbnna",
        "finishedAt": "2026-09-05T03:24:40.588Z",
        "buildNumberInt": 10800021,
        "buildNumber": "1.8.21"
      },
      "location-rc": {
        "buildId": "Ecw0VOM2jXza9pHPo",
        "finishedAt": "2026-09-29T12:09:58.821Z",
        "buildNumberInt": 10800024,
        "buildNumber": "1.8.24"
      },
      "spend-cap-rc": {
        "buildId": "aR5hmMQnxuA1SSmkf",
        "finishedAt": "2026-10-01T01:24:57.246Z",
        "buildNumberInt": 10800025,
        "buildNumber": "1.8.25"
      },
      "currency-rc": {
        "buildId": "zKUgej43JiB5dLFBN",
        "finishedAt": "2026-10-01T03:38:47.337Z",
        "buildNumberInt": 10800027,
        "buildNumber": "1.8.27"
      }
    },
    "stats": {
      "totalBuilds": 72,
      "totalRuns": 1089,
      "totalUsers": 123,
      "totalUsers7Days": 1,
      "totalUsers30Days": 4,
      "totalUsers90Days": 34,
      "actorReviewCount": 0,
      "actorReviewRating": 0,
      "bookmarkCount": 1,
      "lastRunStartedAt": "2026-10-22T16:46:36.937Z",
      "publicActorRunStats30Days": {
        "ABORTED": 0,
        "FAILED": 2,
        "SUCCEEDED": 39,
        "TIMED-OUT": 1,
        "TOTAL": 42
      }
    },
    "versions": [
      {
        "versionNumber": "1.0",
        "sourceType": "SOURCE_FILES",
        "buildTag": "q-loss-e6270cb-jin"
      },
      {
        "versionNumber": "1.1",
        "sourceType": "SOURCE_FILES",
        "buildTag": "p0-ota-c2275f4"
      },
      {
        "versionNumber": "1.2",
        "sourceType": "SOURCE_FILES",
        "buildTag": "currency-grammar-f7be5cf-jin"
      },
      {
        "versionNumber": "1.3",
        "sourceType": "SOURCE_FILES",
        "buildTag": "prices-scope-b7fd391-jin"
      },
      {
        "versionNumber": "1.4",
        "sourceType": "SOURCE_FILES",
        "buildTag": "ghm-45d45a2-0803"
      },
      {
        "versionNumber": "1.5",
        "sourceType": "SOURCE_FILES",
        "buildTag": "ghm-489d83c-0803"
      },
      {
        "versionNumber": "1.6",
        "sourceType": "SOURCE_FILES",
        "buildTag": "ota-charging-fix-rc"
      },
      {
        "versionNumber": "1.7",
        "sourceType": "SOURCE_FILES",
        "buildTag": "views-rc"
      },
      {
        "versionNumber": "1.8",
        "sourceType": "SOURCE_FILES",
        "buildTag": "currency-rc"
      }
    ],
    "defaultRunOptions": {
      "build": "latest",
      "memoryMbytes": 4096,
      "timeoutSecs": 3600
    },
    "exampleRunInput": {
      "body": "{\n  \"queries\": [\n    \"hotels in New York\"\n  ],\n  \"country\": \"us\",\n  \"currency\": \"USD\",\n  \"maxResults\": 1,\n  \"scrapeOtaPrices\": false\n}",
      "contentType": "application/json; charset=utf-8"
    },
    "categories": [
      "AUTOMATION",
      "DEVELOPER_TOOLS",
      "TRAVEL"
    ],
    "isDeprecated": false,
    "title": "Google Hotels Scraper - Multi-Query OTA Price Comparison",
    "pictureUrl": "https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/p0xUeRWRSQaCPZ0Uy-actor-st8tljbwv7rdc2EYZ-y5wSd5Zdun-Gemini_Generated_Image_g84y92g84y92g84y_%281%29.png",
    "seoTitle": "Google Hotels Scraper - Compare 30+ OTA Prices (No API Key)",
    "seoDescription": "Scrape Google Hotels prices from 30+ OTAs - Booking.com, Expedia, Agoda, Priceline. Up to 5 searches per run, 100 hotels each. Ratings, reviews, photos, amenities. No API key. Export JSON or CSV.",
    "pricingInfos": [
      {
        "minimalMaxTotalChargeUsd": null,
        "isPPEPlatformUsagePaidByUser": true,
        "pricingModel": "PAY_PER_EVENT",
        "isPriceChangeNotificationSuppressed": false,
        "pricingPerEvent": {
          "actorChargeEvents": {
            "apify-actor-start": {
              "eventTitle": "Actor Start",
              "eventDescription": "Charged when the Actor starts running. Number of events charged depends on Actor memory (one event per GB, minimum one event).",
              "isOneTimeEvent": true,
              "eventPriceUsd": 0.00005
            },
            "hotel-result": {
              "eventTitle": "Hotel Result",
              "eventDescription": "Charged per hotel with OTA prices pushed to dataset",
              "isOneTimeEvent": false,
              "eventPriceUsd": 0.025,
              "isPrimaryEvent": true
            }
          }
        },
        "startedAt": "2026-03-04T07:39:47.686Z",
        "createdAt": "2026-03-04T07:39:48.432Z",
        "apifyMarginPercentage": 0.2
      },
      {
        "minimalMaxTotalChargeUsd": null,
        "isPPEPlatformUsagePaidByUser": true,
        "pricingModel": "PAY_PER_EVENT",
        "pricingPerEvent": {
          "actorChargeEvents": {
            "apify-actor-start": {
              "eventTitle": "Actor Start",
              "eventDescription": "Charged when the Actor starts running. Number of events charged depends on Actor memory (one event per GB, minimum one event).",
              "isOneTimeEvent": true,
              "eventPriceUsd": 0.00005
            },
            "hotel-result": {
              "eventTitle": "Hotel Result",
              "eventDescription": "Charged per hotel with OTA prices pushed to dataset",
              "isOneTimeEvent": false,
              "isPrimaryEvent": true,
              "eventTieredPricingUsd": {
                "FREE": {
                  "tieredEventPriceUsd": 0.025
                },
                "BRONZE": {
                  "tieredEventPriceUsd": 0.02375
                },
                "SILVER": {
                  "tieredEventPriceUsd": 0.0225
                },
                "GOLD": {
                  "tieredEventPriceUsd": 0.0225
                },
                "PLATINUM": {
                  "tieredEventPriceUsd": 0.0225
                },
                "DIAMOND": {
                  "tieredEventPriceUsd": 0.0225
                }
              }
            }
          }
        },
        "reasonForChange": "Enable Apify Store tier discounts: paid subscription levels get 5-10% lower per-result pricing. No price increases.",
        "createdAt": "2026-08-20T04:10:37.364Z",
        "startedAt": "2026-08-20T04:10:37.364Z",
        "apifyMarginPercentage": 0.2,
        "notifiedAboutChangeAt": "2026-08-20T04:35:48.277Z"
      }
    ],
    "notice": "NONE",
    "isCritical": false,
    "isGeneric": false,
    "hasNoDataset": false,
    "isSourceCodeHidden": true,
    "standbyUrl": null,
    "actorPermissionLevel": "LIMITED_PERMISSIONS",
    "readmeSummary": "## Google Hotels Multi-Query Scraper & Price Comparison\n\nA multi-query scraper that uses Google Hotels as a meta-search layer to aggregate live OTA pricing and rich hotel metadata: run multiple natural-language hotel searches in one job and extract per-hotel OTA comparisons (dozens of providers with prices, direct booking links, cancellation terms and offer features) plus five rich data sections — Overview, Prices, Reviews, Photos, and About — in a single run. Built on Crawlee's PlaywrightCrawler with a hybrid extraction strategy (API interception for structured search data combined with DOM scraping for detail pages), the Actor includes anti-detection measures (browser fingerprinting, automatic proxy selection, resource blocking), smart currency detection, and stable snapshot metadata and identifiers that enable price-diffing and time-series monitoring. Outputs cover hotel metadata (name, address, coordinates, property type, star/rating info), OTA offer lists, guest review text and aggregated third-party ratings, full photo galleries, categorized amenities and check-in/out info, and monitoring keys/timestamps for automated rate-tracking.\n\n## Use cases\n\n- Compare hotel prices across 30+ OTAs (examples: Booking.com, Expedia, Agoda, Hotels.com, Priceline, Trip.com, KAYAK, momondo) to surface the cheapest booking option without maintaining per-OTA scrapers.  \n- Scheduled hotel rate monitoring and price-change detection (daily snapshots, stable identifiers and price keys for diffs and alerts).  \n- Bulk multi-city / multi-query hotel searches in a single run (multi-query runs that return hundreds of hotels across destinations).  \n- Rate parity and contract monitoring by comparing identical-stay quotes across OTAs in one result row.  \n- Build hotel price-comparison features or data feeds using Google Hotels as a consolidated OTA source rather than scraping each OTA separately.  \n- Collect enriched hotel profiles for analytics: overview text and highlights, detailed guest reviews plus third-party aggregated ratings, full photo galleries, amenities grouped by category, and booking/cancellation details for each OTA offer.",
    "deploymentKey": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCXnnNC7nMM6lOox6uQiGgW9riyPQAS8sWqQuDTSNjlHAclCt2h1OETe1F/cfk7LWfxFnBjSrSuQWdMpewHB1SPgEUwKPGUpetfZnzpU+kNODPvC53uLeDLpUyWUyfvB7gaRyAeu45Qqg2ciL72D4xepZJVZjUXNgziIvu2SaptkTGiCWx89upnr/MVIYBQLLZSSoETCLGu7K6p2unoPJflF+A8zb0+80y2cAumk+uLIjI1uNu2yMtt0rn3ufJC+nC4dvhVrAKOFJv7d1fpq98nZm0wYoCbjHncuvJRUkyyOVdwbWkgP4vzEiy0k1OUzIU1NRv3LQc+yCwjtpXs+2Jr \n"
  }
}