{
  "openapi": "3.0.1",
  "info": {
    "title": "Booking Reviews Scraper",
    "description": "Pull reviews from any Booking.com hotel or attraction. Get ratings, full review text, trip details, and replies from the property. Filter by language, score, or traveler type and get it all back as clean data.",
    "version": "0.1",
    "x-build-id": "INBipmuzE7smoEa9v"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/web_wanderer~booking-reviews-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-web_wanderer-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/web_wanderer~booking-reviews-scraper/runs": {
      "post": {
        "operationId": "runs-sync-web_wanderer-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/web_wanderer~booking-reviews-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-web_wanderer-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": [
          "property_urls"
        ],
        "properties": {
          "property_urls": {
            "title": "Property URLs",
            "uniqueItems": true,
            "type": "array",
            "description": "Booking.com hotel or attraction URLs to scrape reviews from. Both `/hotel/...` and `/attractions/...` URLs are supported and can be mixed in the same run. Cars, flights and taxis are not supported on Booking.com (no per-product reviews).",
            "items": {
              "type": "string"
            }
          },
          "reviews_limit": {
            "title": "Reviews per property",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum number of reviews to scrape per property. Set to 0 for unlimited (capped only by what Booking.com returns).",
            "default": 50
          },
          "reviews_sort": {
            "title": "Sort order",
            "enum": [
              "MOST_RELEVANT",
              "NEWEST_FIRST",
              "OLDEST_FIRST",
              "SCORE_DESC",
              "SCORE_ASC"
            ],
            "type": "string",
            "description": "How to sort reviews returned by Booking.com.",
            "default": "MOST_RELEVANT"
          },
          "reviews_score": {
            "title": "Score band",
            "enum": [
              "",
              "SUPERB",
              "GOOD",
              "PASSABLE",
              "POOR",
              "VERY_POOR"
            ],
            "type": "string",
            "description": "Keep only reviews in the selected score band. Mapped to 9+, 7-9, 5-7, 3-5 and 1-3 for stays, and to 5/4/3/2/1 stars for attractions.",
            "default": ""
          },
          "reviews_language": {
            "title": "Languages",
            "uniqueItems": true,
            "type": "array",
            "description": "ISO 639-1 codes (e.g. `en`, `fr`, `de`). Reviews not written in one of the selected languages are filtered out by Booking.com. Leave empty to include all.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "reviews_search_text": {
            "title": "Search text",
            "type": "string",
            "description": "Keep only reviews whose body contains this text (case-insensitive substring match performed by Booking.com).",
            "default": ""
          },
          "reviews_customer_type": {
            "title": "Customer type (stays only)",
            "enum": [
              "",
              "FAMILIES",
              "COUPLES",
              "GROUP_OF_FRIENDS",
              "SOLO_TRAVELLERS",
              "BUSINESS_TRAVELLERS"
            ],
            "type": "string",
            "description": "Filter stays reviews by guest trip type. Ignored for attractions.",
            "default": ""
          },
          "reviews_time_of_year": {
            "title": "Time of year",
            "enum": [
              "",
              "MAR_MAY",
              "JUN_AUG",
              "SEP_NOV",
              "DEC_FEB"
            ],
            "type": "string",
            "description": "Filter reviews by the season the guest visited.",
            "default": ""
          },
          "hide_anonymous_reviews": {
            "title": "Hide anonymous reviews (attractions only)",
            "type": "boolean",
            "description": "Drop reviews that have no reviewer name. Attractions only.",
            "default": false
          },
          "hide_empty_reviews": {
            "title": "Hide empty reviews (attractions only)",
            "type": "boolean",
            "description": "Drop reviews that contain only a numeric rating with no text body. Attractions only.",
            "default": false
          },
          "include_personal_data": {
            "title": "Include personal information",
            "type": "boolean",
            "description": "If enabled, the actor will return reviewer personal information such as the name, country, avatar and guest type. By default these fields are returned as `null`. Personal data is subject to GDPR and similar regulations - make sure you have a lawful basis to process it.",
            "default": false
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}