{
  "openapi": "3.0.1",
  "info": {
    "title": "Tripadvisor Scraper",
    "description": "This unofficial Tripadvisor API is a data extraction tool able to get data on hotels, restaurants, things to do, vacation rentals, attractions, tours, and public trips. Get pricing, contact details, amenities, awards, ratings, and more. Download your data in Excel, JSON, CSV, and other formats.",
    "version": "0.0",
    "x-build-id": "ibbzj7ErRcxn7GYCM"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/maxcopell~tripadvisor/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-maxcopell-tripadvisor",
        "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/maxcopell~tripadvisor/runs": {
      "post": {
        "operationId": "runs-sync-maxcopell-tripadvisor",
        "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/maxcopell~tripadvisor/run-sync": {
      "post": {
        "operationId": "run-sync-maxcopell-tripadvisor",
        "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": {
          "query": {
            "title": "Search Query",
            "type": "string",
            "description": "You can enter a location name or a keyword here. If you search for a location, the scraper will take the first 'Location' type result and scrape hotels, restaurants, and attractions for that location. If you search for a keyword, the scraper will only scrape places directly listed on the search results page (it won't crawl destinations listed among those results)."
          },
          "startUrls": {
            "title": "Start URLs",
            "type": "array",
            "description": "URLs to start with instead of a location name. You can use URLs with search query included (containing 'Search?q='), tourism URLs or URLs pointing to a concrete hotel, restaurant, or attraction (containing 'Hotel_Review', 'Restaurant_Review', or 'Attraction_Review'). URLs of **public** trips are supported as well. The Actor can also handle category URLs for all 3 kinds of places, including search filters. Just note that the Actor also scrapes nearby results for hotels. You can tell them apart from results strictly matching the search filters using `isNearbyResult` output field.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "maxItemsPerQuery": {
            "title": "Max results (per search query/start URL) ",
            "minimum": 1,
            "type": "integer",
            "description": "Limit the number of places to be scraped per search query/start URL. If you want to set a limit across all search queries use 'Options' -> 'Maximum charged results'. Set this field to a value larger than `3000` to activate the *'deeper city search'*."
          },
          "includeTags": {
            "title": "Include review tags",
            "type": "boolean",
            "description": "Include review tags",
            "default": true
          },
          "includeNearbyResults": {
            "title": "Include nearby results",
            "type": "boolean",
            "description": "If checked, the results will include not only results strictly matching your search criteria but also their nearby results. This feature is currently available only for hotels and restaurants.",
            "default": false
          },
          "includeAttractions": {
            "title": "Include things to do",
            "type": "boolean",
            "description": "If checked, the results will include attractions/things to do for a given location.",
            "default": true
          },
          "includeRestaurants": {
            "title": "Include restaurants",
            "type": "boolean",
            "description": "If checked, the results will include restaurants for a given location.",
            "default": true
          },
          "includeHotels": {
            "title": "Include hotels",
            "type": "boolean",
            "description": "If checked, the results will include hotels for a given location.",
            "default": true
          },
          "checkInDate": {
            "title": "Hotel check-in date",
            "pattern": "^(\\d{4})-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])$|^(\\d+)\\s*(day|week|month|year)s?$",
            "type": "string",
            "description": "Hotel rooms prices will be calculated for this check-in date. Select the date in format YYYY-MM-DD or {number} {unit} *(e.g. '3 days' or '1 week')*"
          },
          "checkOutDate": {
            "title": "Hotel check-out date",
            "pattern": "^(\\d{4})-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])$|^(\\d+)\\s*(day|week|month|year)s?$",
            "type": "string",
            "description": "Hotel rooms prices will be calculated for this check-out date. Select the date in format YYYY-MM-DD or {number} {unit} *(e.g. '3 days' or '1 week')*"
          },
          "includePriceOffers": {
            "title": "Include price offers for hotels (currently under maintanence)",
            "type": "boolean",
            "description": "Check this field if you want to extract price offers for hotel listings. Note that the available offers depend on `checkInDate` and `checkOutDate` values.",
            "default": false
          },
          "includeAiReviewsSummary": {
            "title": "Include AI reviews summary",
            "type": "boolean",
            "description": "Check this field if you want to extract AI reviews summary for hotel listings. Note that the AI reviews summary is available only for some hotels. Also, note that extracting AI summaries increases the number of request retries, leading to slower runs.",
            "default": false
          },
          "language": {
            "title": "Language",
            "enum": [
              "en",
              "ab",
              "aa",
              "af",
              "ak",
              "sq",
              "am",
              "ar",
              "an",
              "hy",
              "as",
              "av",
              "ae",
              "ay",
              "az",
              "bm",
              "ba",
              "eu",
              "be",
              "bn",
              "bh",
              "bi",
              "bs",
              "br",
              "bg",
              "my",
              "ca",
              "ch",
              "ce",
              "ny",
              "zh",
              "cv",
              "kw",
              "co",
              "cr",
              "hr",
              "cs",
              "da",
              "dv",
              "nl",
              "eo",
              "et",
              "ee",
              "fo",
              "fj",
              "fi",
              "fr",
              "ff",
              "gl",
              "ka",
              "de",
              "el",
              "gn",
              "gu",
              "ht",
              "ha",
              "he",
              "iw",
              "hz",
              "hi",
              "ho",
              "hu",
              "ia",
              "id",
              "ie",
              "ga",
              "ig",
              "ik",
              "io",
              "is",
              "it",
              "iu",
              "ja",
              "jv",
              "kl",
              "kn",
              "kr",
              "ks",
              "kk",
              "km",
              "ki",
              "rw",
              "ky",
              "kv",
              "kg",
              "ko",
              "ku",
              "kj",
              "la",
              "lb",
              "lg",
              "li",
              "ln",
              "lo",
              "lt",
              "lu",
              "lv",
              "gv",
              "mk",
              "mg",
              "ms",
              "ml",
              "mt",
              "mi",
              "mr",
              "mh",
              "mn",
              "na",
              "nv",
              "nb",
              "nd",
              "ne",
              "ng",
              "nn",
              "no",
              "ii",
              "nr",
              "oc",
              "oj",
              "cu",
              "om",
              "or",
              "os",
              "pa",
              "pi",
              "fa",
              "pl",
              "ps",
              "pt",
              "qu",
              "rm",
              "rn",
              "ro",
              "ru",
              "sa",
              "sc",
              "sd",
              "se",
              "sm",
              "sg",
              "sr",
              "gd",
              "sn",
              "si",
              "sk",
              "sl",
              "so",
              "st",
              "es",
              "su",
              "sw",
              "ss",
              "sv",
              "ta",
              "te",
              "tg",
              "th",
              "ti",
              "bo",
              "tk",
              "tl",
              "tn",
              "to",
              "tr",
              "ts",
              "tt",
              "tw",
              "ty",
              "ug",
              "uk",
              "ur",
              "uz",
              "ve",
              "vi",
              "vo",
              "wa",
              "cy",
              "wo",
              "fy",
              "xh",
              "yi",
              "yo",
              "za"
            ],
            "type": "string",
            "description": "Select the desired language",
            "default": "en"
          },
          "currency": {
            "title": "Currency",
            "enum": [
              "USD",
              "CAD",
              "EUR",
              "AED",
              "AFN",
              "ALL",
              "AMD",
              "ARS",
              "AUD",
              "AZN",
              "BAM",
              "BDT",
              "BGN",
              "BHD",
              "BIF",
              "BND",
              "BOB",
              "BRL",
              "BWP",
              "BYN",
              "BZD",
              "CDF",
              "CHF",
              "CLP",
              "CNY",
              "COP",
              "CRC",
              "CVE",
              "CZK",
              "DJF",
              "DKK",
              "DOP",
              "DZD",
              "EEK",
              "EGP",
              "ERN",
              "ETB",
              "GBP",
              "GEL",
              "GHS",
              "GNF",
              "GTQ",
              "HKD",
              "HNL",
              "HRK",
              "HUF",
              "IDR",
              "ILS",
              "INR",
              "IQD",
              "IRR",
              "ISK",
              "JMD",
              "JOD",
              "JPY",
              "KES",
              "KHR",
              "KMF",
              "KRW",
              "KWD",
              "KZT",
              "LBP",
              "LKR",
              "LTL",
              "LVL",
              "LYD",
              "MAD",
              "MDL",
              "MGA",
              "MKD",
              "MMK",
              "MOP",
              "MUR",
              "MXN",
              "MYR",
              "MZN",
              "NAD",
              "NGN",
              "NIO",
              "NOK",
              "NPR",
              "NZD",
              "OMR",
              "PAB",
              "PEN",
              "PHP",
              "PKR",
              "PLN",
              "PYG",
              "QAR",
              "RON",
              "RSD",
              "RUB",
              "RWF",
              "SAR",
              "SDG",
              "SEK",
              "SGD",
              "SOS",
              "SYP",
              "THB",
              "TND",
              "TOP",
              "TRY",
              "TTD",
              "TWD",
              "TZS",
              "UAH",
              "UGX",
              "UYU",
              "UZS",
              "VEF",
              "VND",
              "XAF",
              "XOF",
              "YER",
              "ZAR",
              "ZMK",
              "ZWL"
            ],
            "type": "string",
            "description": "Select the desired currency",
            "default": "USD"
          },
          "maxPhotosPerPlace": {
            "title": "Number of additional photos per place to extract ($)",
            "minimum": 0,
            "type": "integer",
            "description": "Set the number of photos per place you expect to scrape."
          },
          "photosType": {
            "title": "Photos Type",
            "enum": [
              "fromEveryone",
              "fromManagement",
              "fromTravelers"
            ],
            "type": "string",
            "description": "Filter photos by source. Choose to extract photos from everyone, only from management, or only from travelers.",
            "default": "fromEveryone"
          },
          "maximumLeadsEnrichmentRecords": {
            "title": "⏩ Add-on: Extract business leads information - Maximum leads per place ($)",
            "minimum": 0,
            "type": "integer",
            "description": "Enrich your results with detailed contact and company information, including employee names, job titles, emails, phone numbers, LinkedIn profiles, and key company data like industry and number of employees.<br><br>This setting allows you to set the maximum number of leads records you want to scrape per place found. By default, it's set to 0 which means that no leads information will be scraped.<br><br>⚠️ Note that some of the fields contain <b>personal data</b>. GDPR protects personal data in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your use case is legitimate, please consult an attorney.<br><br>To keep your leads relevant, Apify automatically filters out large chains and online platforms (e.g., social media, retail giants, food delivery services).<br><br>⚠️ <b>Cost warning:</b> This is a multiplier. Requesting 10 leads for 1,000 places will attempt to find 10,000 total leads. You are only charged for leads successfully found.",
            "default": 0
          },
          "leadsEnrichmentDepartments": {
            "title": "Leads departments selection",
            "type": "array",
            "description": "You can use this filter to include only specific departments (like Sales, Marketing, or C-Suite). Note: This will only work if the ⏩ Add-on: Extract business leads information - Maximum leads per place (maximumLeadsEnrichmentRecords) option is enabled. Please note that some job titles are sometimes miscategorized in the wrong departments.",
            "items": {
              "type": "string",
              "enum": [
                "c_suite",
                "product",
                "engineering_technical",
                "design",
                "education",
                "finance",
                "human_resources",
                "information_technology",
                "legal",
                "marketing",
                "medical_health",
                "operations",
                "sales",
                "consulting"
              ],
              "enumTitles": [
                "C-Suite",
                "Product",
                "Engineering & Technical",
                "Design",
                "Education",
                "Finance",
                "Human Resources",
                "Information Technology",
                "Legal",
                "Marketing",
                "Medical & Health",
                "Operations",
                "Sales",
                "Consulting"
              ]
            }
          },
          "verifyLeadsEnrichmentEmails": {
            "title": "⏩ Add-on: Email verification ($)",
            "type": "boolean",
            "description": "When enabled, verifies the email address of each lead extracted during business leads enrichment. Each lead receives an <b>emailVerification</b> object with the verification result and quality assessment.<br><br><b>Charged (decisive results):</b> valid (<code>ok</code>), invalid, and disposable email addresses.<br><b>Not charged:</b> catch-all, unknown, and error results.<br><br>⚠️ This add-on requires business leads enrichment to be enabled.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}