{
  "openapi": "3.0.1",
  "info": {
    "title": "Tripadvisor Scraper | Places, Reviews & Contacts",
    "description": "Scrape Tripadvisor hotels, restaurants and attractions in two modes: fast bulk search or full listing extraction. Get ratings, reviews, owner replies, contacts, addresses, photos, rankings and source URLs. Results stream to the dataset as soon as each place is ready.",
    "version": "0.4",
    "x-build-id": "wakygk5faqNI62Kj7"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/trakk~tripadvisor-reviews-places-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-trakk-tripadvisor-reviews-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/trakk~tripadvisor-reviews-places-scraper/runs": {
      "post": {
        "operationId": "runs-sync-trakk-tripadvisor-reviews-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/trakk~tripadvisor-reviews-places-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-trakk-tripadvisor-reviews-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": {
          "collectionMode": {
            "title": "Collection mode",
            "enum": [
              "fast",
              "full"
            ],
            "type": "string",
            "description": "Fast Search returns lightweight Tripadvisor search records without opening every listing. Full Details opens each listing and keeps the complete place, contact, photo and review output.",
            "default": "fast"
          },
          "searchQueries": {
            "title": "Search query or city",
            "type": "array",
            "description": "Examples: Paris restaurants, New York City hotels, London attractions, Eiffel Tower tours.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "Direct Tripadvisor URLs",
            "type": "array",
            "description": "Paste hotel, restaurant, attraction, tour, activity, or cruise listing URLs when you already know the pages.",
            "default": [],
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "category": {
            "title": "Place type",
            "enum": [
              "all",
              "hotels",
              "restaurants",
              "attractions"
            ],
            "type": "string",
            "description": "Limit search results to hotels, restaurants, or attractions. Auto / all works well for mixed or natural-language searches.",
            "default": "all"
          },
          "maxPlacesPerQuery": {
            "title": "Max places per search",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "How many Tripadvisor places to save for each search query.",
            "default": 5
          },
          "includeReviews": {
            "title": "Legacy review switch",
            "type": "boolean",
            "description": "Compatibility field for existing API integrations. Use Collection mode and Reviews per place in the form.",
            "default": true
          },
          "maxReviewsPerPlace": {
            "title": "Reviews per place",
            "minimum": 0,
            "maximum": 10000,
            "type": "integer",
            "description": "Maximum number of reviews to collect per place. Use 0 for place details only.",
            "default": 10
          },
          "reviewRatings": {
            "title": "Review rating filter",
            "type": "array",
            "description": "Return only selected star ratings. Leave empty to collect all ratings.",
            "items": {
              "type": "string",
              "enum": [
                "1",
                "2",
                "3",
                "4",
                "5"
              ],
              "enumTitles": [
                "1 star",
                "2 stars",
                "3 stars",
                "4 stars",
                "5 stars"
              ]
            },
            "default": []
          },
          "reviewKeyword": {
            "title": "Review text contains",
            "type": "string",
            "description": "Optional word or phrase that must appear in the review title or text.",
            "default": ""
          },
          "tripTypes": {
            "title": "Traveler type",
            "type": "array",
            "description": "Keep reviews from selected traveler types. Leave empty to include all types.",
            "items": {
              "type": "string",
              "enum": [
                "business",
                "couples",
                "family",
                "friends",
                "solo"
              ],
              "enumTitles": [
                "Business",
                "Couples",
                "Family",
                "Friends",
                "Solo"
              ]
            },
            "default": []
          },
          "recentDays": {
            "title": "Only recent reviews",
            "minimum": 0,
            "maximum": 3650,
            "type": "integer",
            "description": "Keep reviews from the last N days when Tripadvisor exposes an exact date. Set 0 to disable.",
            "default": 0
          },
          "enrichContacts": {
            "title": "Enrich contacts from the business website",
            "type": "boolean",
            "description": "When a place exposes its website, also collect public emails, phone links, and Facebook, Instagram, LinkedIn, X, YouTube, and TikTok profiles.",
            "default": false
          },
          "maxContactPages": {
            "title": "Website pages per place",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "Maximum number of homepage/contact/about pages checked per place when contact enrichment is enabled.",
            "default": 2
          },
          "locale": {
            "title": "Locale",
            "enum": [
              "en-US",
              "en-GB",
              "fr-FR",
              "de-DE",
              "es-ES",
              "it-IT",
              "pt-BR",
              "nl-NL",
              "ja-JP"
            ],
            "type": "string",
            "description": "Tripadvisor locale used for search and page data.",
            "default": "en-US"
          },
          "outputMode": {
            "title": "Legacy output mode",
            "type": "string",
            "description": "Compatibility field for older API integrations.",
            "default": "both"
          },
          "scrapeMode": {
            "title": "Legacy workflow mode",
            "type": "string",
            "description": "Compatibility field for existing API integrations."
          },
          "rawOutput": {
            "title": "Include raw parser text",
            "type": "boolean",
            "description": "Advanced debugging option. Keep disabled for clean business datasets.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Connection settings",
            "type": "object",
            "description": "Optional connection settings for larger or repeated runs.",
            "default": {
              "useApifyProxy": true
            }
          },
          "maxConcurrency": {
            "title": "Max concurrency",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "How many searches and Tripadvisor place pages can be fetched in parallel. Twenty rotating workers balance speed and source stability on 512 MB.",
            "default": 20
          },
          "requestDelayMs": {
            "title": "Request delay",
            "minimum": 0,
            "maximum": 10000,
            "type": "integer",
            "description": "Delay between page requests in milliseconds. Increase it only when a source starts throttling a very large run.",
            "default": 100
          },
          "maxRetries": {
            "title": "Max retries",
            "minimum": 0,
            "maximum": 12,
            "type": "integer",
            "description": "Retry budget for temporary request failures.",
            "default": 1
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}