{
  "openapi": "3.0.1",
  "info": {
    "title": "Tripadvisor Scraper - Hotels, Restaurants, Reviews",
    "description": "Scrape Tripadvisor hotels, restaurants and attractions by location or URL. Get rating, subratings, rating histogram, ranking, price, awards, address, phone, website, coordinates, cuisines, amenities, photos and full reviews. Export to JSON, CSV or Excel.",
    "version": "0.1",
    "x-build-id": "TCumrO7JfDhZh7kl1"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapers_lat~tripadvisor-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapers_lat-tripadvisor-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/scrapers_lat~tripadvisor-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scrapers_lat-tripadvisor-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/scrapers_lat~tripadvisor-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scrapers_lat-tripadvisor-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": {
          "locationQuery": {
            "title": "Location",
            "type": "string",
            "description": "A city, region or place to search on Tripadvisor, for example Paris, Rome, New York City or Bali. Combined with the Category below to list its hotels, restaurants or attractions."
          },
          "searchQueries": {
            "title": "Locations / Search Queries (list)",
            "type": "array",
            "description": "One or more locations or free-text searches, for example [\"Paris\", \"Rome\", \"hotels in Barcelona\"]. Each is resolved to the closest Tripadvisor destination and combined with the Category. Runs all of them in one run.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "category": {
            "title": "Category",
            "enum": [
              "hotels",
              "restaurants",
              "attractions",
              "all"
            ],
            "type": "string",
            "description": "What to list for each location: hotels, restaurants, attractions (things to do), or all three.",
            "default": "hotels"
          },
          "detailUrls": {
            "title": "Place / Detail URLs",
            "type": "array",
            "description": "Optional. Paste one or more Tripadvisor place URLs (Hotel_Review, Restaurant_Review or Attraction_Review pages) to scrape those exact places with full details and skip the location search.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "maxResults": {
            "title": "Max Places To Scrape",
            "minimum": 1,
            "type": "integer",
            "description": "Maximum number of places to collect in the run (across all locations and categories). Free Apify plans are capped at 10 per run."
          },
          "minRating": {
            "title": "Minimum Rating",
            "minimum": 0,
            "maximum": 5,
            "type": "number",
            "description": "Only keep places with an overall rating at or above this value (0 to 5). Leave 0 for no filter.",
            "default": 0
          },
          "minPriceLevel": {
            "title": "Minimum Price Level",
            "minimum": 0,
            "maximum": 4,
            "type": "integer",
            "description": "Only keep places at or above this price level, where 1 = $, 2 = $$, 3 = $$$, 4 = $$$$. Leave 0 for no filter.",
            "default": 0
          },
          "maxPriceLevel": {
            "title": "Maximum Price Level",
            "minimum": 0,
            "maximum": 4,
            "type": "integer",
            "description": "Only keep places at or below this price level (1 = $ to 4 = $$$$). Leave 0 for no filter.",
            "default": 0
          },
          "cuisines": {
            "title": "Cuisines (restaurants filter)",
            "type": "array",
            "description": "Optional. Only keep restaurants whose cuisines match any of these, for example [\"Italian\", \"Seafood\"].",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "amenities": {
            "title": "Amenities (hotels filter)",
            "type": "array",
            "description": "Optional. Only keep hotels whose amenities match any of these, for example [\"Pool\", \"Free Wifi\"]. Applied when full details are fetched (Include Reviews on) or for direct URLs.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "checkInDate": {
            "title": "Check-in Date (hotels)",
            "type": "string",
            "description": "Optional. YYYY-MM-DD. Used as context when fetching hotel detail pages so partner rates reflect these dates. Best effort; live nightly rates are not always exposed."
          },
          "checkOutDate": {
            "title": "Check-out Date (hotels)",
            "type": "string",
            "description": "Optional. YYYY-MM-DD check-out date paired with the check-in date above."
          },
          "guests": {
            "title": "Guests (hotels)",
            "minimum": 1,
            "type": "integer",
            "description": "Optional. Number of adult guests to use as hotel rate context."
          },
          "rooms": {
            "title": "Rooms (hotels)",
            "minimum": 1,
            "type": "integer",
            "description": "Optional. Number of rooms to use as hotel rate context."
          },
          "language": {
            "title": "Language",
            "type": "string",
            "description": "Optional preferred content language code, for example en, es, fr, de. Best effort."
          },
          "currency": {
            "title": "Currency",
            "type": "string",
            "description": "Optional preferred currency code for prices, for example USD, EUR, GBP. Best effort."
          },
          "includeReviews": {
            "title": "Include full details & reviews (paid add-on, off by default)",
            "type": "boolean",
            "description": "Fetch each place's detail page to attach the top public reviews (title, rating, text, dates, trip type, author, helpful votes, owner response) and enrich the place with subratings, rating histogram, awards, images, ranking, website and amenities. Charged only when real reviews are returned. Disabled on free plans.",
            "default": false
          },
          "maxReviews": {
            "title": "Max Reviews Per Place",
            "minimum": 0,
            "maximum": 40,
            "type": "integer",
            "description": "Maximum number of public reviews to attach to each place when Include Reviews is on."
          },
          "reviewsSort": {
            "title": "Reviews Sort",
            "enum": [
              "recent",
              "helpful"
            ],
            "type": "string",
            "description": "Order reviews are selected in: most recent first, or most helpful first.",
            "default": "recent"
          },
          "minReviewRating": {
            "title": "Minimum Review Rating",
            "minimum": 0,
            "maximum": 5,
            "type": "integer",
            "description": "Only keep reviews with at least this star rating (1 to 5). Leave 0 for all reviews.",
            "default": 0
          },
          "reviewLanguage": {
            "title": "Review Language",
            "type": "string",
            "description": "Optional two-letter language code to keep only reviews written in that language, for example en, es, fr."
          },
          "aiPlaceSummary": {
            "title": "Add AI place summary (paid add-on, off by default)",
            "type": "boolean",
            "description": "Use AI to summarize each place: vibe, who it is best for, highlights and overall sentiment. Charged only when a usable summary is returned. Disabled on free plans.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}