{
  "openapi": "3.0.1",
  "info": {
    "title": "Tripadvisor Real-Time Data Scraper",
    "description": "Get fresh Tripadvisor business data: restaurants, hotels & attractions with names, phones, addresses, ratings, review counts, cuisine, websites and contact emails. Filter leads, collect multiple markets at once, and deliver results to your tools instantly via webhook. Free plan: 2-result sample.",
    "version": "0.0",
    "x-build-id": "f4o7p2dex9AlB4E2M"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/b2b_leads~Tripadvisor-Real-Time-Data/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-b2b_leads-Tripadvisor-Real-Time-Data",
        "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/b2b_leads~Tripadvisor-Real-Time-Data/runs": {
      "post": {
        "operationId": "runs-sync-b2b_leads-Tripadvisor-Real-Time-Data",
        "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/b2b_leads~Tripadvisor-Real-Time-Data/run-sync": {
      "post": {
        "operationId": "run-sync-b2b_leads-Tripadvisor-Real-Time-Data",
        "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": {
          "enableListingDiscovery": {
            "title": "Listing Discovery",
            "type": "boolean",
            "description": "Discover restaurants, hotels and attractions by market. Enabled by default.",
            "default": true
          },
          "listingTasks": {
            "title": "Markets",
            "type": "array",
            "description": "One row per category + market. Location accepts a common city name (e.g. \"New York\", \"London\"), a numeric Tripadvisor geo ID, or a full Tripadvisor market link.",
            "items": {
              "type": "object",
              "properties": {
                "category": {
                  "title": "Category",
                  "type": "string",
                  "description": "Type of business to discover.",
                  "enum": [
                    "restaurant",
                    "hotel",
                    "attraction"
                  ],
                  "enumTitles": [
                    "Restaurants",
                    "Hotels",
                    "Attractions"
                  ],
                  "editor": "select",
                  "default": "restaurant"
                },
                "location": {
                  "title": "Market",
                  "type": "string",
                  "description": "City name, Tripadvisor geo ID (e.g. 60763), or a full Tripadvisor market link.",
                  "editor": "textfield"
                },
                "maxItems": {
                  "title": "Max results",
                  "type": "integer",
                  "description": "Maximum businesses for this market. Uses the global Max items value if omitted. NOTE: on the Apify free plan each market is capped to a small sample; paid plans get the full value. See the README 'Free plan & paid plans' section.",
                  "minimum": 1,
                  "editor": "number"
                }
              },
              "required": [
                "category",
                "location"
              ]
            }
          },
          "maxPagesPerTask": {
            "title": "Max pages per market",
            "minimum": 1,
            "maximum": 200,
            "type": "integer",
            "description": "How deep to go per market, as a safety ceiling for very large runs.",
            "default": 20
          },
          "enrichListings": {
            "title": "Lead details",
            "type": "boolean",
            "description": "Collect the full profile for every business found — address details, coordinates, rating, description and contact details (phone, website, email where the business has one). Every business is always included; a field stays empty when a business does not have that detail. Turn off for a faster, lighter run with business names and links only.",
            "default": true
          },
          "enablePlaceDetails": {
            "title": "Place Details",
            "type": "boolean",
            "description": "Extract a complete structured profile for specific Tripadvisor business links.",
            "default": false
          },
          "placeUrls": {
            "title": "Business links",
            "type": "array",
            "description": "Tripadvisor restaurant, hotel or attraction links.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "enableReviews": {
            "title": "Reviews",
            "type": "boolean",
            "description": "Extract reviews (author, rating, date, trip type, text) from specific Tripadvisor business links.",
            "default": false
          },
          "reviewUrls": {
            "title": "Business links for reviews",
            "type": "array",
            "description": "Tripadvisor business links to collect reviews from.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "maxReviewsPerPlace": {
            "title": "Max reviews per business",
            "minimum": 1,
            "type": "integer",
            "description": "Maximum number of reviews to collect from each URL.",
            "default": 30
          },
          "maxItems": {
            "title": "Max total items",
            "minimum": 1,
            "type": "integer",
            "description": "Global cap on dataset rows for this run across all features. Set it high for large runs. NOTE: on the Apify free plan this Actor is limited to a small sample of 2 results per run; upgrade to a paid Apify plan for full, unlimited output. See the README 'Free plan & paid plans' section.",
            "default": 1000
          },
          "webhookUrl": {
            "title": "Webhook URL",
            "type": "string",
            "description": "Optional. Every record is always saved to the run's dataset — this webhook is an ADDITIONAL real-time push. When set, each new record is also POSTed to this URL (CRM, Slack incoming webhook, Zapier, Make, Google Sheets).",
            "default": ""
          },
          "webhookFormat": {
            "title": "Webhook format",
            "enum": [
              "json",
              "slack"
            ],
            "type": "string",
            "description": "json = full record object; slack = Slack-friendly message payload.",
            "default": "json"
          },
          "proxyConfiguration": {
            "title": "Proxy settings",
            "type": "object",
            "description": "Apify residential proxy (US) is enabled by default for reliable Tripadvisor collection.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ],
              "apifyProxyCountry": "US"
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}