{
  "openapi": "3.0.1",
  "info": {
    "title": "Tripadvisor Reviews Scraper — Hotels & Restaurants",
    "description": "Scrape Tripadvisor reviews for hotels, restaurants and attractions by URL or name + city. Ratings, text, reviewer, owner replies. Filters. No login.",
    "version": "1.0",
    "x-build-id": "hMJIKVymUlxHcT6sR"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/cheapapi~tripadvisor-reviews-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-cheapapi-tripadvisor-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/cheapapi~tripadvisor-reviews-scraper/runs": {
      "post": {
        "operationId": "runs-sync-cheapapi-tripadvisor-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/cheapapi~tripadvisor-reviews-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-cheapapi-tripadvisor-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",
        "properties": {
          "startUrls": {
            "title": "Tripadvisor URLs",
            "type": "array",
            "description": "Links to Tripadvisor hotel, restaurant, attraction or vacation-rental pages (any country domain, e.g. tripadvisor.com, tripadvisor.co.uk, tripadvisor.de).",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "searchTerms": {
            "title": "Search by name",
            "type": "array",
            "description": "Don't have the link? Enter one \"place name, city\" per line, for example \"Le Jules Verne, Paris, France\", \"Colosseum, Rome, Italy\" or \"Orchid Key Inn, Key West\". The best matching Tripadvisor place is used (see \"Places per search\" to get more). Each new place found costs one \"search-match\" ($0.0022; $0.00125 on Gold+). A search that finds nothing is charged one \"page-checked\" fee.",
            "items": {
              "type": "string"
            }
          },
          "maxReviewsPerPlace": {
            "title": "Max reviews per place",
            "minimum": 1,
            "maximum": 4490,
            "type": "integer",
            "description": "How many reviews to collect for each place (newest first by default). Up to 4,490 per place. Keep it close to what the place really has: reviews are fetched in pages of 10, and a page that returns too few reviews is charged a \"page-checked\" fee ($0.0028 on Free–Silver, $0.0015 on Gold+) instead of being free.",
            "default": 100
          },
          "sourceDatasetId": {
            "title": "Source dataset ID",
            "type": "string",
            "description": "Optional. Pick (or paste the ID of) an Apify dataset from an earlier run whose rows contain Tripadvisor place links in a \"url\" or \"placeUrl\" field — for example a previous run of this Actor or of a Tripadvisor places/search Actor. Each place is collected once, together with any URLs and searches above. Up to 50,000 rows are read."
          },
          "reviewsSince": {
            "title": "Only reviews since",
            "type": "string",
            "description": "Only deliver reviews published on or after this date. Pick a date (e.g. 2026-09-01) or a relative period such as \"30 days\", \"2 weeks\", \"6 months\" or \"1 year\" (counted back from the start of the run). Reviews are then sorted newest first automatically. Older reviews are never charged; a place with no review after the cut-off is charged one \"page-checked\" fee for the check."
          },
          "onlyNewReviews": {
            "title": "Only new reviews since the last run",
            "type": "boolean",
            "description": "Remembers the newest review delivered for each place (per review language and filters) and next time delivers only reviews published after it. The first run delivers the latest reviews up to your limit and starts the watch. Perfect for daily or weekly schedules. Each place is checked with one page of 10 reviews; a place with no new reviews is charged one \"page-checked\" fee ($0.0028 on Free–Silver, $0.0015 on Gold+) for that check.",
            "default": false
          },
          "monitoringStoreName": {
            "title": "Monitoring store name",
            "type": "string",
            "description": "Name of the key-value store in your Apify account where \"Only new reviews since the last run\" keeps its memory. Use a different name to run separate watches (e.g. one per client). Lowercase letters, digits and hyphens.",
            "default": "tripadvisor-reviews-monitoring"
          },
          "ratings": {
            "title": "Ratings",
            "type": "array",
            "description": "Only reviews with these star ratings. Filters that match no review of a place lead to a \"page-checked\" fee for that place instead of reviews.",
            "items": {
              "type": "string",
              "enum": [
                "excellent",
                "very_good",
                "average",
                "poor",
                "terrible"
              ],
              "enumTitles": [
                "5 stars – Excellent",
                "4 stars – Very good",
                "3 stars – Average",
                "2 stars – Poor",
                "1 star – Terrible"
              ]
            }
          },
          "visitTypes": {
            "title": "Traveler types",
            "type": "array",
            "description": "Only reviews written by these kinds of travelers. Filters that match no review of a place lead to a \"page-checked\" fee for that place instead of reviews.",
            "items": {
              "type": "string",
              "enum": [
                "families",
                "couples",
                "solo",
                "business",
                "friends"
              ],
              "enumTitles": [
                "Families",
                "Couples",
                "Solo",
                "Business",
                "Friends"
              ]
            }
          },
          "months": {
            "title": "Months of visit",
            "type": "array",
            "description": "Only reviews of visits in these months (any year) — useful for seasonal analysis. Filters that match no review of a place lead to a \"page-checked\" fee for that place instead of reviews.",
            "items": {
              "type": "string",
              "enum": [
                "january",
                "february",
                "march",
                "april",
                "may",
                "june",
                "july",
                "august",
                "september",
                "october",
                "november",
                "december"
              ],
              "enumTitles": [
                "January",
                "February",
                "March",
                "April",
                "May",
                "June",
                "July",
                "August",
                "September",
                "October",
                "November",
                "December"
              ]
            }
          },
          "language": {
            "title": "Review language",
            "enum": [
              "en",
              "de",
              "fr",
              "es",
              "it",
              "pt",
              "nl",
              "ja",
              "zh_TW",
              "ko",
              "ru",
              "sv",
              "da",
              "no",
              "pl",
              "tr",
              "el",
              "cs",
              "ar"
            ],
            "type": "string",
            "description": "Language of the reviews to collect. Need another language? Type its code into \"Other language code\" below.",
            "default": "en"
          },
          "customLanguageCode": {
            "title": "Other language code",
            "type": "string",
            "description": "Optional. Any other Tripadvisor language code (e.g. fi, hu, th, iw). When filled, it replaces \"Review language\"."
          },
          "translateReviews": {
            "title": "Include translated reviews",
            "type": "boolean",
            "description": "When on, reviews written in other languages are included too — machine-translated into the selected language when Tripadvisor has a translation, otherwise in their original language (see language and originalLanguage in the output). Turn off to get only reviews originally written in the selected language.",
            "default": true
          },
          "sortReviewsBy": {
            "title": "Sort reviews by",
            "enum": [
              "most_recent",
              "detailed_reviews"
            ],
            "type": "string",
            "description": "Which reviews come first (and therefore which ones you get when you set a limit). Always Most recent when a date cut-off or \"Only new reviews\" is used.",
            "default": "most_recent"
          },
          "searchLocation": {
            "title": "City for searches",
            "type": "string",
            "description": "Optional. When set, all \"Search by name\" entries are searched in this city (e.g. \"Barcelona, Spain\") and can be plain names without a city."
          },
          "maxPlacesPerSearch": {
            "title": "Places per search",
            "minimum": 1,
            "maximum": 200,
            "type": "integer",
            "description": "How many matching places to collect reviews for per search. 1 = only the best match. Use more to cover e.g. \"pizza, Naples\" → the top 20 pizzerias. One \"search-match\" is charged per place found.",
            "default": 1
          },
          "includeSponsored": {
            "title": "Include sponsored results",
            "type": "boolean",
            "description": "Also use places that appear as sponsored (ad) results in the search.",
            "default": false
          },
          "processingSpeed": {
            "title": "Processing speed",
            "enum": [
              "auto",
              "fast",
              "economy"
            ],
            "type": "string",
            "description": "Fast: results usually in 1–3 minutes. Economy: can take up to ~45 minutes, used for large jobs (200+ reviews per place). Automatic: fast for normal runs, economy for 500+ reviews per place. On the Gold, Platinum and Diamond plans economy processing is always used, whatever you pick here (that is how the lower Gold price is possible). Event prices do not depend on the speed.",
            "default": "auto"
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}