{
  "openapi": "3.0.1",
  "info": {
    "title": "TripAdvisor Scraper: Hotels, Restaurants & Attractions",
    "description": "Scrape TripAdvisor hotels, restaurants, attractions, things to do, vacation rentals, and tours. Each row ships pricing, contact, amenities, awards, ratings breakdown, photos, coordinates, hours, cuisine, and review summaries. Multi country, multi currency. Pay per row.",
    "version": "0.1",
    "x-build-id": "ligNDooknqMD9NxAK"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapemint~tripadvisor-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapemint-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/scrapemint~tripadvisor-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scrapemint-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/scrapemint~tripadvisor-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scrapemint-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": {
          "searchQuery": {
            "title": "Search query",
            "type": "string",
            "description": "City, neighborhood, or country name. The actor resolves it to a TripAdvisor geo ID and pulls the matching place lists. Leave blank if you only want to scrape startUrls.",
            "default": ""
          },
          "startUrls": {
            "title": "Start URLs",
            "type": "array",
            "description": "Mix any of: Tourism (city overview), Hotel_Review, Restaurant_Review, Attraction_Review, VacationRentalReview, AttractionProductReview, or list URLs (Hotels-, Restaurants-, Attractions-).",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "maxResults": {
            "title": "Max results per search query / start URL",
            "minimum": 0,
            "maximum": 5000,
            "type": "integer",
            "description": "Hard cap on properties returned per search or list URL. 0 means everything TripAdvisor exposes.",
            "default": 25
          },
          "placeTypes": {
            "title": "Place types to include",
            "type": "array",
            "description": "Which TripAdvisor sections to crawl when scraping by search query. Direct URLs always honor their type.",
            "items": {
              "type": "string",
              "enum": [
                "hotels",
                "restaurants",
                "things_to_do",
                "vacation_rentals",
                "tours"
              ],
              "enumTitles": [
                "Hotels",
                "Restaurants",
                "Things to do (attractions)",
                "Vacation rentals",
                "Tours and experiences"
              ]
            },
            "default": [
              "hotels",
              "restaurants",
              "things_to_do"
            ]
          },
          "includeReviewTags": {
            "title": "Include review tags",
            "type": "boolean",
            "description": "Pull the auto generated review tags (e.g. great location, romantic, family friendly). Used by travelers to filter reviews.",
            "default": true
          },
          "includeNearbyResults": {
            "title": "Include nearby results",
            "type": "boolean",
            "description": "Also pull the nearby section that TripAdvisor shows on every detail page (10 to 20 nearby properties).",
            "default": false
          },
          "extractAmenities": {
            "title": "Extract amenities and features",
            "type": "boolean",
            "description": "Hotels, vacation rentals, and attractions ship every listed amenity (pool, free Wi-Fi, accessibility, family rooms).",
            "default": true
          },
          "extractAwards": {
            "title": "Extract awards",
            "type": "boolean",
            "description": "Travelers' Choice, Certificate of Excellence, Best of the Best, and category awards.",
            "default": true
          },
          "extractRatingBreakdown": {
            "title": "Extract rating breakdown",
            "type": "boolean",
            "description": "Per category ratings (cleanliness, service, value, location, rooms, sleep) for hotels, plus food / service / value / atmosphere for restaurants.",
            "default": true
          },
          "extractRecentReviewSnippets": {
            "title": "Extract recent review snippets",
            "type": "boolean",
            "description": "Capture the first three review snippets visible on the detail page. Useful for sentiment summaries without pulling every review.",
            "default": true
          },
          "extractContact": {
            "title": "Extract contact details",
            "type": "boolean",
            "description": "Phone number, website URL, structured address, and coordinates when present.",
            "default": true
          },
          "extractHoursAndPricing": {
            "title": "Extract hours and pricing",
            "type": "boolean",
            "description": "Operating hours, price tier, lowest rate (hotels and vacation rentals), tour duration and price, and meal types served.",
            "default": true
          },
          "extractPhotos": {
            "title": "Extract photo URLs",
            "type": "boolean",
            "description": "Pull the gallery photo URLs in original resolution.",
            "default": true
          },
          "maxPhotosPerProperty": {
            "title": "Max photos per property",
            "minimum": 0,
            "maximum": 200,
            "type": "integer",
            "description": "Cap on photo URLs returned per row. Set 0 for all.",
            "default": 12
          },
          "checkInDate": {
            "title": "Check in date (hotels and vacation rentals)",
            "type": "string",
            "description": "ISO date YYYY-MM-DD. Drives availability and pricing for hotels and vacation rentals. Leave blank for default rate.",
            "default": ""
          },
          "checkOutDate": {
            "title": "Check out date (hotels and vacation rentals)",
            "type": "string",
            "description": "ISO date YYYY-MM-DD. Required when checkInDate is set.",
            "default": ""
          },
          "guests": {
            "title": "Guests (hotels and vacation rentals)",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "Number of adult guests. Affects pricing.",
            "default": 2
          },
          "rooms": {
            "title": "Rooms (hotels)",
            "minimum": 1,
            "maximum": 8,
            "type": "integer",
            "description": "Number of rooms. Hotels only.",
            "default": 1
          },
          "minRating": {
            "title": "Minimum rating (filter)",
            "minimum": 0,
            "maximum": 5,
            "type": "number",
            "description": "Drop properties rated below this number of stars (1.0 to 5.0). 0 means no filter.",
            "default": 0
          },
          "language": {
            "title": "Language",
            "enum": [
              "en",
              "es",
              "fr",
              "de",
              "it",
              "pt",
              "nl",
              "ru",
              "ja",
              "ko",
              "zh",
              "ar",
              "tr",
              "pl",
              "sv",
              "th"
            ],
            "type": "string",
            "description": "TripAdvisor interface and review language. Affects which reviews are surfaced and how metadata reads.",
            "default": "en"
          },
          "currency": {
            "title": "Currency",
            "enum": [
              "USD",
              "EUR",
              "GBP",
              "CAD",
              "AUD",
              "JPY",
              "CHF",
              "BRL",
              "MXN",
              "INR",
              "AED",
              "SGD",
              "HKD",
              "ZAR",
              "NZD",
              "SEK",
              "PLN"
            ],
            "type": "string",
            "description": "Currency for hotel rates, vacation rental rates, and tour pricing.",
            "default": "USD"
          },
          "dedupe": {
            "title": "Deduplicate across runs",
            "type": "boolean",
            "description": "Skip property IDs already pushed in previous runs. Turn off to refresh stale rows.",
            "default": true
          },
          "concurrency": {
            "title": "Concurrency",
            "minimum": 1,
            "maximum": 16,
            "type": "integer",
            "description": "Number of pages processed in parallel. Three to five is safe. Higher triggers Cloudflare challenges.",
            "default": 4
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Apify proxy. Residential is required for TripAdvisor at meaningful volume.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ]
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}