{
  "openapi": "3.0.1",
  "info": {
    "title": "TripAdvisor Reviews Scraper (Owner Replies, Sub-Ratings)",
    "description": "Scrape TripAdvisor reviews for hotels, restaurants and attractions: stars, title, text, dates, trip type, sub-ratings and owner replies, plus a place row with rating breakdown, ranking, address and reply rate. Filter by stars, language, date or keyword. No login. $0.50 per 1,000 reviews.",
    "version": "0.1",
    "x-build-id": "2F8fQgfFVoxDGaVnm"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/locaihost~tripadvisor-reviews/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-locaihost-tripadvisor-reviews",
        "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/locaihost~tripadvisor-reviews/runs": {
      "post": {
        "operationId": "runs-sync-locaihost-tripadvisor-reviews",
        "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/locaihost~tripadvisor-reviews/run-sync": {
      "post": {
        "operationId": "run-sync-locaihost-tripadvisor-reviews",
        "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": "Places",
            "type": "array",
            "description": "TripAdvisor review pages of hotels, restaurants, attractions or tours, from any TripAdvisor country site (tripadvisor.com, .co.uk, .de, .com.sg and so on). The location id on its own works too (93437 or d93437). City pages and lists of places are not accepted: open the place and paste its own link.",
            "items": {
              "type": "string"
            }
          },
          "maxReviewsPerPlace": {
            "title": "Max reviews per place",
            "minimum": 0,
            "maximum": 50000,
            "type": "integer",
            "description": "Newest first by default. 0 returns only the place row (rating, star breakdown, ranking, address) with no reviews. TripAdvisor lists about 10,000 reviews per sort order; past that the Actor reads each star rating as its own list, so up to 50,000 per place.",
            "default": 100
          },
          "maxResults": {
            "title": "Max rows in total",
            "minimum": 0,
            "type": "integer",
            "description": "Stops the whole run after this many charged rows (reviews plus places). 0 means no limit.",
            "default": 0
          },
          "reviewsSince": {
            "title": "Reviews since",
            "type": "string",
            "description": "Only reviews published on or after this date, like 2026-09-01, or a period like \"30 days\" or \"6 months\". Sets the order to newest first, so reading stops at the first older review."
          },
          "ratings": {
            "title": "Star ratings",
            "type": "array",
            "description": "Only reviews with these star ratings. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "1",
                "2",
                "3",
                "4",
                "5"
              ],
              "enumTitles": [
                "1 star (terrible)",
                "2 stars (poor)",
                "3 stars (average)",
                "4 stars (very good)",
                "5 stars (excellent)"
              ]
            }
          },
          "languages": {
            "title": "Languages",
            "type": "array",
            "description": "Language codes like en, fr, de, es, it, ja, zh-CN. Reviews are returned as written in each language. Leave empty for every language: then reviews written in other languages come in TripAdvisor's English translation (the row's language and machineTranslated fields say so).",
            "items": {
              "type": "string"
            }
          },
          "tripTypes": {
            "title": "Trip types",
            "type": "array",
            "description": "Only reviews from these kinds of trip. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "family",
                "couples",
                "solo",
                "business",
                "friends"
              ],
              "enumTitles": [
                "Families",
                "Couples",
                "Solo",
                "Business",
                "Friends"
              ]
            }
          },
          "reviewsContaining": {
            "title": "Reviews mentioning",
            "type": "string",
            "description": "Only reviews that mention this word or phrase, using TripAdvisor's own review search (like \"breakfast\" or \"parking\")."
          },
          "sortBy": {
            "title": "Order",
            "enum": [
              "newest",
              "detailed",
              "insightful",
              "recommended"
            ],
            "type": "string",
            "description": "Which reviews come first. Newest first is best for monitoring and for \"Reviews since\".",
            "default": "newest"
          },
          "includePlaceDetails": {
            "title": "Place row for each place ($)",
            "type": "boolean",
            "description": "One place row per place, charged as a place: rating, review count, star breakdown, average sub-ratings, ranking, address, coordinates, price level, cuisines or amenities, the business's own phone and website, and the owner reply rate, reply time and 90-day rating worked out from the reviews collected.",
            "default": true
          },
          "includeReviewerNames": {
            "title": "Reviewer display names",
            "type": "boolean",
            "description": "Add each reviewer's public display name and home town. Off by default: most uses (sentiment, reply tracking) don't need them. Profile links, usernames and photos are never returned.",
            "default": false
          },
          "onlyNew": {
            "title": "Only new reviews (for schedules)",
            "type": "boolean",
            "description": "Skip reviews an earlier run with the same filters already returned, and charge only for new ones. A place row is sent again only when its rating or review count changed. Use with a schedule to monitor places.",
            "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
                  },
                  "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}