{
  "openapi": "3.0.1",
  "info": {
    "title": "Agoda Reviews Scraper - Ratings, Traveller Type & Hotel Replies",
    "description": "Scrape Agoda hotel reviews by link, hotel id or name: score, title, text, review and stay dates, reviewer country, traveller type, room, hotel reply, photos. Many hotels per run, language/score/traveller filters, hotel score summary, room prices, monitor mode. $4.80 per 1,000 reviews, no start fee.",
    "version": "0.1",
    "x-build-id": "bvo3e6ZEnAGvto9g3"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/topapi~agoda-reviews-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-topapi-agoda-reviews-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/topapi~agoda-reviews-scraper/runs": {
      "post": {
        "operationId": "runs-sync-topapi-agoda-reviews-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/topapi~agoda-reviews-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-topapi-agoda-reviews-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "startUrls": {
            "title": "🏨 Hotels",
            "type": "array",
            "description": "Agoda hotel links, Agoda hotel ids or hotel names, one per line. e.g. https://www.agoda.com/marina-bay-sands/hotel/singapore-sg.html, 185945, ibis Budapest City. A name uses the first hotel Agoda suggests for it.",
            "default": [
              "https://www.agoda.com/marina-bay-sands/hotel/singapore-sg.html"
            ],
            "items": {
              "type": "string"
            }
          },
          "propertyIds": {
            "title": "🔢 Agoda hotel ids",
            "type": "array",
            "description": "Optional: Agoda property ids, e.g. 185945 (Marina Bay Sands). Same as putting the id in Hotels.",
            "items": {
              "type": "string"
            }
          },
          "mode": {
            "title": "📋 What to return",
            "enum": [
              "reviews",
              "hotel",
              "both",
              "rooms"
            ],
            "type": "string",
            "description": "Reviews (one row per review), a hotel summary row (scores per source, sub-scores, scores by traveller type, AI review summary, address, stars), both, or room prices for a stay.",
            "default": "reviews"
          },
          "sort": {
            "title": "↕️ Sort reviews by",
            "enum": [
              "recent",
              "newest",
              "oldest",
              "helpful",
              "ratingDesc",
              "ratingAsc"
            ],
            "type": "string",
            "description": "Agoda's own sort orders, plus a true date order across all languages. Agoda's \"Most recent\" lists reviews in (or translated into) English first, then each other language.",
            "default": "recent"
          },
          "reviewSources": {
            "title": "🗂️ Review sources",
            "type": "array",
            "description": "Agoda's own verified guest reviews, and/or the reviews Agoda shows under \"Additional reviews\" from partner sites such as Priceline.com.",
            "items": {
              "type": "string",
              "enum": [
                "agoda",
                "additional"
              ],
              "enumTitles": [
                "Agoda guest reviews",
                "Additional partner reviews (Priceline.com and others)"
              ]
            },
            "default": [
              "agoda"
            ]
          },
          "language": {
            "title": "🌐 Review languages",
            "type": "array",
            "description": "Only reviews written in these languages. Empty = every language.",
            "items": {
              "type": "string",
              "enum": [
                "en",
                "en-gb",
                "en-au",
                "en-ca",
                "en-in",
                "en-sg",
                "en-za",
                "zh-cn",
                "zh-tw",
                "zh-hk",
                "ja",
                "ko",
                "th",
                "vi",
                "id",
                "ms",
                "fr",
                "de",
                "es",
                "it",
                "pt-pt",
                "pt-br",
                "nl",
                "ru",
                "uk",
                "pl",
                "cs",
                "hu",
                "ro",
                "bg",
                "el",
                "tr",
                "he",
                "ar",
                "sv",
                "no",
                "da",
                "fi",
                "ca",
                "sl",
                "hr",
                "lt",
                "lv",
                "et"
              ],
              "enumTitles": [
                "English",
                "English (UK)",
                "English (Australia)",
                "English (Canada)",
                "English (India)",
                "English (Singapore)",
                "English (South Africa)",
                "Chinese (Simplified)",
                "Chinese (Taiwan)",
                "Chinese (Hong Kong)",
                "Japanese",
                "Korean",
                "Thai",
                "Vietnamese",
                "Indonesian",
                "Malay",
                "French",
                "German",
                "Spanish",
                "Italian",
                "Portuguese (Portugal)",
                "Portuguese (Brazil)",
                "Dutch",
                "Russian",
                "Ukrainian",
                "Polish",
                "Czech",
                "Hungarian",
                "Romanian",
                "Bulgarian",
                "Greek",
                "Turkish",
                "Hebrew",
                "Arabic",
                "Swedish",
                "Norwegian",
                "Danish",
                "Finnish",
                "Catalan",
                "Slovenian",
                "Croatian",
                "Lithuanian",
                "Latvian",
                "Estonian"
              ]
            }
          },
          "rating": {
            "title": "⭐ Guest rating",
            "type": "array",
            "description": "Only reviews in these Agoda score bands. Empty = every score.",
            "items": {
              "type": "string",
              "enum": [
                "exceptional",
                "excellent",
                "very_good",
                "good",
                "below_expectation"
              ],
              "enumTitles": [
                "9+ Exceptional",
                "8-9 Excellent",
                "7-8 Very good",
                "6-7 Good",
                "Below 6 (below expectation)"
              ]
            }
          },
          "travellerType": {
            "title": "🧳 Traveller type",
            "enum": [
              "all",
              "couple",
              "solo",
              "family_young_children",
              "family_teens",
              "group",
              "business"
            ],
            "type": "string",
            "description": "Only reviews from one kind of traveller, as Agoda groups them.",
            "default": "all"
          },
          "roomType": {
            "title": "🛏️ Room type contains",
            "type": "string",
            "description": "Only reviews of rooms whose name contains this text, e.g. \"Deluxe\" or \"Suite\". Matched against the room types Agoda lists for the hotel."
          },
          "cutoffDate": {
            "title": "📅 Reviews written on or after",
            "type": "string",
            "description": "YYYY-MM-DD, or a relative age such as \"30 days\". Reads the whole review list so reviews in every language are checked."
          },
          "toDate": {
            "title": "📅 Reviews written on or before",
            "type": "string",
            "description": "YYYY-MM-DD. Pair with the date above for a date window."
          },
          "minRating": {
            "title": "Min score (0-10)",
            "minimum": 0,
            "maximum": 10,
            "type": "number",
            "description": "Keep reviews scored at least this on Agoda's 0-10 scale, e.g. 8."
          },
          "maxRating": {
            "title": "Max score (0-10)",
            "minimum": 0,
            "maximum": 10,
            "type": "number",
            "description": "Keep reviews scored at most this, e.g. 5 for complaints only."
          },
          "keyword": {
            "title": "🔎 Text contains",
            "type": "array",
            "description": "Keep reviews whose title or text contains any of these words, e.g. breakfast, pool. Case-insensitive; the original-language text is searched too.",
            "items": {
              "type": "string"
            }
          },
          "onlyWithText": {
            "title": "Only reviews with written text",
            "type": "boolean",
            "description": "Skip reviews that carry a score and a title but no comment text.",
            "default": false
          },
          "aggregateRatings": {
            "title": "📊 Hotel scores on every review",
            "type": "boolean",
            "description": "Adds the hotel's Agoda score, sub-scores and review counts (and the Booking.com score Agoda shows) to every review row. Free.",
            "default": true
          },
          "includeRooms": {
            "title": "💲 Add room prices",
            "type": "boolean",
            "description": "Also return every room offer Agoda sells for the stay below: room, size, bedding, occupancy, nightly price, total, breakfast, cancellation, benefits. Charged per offer.",
            "default": false
          },
          "checkIn": {
            "title": "Check-in",
            "type": "string",
            "description": "YYYY-MM-DD. Empty = 30 days from today (rooms only)."
          },
          "checkOut": {
            "title": "Check-out",
            "type": "string",
            "description": "YYYY-MM-DD. Empty = check-in plus the nights below."
          },
          "nights": {
            "title": "Nights",
            "minimum": 1,
            "maximum": 30,
            "type": "integer",
            "description": "Length of stay when no check-out date is given.",
            "default": 1
          },
          "adults": {
            "title": "Adults",
            "minimum": 1,
            "maximum": 30,
            "type": "integer",
            "description": "Guests to price the room for.",
            "default": 2
          },
          "children": {
            "title": "Children",
            "minimum": 0,
            "maximum": 10,
            "type": "integer",
            "description": "Number of children.",
            "default": 0
          },
          "childrenAges": {
            "title": "Children's ages",
            "type": "array",
            "description": "One age per child, e.g. 4, 9. Agoda prices some rooms by age.",
            "items": {
              "type": "string"
            }
          },
          "roomsWanted": {
            "title": "Rooms",
            "minimum": 1,
            "maximum": 9,
            "type": "integer",
            "description": "How many rooms the stay needs.",
            "default": 1
          },
          "currency": {
            "title": "Currency",
            "enum": [
              "USD",
              "EUR",
              "GBP",
              "AUD",
              "NZD",
              "CAD",
              "SGD",
              "HKD",
              "JPY",
              "KRW",
              "CNY",
              "TWD",
              "THB",
              "MYR",
              "IDR",
              "PHP",
              "VND",
              "INR",
              "AED"
            ],
            "type": "string",
            "description": "Currency for room prices.",
            "default": "USD"
          },
          "monitorMode": {
            "title": "🔁 Only new reviews (monitor)",
            "type": "boolean",
            "description": "Deliver only reviews that earlier runs with the same monitor name did not deliver. After a hotel's first run, only reviews written since the previous run are looked for. Pairs with a daily schedule.",
            "default": false
          },
          "monitorStoreName": {
            "title": "Monitor name",
            "type": "string",
            "description": "Name of the store that remembers delivered reviews. Use one name per schedule, e.g. my-hotels-daily.",
            "default": "agoda-reviews-monitor"
          },
          "maxReviewsPerHotel": {
            "title": "📦 Max reviews per hotel",
            "minimum": 0,
            "maximum": 1000000,
            "type": "integer",
            "description": "Reviews to return for each hotel. 0 = every review Agoda serves (about 11,000 for Marina Bay Sands).",
            "default": 50
          },
          "maxResults": {
            "title": "Max reviews in total",
            "minimum": 0,
            "maximum": 10000000,
            "type": "integer",
            "description": "Ceiling on review rows for the whole run, across every hotel. 0 = no ceiling.",
            "default": 0
          },
          "stripPersonalData": {
            "title": "Hide reviewer names",
            "type": "boolean",
            "description": "ON: the reviewer's display name is left out (country, traveller type and room are kept). Turn OFF to include reviewerName.",
            "default": true
          },
          "includeOwnerResponse": {
            "title": "Include hotel replies",
            "type": "boolean",
            "description": "The hotel's reply to a review: responder, text and date.",
            "default": true
          },
          "compact": {
            "title": "🤖 Compact output",
            "type": "boolean",
            "description": "Core fields only (hotel, review id, score, title, text, date, language, country, traveller type, room, hotel reply) - sized for AI agents and MCP.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Agoda answers Apify's own connection; the run moves to the Apify proxy only if Agoda refuses it. Choose a proxy group to use it from the first request.",
            "default": {
              "useApifyProxy": true
            }
          },
          "maxConcurrency": {
            "title": "Parallel requests",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "Requests to Agoda in flight at once.",
            "default": 4
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}