{
  "openapi": "3.0.1",
  "info": {
    "title": "Tripadvisor Places & Ratings Data Scraper",
    "description": "Scrape structured Tripadvisor place data from city searches, category pages, or public place URLs. Collect hotels, restaurants, attractions, and activities with ratings, review counts, rankings, contacts, hours, cuisine or amenities, primary images, and optional photos in one normalized dataset.",
    "version": "0.1",
    "x-build-id": "Uiy7UH2nKHCAC7i7f"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/datascraperes~tripadvisor-places-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-datascraperes-tripadvisor-places-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/datascraperes~tripadvisor-places-scraper/runs": {
      "post": {
        "operationId": "runs-sync-datascraperes-tripadvisor-places-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/datascraperes~tripadvisor-places-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-datascraperes-tripadvisor-places-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": {
          "query": {
            "title": "Search by country, city, or place",
            "minLength": 1,
            "maxLength": 200,
            "type": "string",
            "description": "The easiest input. Search any country, city, region, neighborhood, hotel, restaurant, attraction, or activity. Include the country after a comma when a locality name could be ambiguous."
          },
          "startUrls": {
            "title": "Or paste Tripadvisor URLs (optional)",
            "maxItems": 20,
            "uniqueItems": true,
            "type": "array",
            "description": "Alternative to search text. Paste one or more public Tripadvisor URLs from any country domain. Place URLs return one item; category URLs are paginated up to maxItemsPerQuery, or until the source is exhausted when collectAll is enabled.",
            "items": {
              "type": "object",
              "properties": {
                "url": {
                  "title": "Tripadvisor URL",
                  "description": "A public Tripadvisor place or category URL.",
                  "type": "string",
                  "minLength": 1
                }
              },
              "required": [
                "url"
              ]
            }
          },
          "maxItemsPerQuery": {
            "title": "Maximum places per search or URL",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Maximum unique places returned for each search or URL when collectAll is disabled. A direct place URL always returns one place. Maximum 10,000.",
            "default": 20
          },
          "collectAll": {
            "title": "Collect all available places",
            "type": "boolean",
            "description": "When enabled, continue paginating each search or category URL until the source is exhausted or maxTotalItemsPerRun is reached. This may take longer and use more memory and budget.",
            "default": false
          },
          "maxTotalItemsPerRun": {
            "title": "Maximum places for the complete run",
            "minimum": 1,
            "maximum": 50000,
            "type": "integer",
            "description": "Safety cap for collectAll runs across all targets. It prevents an unexpectedly broad source from running without a bound. Maximum 50,000.",
            "default": 10000
          },
          "includeHotels": {
            "title": "Include hotels",
            "type": "boolean",
            "description": "Include hotel listings when a search resolves to a geographic location or when a category URL is used.",
            "default": true
          },
          "includeRestaurants": {
            "title": "Include restaurants",
            "type": "boolean",
            "description": "Include restaurant listings when a search resolves to a geographic location or when a category URL is used.",
            "default": true
          },
          "includeAttractions": {
            "title": "Include attractions and activities",
            "type": "boolean",
            "description": "Include attractions, things to do, and activities when a search resolves to a geographic location or when an attractions category URL is used.",
            "default": true
          },
          "language": {
            "title": "Language",
            "pattern": "^[A-Za-z]{2,5}([_-][A-Za-z]{2,4})?$",
            "type": "string",
            "description": "Two-letter language code for the returned place details, for example en, es, fr, de, pt, or ja. Regional forms are normalized to their language code.",
            "default": "en"
          },
          "currency": {
            "title": "Currency",
            "pattern": "^[A-Za-z]{3}$",
            "type": "string",
            "description": "Three-letter currency code for currency-sensitive values, for example USD, EUR, GBP, JPY, or BRL. Custom ISO-style codes are accepted.",
            "default": "USD"
          },
          "maxPhotosPerPlace": {
            "title": "Additional photos per place",
            "minimum": 0,
            "maximum": 50,
            "type": "integer",
            "description": "Additional photos to fetch for each place. Set to 0 to keep only the primary photo exposed in the place details.",
            "default": 0
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}