{
  "openapi": "3.0.1",
  "info": {
    "title": "Agoda Reviews Scraper",
    "description": "Scrape Agoda hotel reviews, including the Booking.com reviews Agoda shows. Just add hotel URLs, ids or names and get score, title, text, pros and cons, stay dates, room, traveller type, country, hotel reply, category scores, aspect sentiment and topic summaries. $4.00 per 1,000 reviews.",
    "version": "1.0",
    "x-build-id": "R2Zyxac3oU2P1YR1m"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/boncross~agoda-reviews/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-boncross-agoda-reviews",
        "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/boncross~agoda-reviews/runs": {
      "post": {
        "operationId": "runs-sync-boncross-agoda-reviews",
        "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/boncross~agoda-reviews/run-sync": {
      "post": {
        "operationId": "run-sync-boncross-agoda-reviews",
        "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": {
          "hotels": {
            "title": "Hotels",
            "type": "array",
            "description": "Agoda hotel URLs, the slug from a URL (four-seasons-hotel-new-york-downtown/hotel/new-york-ny-us), numeric property ids, or hotel names with their city.",
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "Start URLs (bulk upload)",
            "type": "array",
            "description": "Agoda page addresses, with the option to load them in bulk from a file, a Google Sheet or a remote list. Use this when you have more links than you want to paste. Combined with anything in the list above.",
            "default": [],
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "maxReviewsPerHotel": {
            "title": "Max reviews per hotel",
            "minimum": 1,
            "maximum": 20000,
            "type": "integer",
            "description": "How many reviews to return per hotel. This counts reviews actually returned, so filters do not eat into it.",
            "default": 100
          },
          "maxItems": {
            "title": "Maximum results for the whole run",
            "minimum": 0,
            "type": "integer",
            "description": "A run-wide ceiling across every target. The per-target limit above applies to each one separately, so ten targets at 50 each returns 500; set this to cap the total. Zero means no run-wide limit. Rows that report an input the actor could not resolve are not counted here and are never charged for.",
            "default": 0
          },
          "sort": {
            "title": "Sort",
            "enum": [
              "recent",
              "helpful",
              "rating_high",
              "rating_low"
            ],
            "type": "string",
            "description": "One of Agoda's own orderings. Agoda does not publish helpful-vote counts, so Most helpful is Agoda's own order within each review source.",
            "default": "recent"
          },
          "providers": {
            "title": "Review sources",
            "type": "array",
            "description": "Which review sources to return: agoda, booking.com, others. Agoda's feed mixes its own and Booking.com reviews and the selection is applied to the results. The 'others' partner sources are listed on the site but are not served by the feed, so that option normally returns nothing.",
            "items": {
              "type": "string",
              "enum": [
                "agoda",
                "booking.com",
                "others"
              ],
              "enumTitles": [
                "Agoda",
                "Booking.com",
                "Other partners"
              ]
            },
            "default": [
              "agoda",
              "booking.com",
              "others"
            ]
          },
          "minRating": {
            "title": "Minimum score (0–10)",
            "minimum": 0,
            "maximum": 10,
            "type": "number",
            "description": "Drop reviews below this score out of 10. 0 turns it off. Dropped reviews are not charged.",
            "default": 0
          },
          "maxRating": {
            "title": "Maximum score (0–10)",
            "minimum": 0,
            "maximum": 10,
            "type": "number",
            "description": "Drop reviews above this score out of 10. 0 turns it off.",
            "default": 0
          },
          "travellerTypes": {
            "title": "Traveller types",
            "type": "array",
            "description": "Keep only reviews from these kinds of trip: business, couples, solo, families_young_children, families_teens, groups. A single type is applied by Agoda itself; several are applied after fetching.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "roomTypes": {
            "title": "Room types",
            "type": "array",
            "description": "Keep only reviews from guests who stayed in these rooms, as on the site's Room type filter. Give a room name, part of one (\"Twin\" picks every twin room) or a room id; the id is the same roomTypeId the Agoda Room Rates Scraper returns. Only Agoda's own reviews name the room, so Booking.com reviews are left out while this is set. A name the hotel does not have returns a row listing the hotel's room types.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "topics": {
            "title": "Review topics",
            "type": "array",
            "description": "Keep only reviews about these topics, as on the site's topic chips above the reviews: Location, Breakfast, Pool, Cleanliness, Check in and so on. Give a topic name or part of one (English), or a topic id. Each hotel has its own list of up to 20 topics; a name the hotel does not have returns a row listing its topics. Only Agoda's own reviews are tagged with topics, so Booking.com reviews are left out while this is set. Each row then says which of your topics it matched in matchedTopics.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "phrases": {
            "title": "Review phrases",
            "type": "array",
            "description": "Keep only reviews that mention one of the hotel's highlighted phrases, as in the phrase list above its reviews: \"shuttle bus\", \"train station\", \"friendly staff\" and so on. Give a phrase or part of one, or a phrase id. Each hotel has its own short list (up to about 8 phrases, taken from English reviews); a phrase the hotel does not have returns a row listing its phrases. Only Agoda's own English reviews are matched, so Booking.com reviews are left out while this is set. Each row then says which of your phrases it matched in matchedPhrases.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "reviewedAfter": {
            "title": "Reviewed after",
            "type": "string",
            "description": "Drop reviews older than this date, YYYY-MM-DD.",
            "default": ""
          },
          "includeHotelSummary": {
            "title": "Hotel summary on every review",
            "type": "boolean",
            "description": "Repeat the hotel's aggregates on every row: overall score, scores by category, review counts per source, aspect sentiment and Agoda's AI topic summaries. No extra charge.",
            "default": true
          },
          "includeHotelDetails": {
            "title": "Include hotel details",
            "type": "boolean",
            "description": "Also read the hotel's Agoda listing for address, coordinates, stars, description, check-in and check-out times, house rules (children, extra beds, adult age), facilities, highlights, nearby places, images, the property's FAQ answers (year built, breakfast price and more) and a per-source score breakdown. No extra charge.",
            "default": false
          },
          "summaryOnly": {
            "title": "Summary rows only",
            "type": "boolean",
            "description": "One row per hotel with the aggregate scores, sentiment and topics and no individual reviews. Billed as hotel-summary.",
            "default": false
          },
          "languages": {
            "title": "Languages",
            "type": "array",
            "description": "Keep only reviews written in these languages, as codes: en, fr, de, it, es, pt, nl, ja, zh, ko, th, vi, id, ms, ru, pl, cs, tr, he, ar, sv, no, da, fi. A code covers every variant Agoda lists separately (zh is Simplified, Taiwan and Hong Kong; pt is Portugal and Brazil); add the region to narrow it, as in zh-TW, pt-BR or en-GB.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "dedupStoreName": {
            "title": "Only-new store",
            "type": "string",
            "description": "Name of a key-value store. Reviews returned in earlier runs are skipped and not charged.",
            "default": ""
          },
          "maxConcurrency": {
            "title": "Parallel requests",
            "minimum": 1,
            "maximum": 32,
            "type": "integer",
            "description": "How many requests run at once across the whole run. The default is the fastest level measured clean; lower it only if a run reports refusals or errors.",
            "default": 4
          },
          "delayMs": {
            "title": "Delay between requests (ms)",
            "minimum": 0,
            "maximum": 10000,
            "type": "integer",
            "description": "Optional pause before each call, in milliseconds. 0 (the default) runs as fast as the parallel limit allows. Values above 2000 are treated as 2000.",
            "default": 0
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}