{
  "openapi": "3.0.1",
  "info": {
    "title": "Agoda Reviews Scraper",
    "description": "Export Agoda and Booking.com guest reviews for any number of hotels in one run: ratings, text, dates, reviewer details, hotel replies, hotel scores. Newest first, filters, only-new mode. Built to beat Fast Agoda Reviews Scraper: from $2.60 per 1,000, no start fee.",
    "version": "0.1",
    "x-build-id": "fx1q3MvoSopduXU95"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/tidyharvest~agoda-reviews-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-tidyharvest-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/tidyharvest~agoda-reviews-scraper/runs": {
      "post": {
        "operationId": "runs-sync-tidyharvest-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/tidyharvest~agoda-reviews-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-tidyharvest-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",
        "required": [
          "hotelUrls"
        ],
        "properties": {
          "hotelUrls": {
            "title": "Hotels (URL, ID or name)",
            "type": "array",
            "description": "One Agoda hotel per line: the hotel or reviews page URL, the numeric hotel ID, or the hotel's name. Add as many hotels as you like; they run in one go.",
            "items": {
              "type": "string"
            }
          },
          "matchesPerName": {
            "title": "Hotels per name search",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "When a line is a hotel name, how many matching hotels to use (best matches first). 1 = just the top match.",
            "default": 1
          },
          "maxReviewsPerHotel": {
            "title": "Max reviews per hotel",
            "minimum": 1,
            "type": "integer",
            "description": "Newest first (or in the order you pick below). Large hotels have thousands of reviews, so set a cap.",
            "default": 100
          },
          "maxItems": {
            "title": "Max reviews in total",
            "minimum": 0,
            "type": "integer",
            "description": "Hard cap across all hotels (also caps your cost). 0 or empty = no limit."
          },
          "enabledProviders": {
            "title": "Review sources",
            "type": "array",
            "description": "Agoda shows its own guest reviews and Booking.com guest reviews side by side. 'Other' adds the smaller partner sources (Priceline and similar) where they exist.",
            "items": {
              "type": "string",
              "enum": [
                "Agoda",
                "Booking.com",
                "Other"
              ],
              "enumTitles": [
                "Agoda",
                "Booking.com",
                "Other partner sources"
              ]
            },
            "default": [
              "Agoda",
              "Booking.com"
            ]
          },
          "sortBy": {
            "title": "Order",
            "enum": [
              "newest",
              "oldest",
              "highest",
              "lowest",
              "helpful"
            ],
            "type": "string",
            "description": "The cap above is applied after this ordering.",
            "default": "newest"
          },
          "cutoffDate": {
            "title": "Only reviews since",
            "type": "string",
            "description": "Skip reviews written before this date (YYYY-MM-DD)."
          },
          "onlyNewReviews": {
            "title": "Only reviews not returned before",
            "type": "boolean",
            "description": "Remembers the reviews each hotel already gave you across runs and returns only new ones. Use it for scheduled monitoring runs.",
            "default": false
          },
          "rating": {
            "title": "Rating bands",
            "type": "array",
            "description": "Keep only reviews in these bands. Empty = all.",
            "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"
              ]
            }
          },
          "minRating": {
            "title": "Minimum rating (0-10)",
            "minimum": 0,
            "maximum": 10,
            "type": "number",
            "description": "Keep only reviews rated at least this (Agoda rates 0-10)."
          },
          "maxRating": {
            "title": "Maximum rating (0-10)",
            "minimum": 0,
            "maximum": 10,
            "type": "number",
            "description": "Keep only reviews rated at most this (Agoda rates 0-10)."
          },
          "language": {
            "title": "Review languages",
            "type": "array",
            "description": "Keep only reviews written in these languages. Empty = all.",
            "items": {
              "type": "string",
              "enum": [
                "all",
                "en",
                "fr",
                "de",
                "es",
                "it",
                "ja",
                "ko",
                "ru",
                "nl",
                "zh-CN",
                "zh-TW",
                "zh-HK",
                "sv",
                "no",
                "he",
                "th",
                "vi",
                "pl",
                "pt",
                "tr",
                "da",
                "el",
                "hu",
                "ro"
              ],
              "enumTitles": [
                "All languages",
                "English",
                "French",
                "German",
                "Spanish",
                "Italian",
                "Japanese",
                "Korean",
                "Russian",
                "Dutch",
                "Chinese (Simplified)",
                "Chinese (Traditional, Taiwan)",
                "Chinese (Traditional, Hong Kong)",
                "Swedish",
                "Norwegian",
                "Hebrew",
                "Thai",
                "Vietnamese",
                "Polish",
                "Portuguese",
                "Turkish",
                "Danish",
                "Greek",
                "Hungarian",
                "Romanian"
              ]
            }
          },
          "travelerType": {
            "title": "Traveler type",
            "enum": [
              "",
              "business",
              "couple",
              "solo",
              "family_young",
              "family_teens",
              "group"
            ],
            "type": "string",
            "description": "Only reviews from this kind of traveler.",
            "default": ""
          },
          "keywords": {
            "title": "Keywords (match any)",
            "type": "array",
            "description": "Keep a review only if its title or text contains one of these words (any language you type). Empty = all.",
            "items": {
              "type": "string"
            }
          },
          "aggregateRatings": {
            "title": "Add hotel scores to every review",
            "type": "boolean",
            "description": "Adds the hotel's overall and per-source scores, sub-scores and review counts to each row, and saves the full breakdown (traveler types, score distribution, topics) to the HOTEL_SUMMARIES key-value record.",
            "default": true
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Agoda refuses most cloud IPs, so the default is Apify proxy (datacenter first, residential only if that is blocked).",
            "default": {
              "useApifyProxy": true
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}