{
  "openapi": "3.0.1",
  "info": {
    "title": "Booking Reviews Scraper By Traveller Type & Stay Season",
    "description": "Booking Reviews Scraper By Traveller Type & Stay Season extracts guest reviews from any Booking hotel page, including ratings, dates, languages, and review text. Ideal for sentiment analysis, market research, competitor insights, and building structured hospitality datasets.",
    "version": "0.1",
    "x-build-id": "n4gWKEdBvZ7UUcvvJ"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scraper-engine~booking-reviews-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scraper-engine-booking-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/scraper-engine~booking-reviews-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scraper-engine-booking-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/scraper-engine~booking-reviews-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scraper-engine-booking-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": [
          "startUrls",
          "sortOrder",
          "maxItems"
        ],
        "properties": {
          "startUrls": {
            "title": "Hotel URLs, Hotel Names, or Keywords",
            "type": "array",
            "description": "List one or more Booking.com hotel page URLs (e.g., https://www.booking.com/hotel/cz/jeromehouse.en-gb.html), hotel names, or keywords. URLs are used directly; names/keywords will be searched on Booking.com.",
            "items": {
              "type": "string"
            }
          },
          "sortOrder": {
            "title": "Sort Order",
            "enum": [
              "Most relevant",
              "Newest first",
              "Oldest first",
              "Highest scores",
              "Lowest scores"
            ],
            "type": "string",
            "description": "Sort reviews by one of Booking.com's options.",
            "default": "Most relevant"
          },
          "maxItems": {
            "title": "Max Items To Scrape",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Maximum number of items to scrape per hotel.",
            "default": 50
          },
          "reviewScores": {
            "title": "Review Scores Filter",
            "type": "array",
            "description": "Filter by score category (first value used). Maps: ALL → ALL, wonderful → REVIEW_ADJ_SUPERB (9+), good → REVIEW_ADJ_GOOD (7-9), fair → REVIEW_ADJ_AVERAGE_PASSABLE (5-7), poor → REVIEW_ADJ_POOR (3-5), very_poor → REVIEW_ADJ_VERY_POOR (1-3).",
            "items": {
              "type": "string",
              "enum": [
                "ALL",
                "wonderful",
                "good",
                "fair",
                "poor",
                "very_poor"
              ]
            },
            "default": [
              "ALL"
            ]
          },
          "proxyConfiguration": {
            "title": "Proxy Configuration (Optional)",
            "type": "object",
            "description": "Optional proxy settings. By default, no proxy is used. Actor automatically falls back to datacenter → residential if blocked. Leave empty to use no proxy."
          },
          "travellerTypes": {
            "title": "🧳 Traveller type",
            "type": "array",
            "description": "Keep only the reviews written by the kinds of guest you pick. Pick more than one and you get all of them together in one list. **Business travellers is the reason this actor exists:** Booking records *why* someone travelled (for work) and *who they travelled with* (alone, as a couple, with family) as two separate things, and only the second one is printed on the review. So a normal Booking review scraper has no way to find a business traveller's review — this one asks Booking's own server for them directly. Leave this empty to get every kind of guest, exactly as the base actor does.",
            "items": {
              "type": "string",
              "enum": [
                "Business travellers",
                "Families",
                "Couples",
                "Solo travellers",
                "Groups of friends"
              ]
            },
            "default": [
              "Business travellers"
            ]
          },
          "staySeasons": {
            "title": "📅 Stay season",
            "type": "array",
            "description": "Keep only the reviews that fall in Booking's own season windows — March to May, June to August, September to November, or December to February. Pick more than one to get them all together. Leave it empty to cover the whole year, which is what the base actor does. **Read this before you rely on it:** these are Booking's own windows, and Booking's site does not say which date it uses to place a review in one. Our own measurements found reviews whose check-in fell just outside the window they came back under, so the honest description is \"Booking's season window\", not \"guests who checked in during these months\". Booking's own count for these windows is broken and always reads zero, so the matching count in the output is read from the filtered result instead.",
            "items": {
              "type": "string",
              "enum": [
                "Mar–May",
                "Jun–Aug",
                "Sep–Nov",
                "Dec–Feb"
              ]
            },
            "default": []
          }
        }
      },
      "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}