{
  "openapi": "3.0.1",
  "info": {
    "title": "Booking.com Reviews Scraper",
    "description": "Scrapes guest reviews of any Booking.com hotel, apartment or other property from its link or ID: score, title, liked and disliked text, reviewer name and country, traveler type, room, nights, stay month, date, language and hotel response, plus the property's overall and category scores.",
    "version": "0.0",
    "x-build-id": "Tqhdvry1a238ZK6cK"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/mina_safwat~booking-reviews-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-mina_safwat-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/mina_safwat~booking-reviews-scraper/runs": {
      "post": {
        "operationId": "runs-sync-mina_safwat-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/mina_safwat~booking-reviews-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-mina_safwat-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": "Properties",
            "type": "array",
            "description": "Booking.com hotels, apartments or other properties, one per line: the property's link in any language or country version (https://www.booking.com/hotel/gb/the-savoy.html, booking.com/hotel/de/adlon-kempinski-berlin.de.html, links with dates and other search settings, or its /reviews/ page) or its numeric property ID (280149). Entries that cannot be read are listed in the FAILED_INPUTS record.",
            "items": {
              "type": "string"
            }
          },
          "max_reviews_per_property": {
            "title": "Max reviews per property",
            "minimum": 1,
            "type": "integer",
            "description": "Stops after this many reviews for each property. Set a large number, such as 100000, to get every review.",
            "default": 100
          },
          "sort": {
            "title": "Sort by",
            "enum": [
              "newest",
              "oldest",
              "highest_score",
              "lowest_score",
              "most_relevant"
            ],
            "type": "string",
            "description": "Which reviews come first, and so which ones you get when a property has more than the maximum. These are Booking.com's own sort orders.",
            "default": "newest"
          },
          "traveler_type": {
            "title": "Traveler type",
            "enum": [
              "all",
              "families",
              "couples",
              "groups_of_friends",
              "solo_travelers",
              "business_travelers"
            ],
            "type": "string",
            "description": "Only reviews by this kind of traveler. Booking.com keeps business trips apart from the travel group, so reviews found with Business travelers still show the group (often Solo traveler or Couple) in traveler_type.",
            "default": "all"
          },
          "score_band": {
            "title": "Review score",
            "enum": [
              "all",
              "wonderful",
              "good",
              "fair",
              "poor",
              "very_poor"
            ],
            "type": "string",
            "description": "Only reviews whose score falls in this band.",
            "default": "all"
          },
          "languages": {
            "title": "Review languages",
            "type": "array",
            "description": "Only reviews written in these languages, as two-letter codes such as en, de, fr, es, it, nl, pt, pl or zh. Regional codes such as pt-br or en-us count as their language, as on Booking.com. Leave empty for every language.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "time_of_year": {
            "title": "Time of year",
            "enum": [
              "all",
              "mar_may",
              "jun_aug",
              "sep_nov",
              "dec_feb"
            ],
            "type": "string",
            "description": "Only reviews posted in these months, in any year. Booking.com's time-of-year filter goes by the date of the review, not of the stay.",
            "default": "all"
          },
          "newer_than": {
            "title": "Only reviews newer than",
            "pattern": "^(\\d{4})-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])(T[0-2]\\d:[0-5]\\d(:[0-5]\\d)?(\\.\\d+)?(Z|[+-][0-2]\\d:[0-5]\\d)?)?$|^(\\d+)\\s*(day|week|month|year)s?$",
            "type": "string",
            "description": "Skips reviews posted before this date (for example 2026-09-01) or age (for example 30 days). Reviews are then read newest first, whatever the sort order, so reading stops at the first older review. Leave empty for reviews of any age."
          },
          "skip_reviews_without_text": {
            "title": "Skip reviews without text",
            "type": "boolean",
            "description": "Leaves out reviews that are only a score, with no title, liked or disliked text. They are not saved, so you are not charged for them.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Leave this empty: the Actor connects through Apify's datacenter proxy, switching to a new address whenever Booking.com refuses one, and moves to residential proxies on its own if datacenter addresses keep being refused. Choose a proxy here only to force every request through it.",
            "default": {
              "useApifyProxy": 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
                  },
                  "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}