{
  "openapi": "3.0.1",
  "info": {
    "title": "Tripadvisor Reviews Scraper: All Languages, from $0.50/1K",
    "description": "Scrape Tripadvisor reviews of hotels, restaurants, attractions and tours: rating, full text, all languages with machine translations flagged, trip type, stay date, sub-ratings, photos, owner response. Fast HTTP, no browser. New-reviews-only monitoring and webhook.",
    "version": "0.1",
    "x-build-id": "6wEoj1UIPjfHgieH4"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/alexmorain~tripadvisor-reviews-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-alexmorain-tripadvisor-reviews-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/alexmorain~tripadvisor-reviews-scraper/runs": {
      "post": {
        "operationId": "runs-sync-alexmorain-tripadvisor-reviews-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/alexmorain~tripadvisor-reviews-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-alexmorain-tripadvisor-reviews-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",
        "required": [
          "startUrls"
        ],
        "properties": {
          "startUrls": {
            "title": "Page URLs",
            "type": "array",
            "description": "Tripadvisor review pages, one per line: hotels (<code>Hotel_Review-…</code>), restaurants (<code>Restaurant_Review-…</code>), attractions (<code>Attraction_Review-…</code>) and tours (<code>AttractionProductReview-…</code>). Any Tripadvisor domain works (.com, .fr, .co.uk…). A bare location id such as <code>d228694</code> works too.",
            "items": {
              "type": "string"
            }
          },
          "maxReviewsPerPlace": {
            "title": "Max reviews per page URL",
            "minimum": 0,
            "type": "integer",
            "description": "Newest first. <b>0 = every review.</b> Each review is one charged result, so this is also your cost cap per URL.",
            "default": 100
          },
          "lastDays": {
            "title": "Only reviews from the last N days",
            "minimum": 1,
            "maximum": 3650,
            "type": "integer",
            "description": "Rolling window, handy for scheduled runs. Leave empty for the full history."
          },
          "publishedAfter": {
            "title": "Only reviews published after",
            "type": "string",
            "description": "Fixed start date (YYYY-MM-DD). If both this and the window are set, the later date wins."
          },
          "languages": {
            "title": "Review languages",
            "type": "array",
            "description": "Language codes such as en, fr, de, es, it, ja, zhCN. Empty = all languages (recommended: a review in another language is still a review of the place).",
            "items": {
              "type": "string"
            }
          },
          "ratings": {
            "title": "Star ratings",
            "type": "array",
            "description": "Only reviews with these ratings. Empty = all. The actor reads every review and keeps the matching ones: Tripadvisor's own rating filter returns fewer reviews than the listing holds. Only kept reviews are charged.",
            "items": {
              "type": "string",
              "enum": [
                "1",
                "2",
                "3",
                "4",
                "5"
              ],
              "enumTitles": [
                "1 star",
                "2 stars",
                "3 stars",
                "4 stars",
                "5 stars"
              ]
            }
          },
          "travelerTypes": {
            "title": "Traveller types",
            "type": "array",
            "description": "Only reviews from these traveller types, filtered by the site itself. Empty = all.",
            "items": {
              "type": "string",
              "enum": [
                "FAMILY",
                "COUPLES",
                "SOLO",
                "BUSINESS",
                "FRIENDS"
              ],
              "enumTitles": [
                "Families",
                "Couples",
                "Solo travellers",
                "Business travellers",
                "Friends / groups"
              ]
            }
          },
          "reviewMode": {
            "title": "Review mode",
            "enum": [
              "all",
              "new-only"
            ],
            "type": "string",
            "description": "<b>New reviews only</b> remembers, per URL, which reviews it already delivered and returns only the new ones on the next run. Already delivered reviews are not charged again. Schedule it daily or weekly for monitoring.",
            "default": "all"
          },
          "registryKey": {
            "title": "Monitoring key (optional)",
            "type": "string",
            "description": "Name your monitoring memory to run several independent watches on the same URL (one per client, say). Empty = one memory per URL and filter set."
          },
          "webhookUrl": {
            "title": "Webhook URL (optional)",
            "type": "string",
            "description": "Receives a JSON summary when the run ends (reviews, places, status, dataset id). Works with Slack, Make, Zapier, n8n."
          },
          "includePlaceSummary": {
            "title": "Add one summary row per URL",
            "type": "boolean",
            "description": "One extra row per URL with the place name, score and review count (charged as a place).",
            "default": true
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Apify datacenter proxy is enough and included. No residential proxy needed.",
            "default": {
              "useApifyProxy": true
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}