# Tripadvisor Reviews Scraper (`heyitsgautham/tripadvisor-reviews-scraper`) Actor

Tripadvisor reviews of hotels, restaurants, attractions and tours, with full history, owner responses, sub-ratings and photos. Filter by stars, language, trip type, month, keyword or date, or get only new reviews. $0.40 per 1,000.

- **URL**: https://apify.com/heyitsgautham/tripadvisor-reviews-scraper.md
- **Developed by:** [Gautham Krishna](https://apify.com/heyitsgautham) (community)
- **Categories:** Travel
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.25 / 1,000 reviews

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Tripadvisor Reviews Scraper

Get Tripadvisor reviews of hotels, restaurants, attractions and tours as clean rows, with the full review history when you want it.

Paste Tripadvisor page URLs from any country site, or type place names, and get one row per review.
Each row has the rating, title, text, dates, trip type, sub-ratings, photos, the owner's response and the place's own rating.

Ready-to-run example: [Tripadvisor hotel reviews with owner responses](https://apify.com/heyitsgautham/tripadvisor-reviews-scraper/examples/tripadvisor-hotel-reviews-with-owner-responses), the 50 newest reviews of The Savoy in London, 49 of them with the hotel's reply.

You pay **$0.40 per 1,000 reviews** ($0.0004 each), and less on Apify Store discount tiers, down to $0.25 per 1,000 on Gold.
Places with no reviews, wrong URLs, duplicates and failures are **never charged**, and there is no start fee.

### At a glance

| Topic | Details |
|---|---|
| Input | Tripadvisor URLs of hotels, restaurants, attractions and tours from any country site (`tripadvisor.com`, `.co.uk`, `.de`, `.fr`, `.jp` and others), review page links, numeric place IDs, or place names |
| Filters | Star ratings, review languages, machine translations on or off, traveler type, time of year, a keyword, and a published-after or published-before date |
| Output | One JSON row per review: rating, title, text, review date, visit month, trip type, language, sub-ratings, tip, helpful votes, photo links, owner's response, reviewer display name, plus the place's name, type, URL, overall rating and review count |
| Depth | Full history. One run returned all 15,048 reviews of Hyatt Grand Central New York, from 2002 to 2026, in 4 minutes 22 seconds |
| Price | $0.40 per 1,000 reviews, $0.35 on Bronze, $0.30 on Silver and $0.25 on Gold. No start fee. Free rows for every input that returns no reviews |
| Tested | 80 inputs in one run on 21 Oct 2026: 26 hotels, 25 restaurants, 15 tours and 12 attractions in 64 Tripadvisor locations, with 3 to 104,649 reviews each. All 78 places with reviews returned them, 9,948 reviews in 65 seconds. The other 2 have no reviews on Tripadvisor |

### What you get

One row per review (charged):

| Field | What it holds |
|---|---|
| `placeId`, `placeName`, `placeType`, `placeUrl` | The place the review is about. `placeType` is `hotel`, `restaurant`, `attraction` or `tour` |
| `placeRating`, `placeReviewCount` | Tripadvisor's overall rating and review count for the whole place |
| `reviewId`, `reviewUrl` | Tripadvisor's review ID and the review's own page |
| `rating`, `title`, `text` | The review itself, 1 to 5 stars |
| `reviewDate` | When the review was submitted, as an ISO time in UTC |
| `visitDate`, `tripType` | Month of the stay or visit (`2025-11`), and `family`, `couples`, `solo`, `business` or `friends` |
| `language`, `originalLanguage`, `machineTranslated` | The language of `text`, the language it was written in, and whether Tripadvisor machine-translated it |
| `subRatings` | Scores for parts of the experience, such as `{"Value": 4, "Rooms": 4, "Location": 5}` for hotels or Food, Service and Atmosphere for restaurants |
| `tip` | The reviewer's tip, such as a room tip, when there is one |
| `helpfulVotes`, `photoCount`, `photoUrls` | Helpful votes, the number of photos, and links to the photos the review list carries |
| `ownerResponse`, `ownerResponseDate`, `ownerResponseRole` | The owner's or manager's reply, its date and the responder's role as Tripadvisor shows it |
| `reviewerName` | The reviewer's public display name |
| `productName` | On an attraction, the tour or ticket the review was written for, when it was not the attraction itself |
| `matchedPlace` | For name inputs, the place the name matched, with its city |

Of the reviewer, the scraper keeps only the display name Tripadvisor shows.
It does not collect usernames, profile links, hometowns, avatars or contribution counts.
It removes email addresses and phone numbers from review text, tips and owner responses.

In the 80-input test run, 3,960 of 9,948 reviews had an owner's response, 4,012 had sub-ratings, 3,478 had photos and 1,176 had a tip.

Example row, copied from that run:

```json
{
  "status": "ok",
  "input": "https://www.tripadvisor.com/Hotel_Review-g187323-d190694-Reviews-Hotel_Adlon_Kempinski_Berlin-Berlin.html",
  "placeId": "190694",
  "placeName": "Hotel Adlon Kempinski Berlin",
  "placeType": "hotel",
  "placeUrl": "https://www.tripadvisor.com/Hotel_Review-g187323-d190694-Reviews-Hotel_Adlon_Kempinski_Berlin-Berlin.html",
  "placeRating": 4.6,
  "placeReviewCount": 5215,
  "reviewId": "1045707285",
  "reviewUrl": "https://www.tripadvisor.com/ShowUserReviews-g187323-d190694-r1045707285-Hotel_Adlon_Kempinski_Berlin-Berlin.html",
  "rating": 5,
  "title": "Best Hotel in Berlin",
  "text": "Stayed at this hotel during 2025 7 times. Wonderful location, place to be when in Berlin. Staff very engaged. Doormen always very friendly. Their spa, pool, fitness is excellent and best in Berlin. Looking forward to my next stay in march.",
  "reviewDate": "2026-01-11T14:10:57.54Z",
  "visitDate": "2025-11",
  "tripType": "business",
  "language": "en",
  "originalLanguage": "en",
  "machineTranslated": false,
  "subRatings": {"Value": 4, "Rooms": 4, "Location": 5, "Cleanliness": 5, "Service": 5, "Sleep Quality": 4},
  "tip": null,
  "helpfulVotes": 0,
  "photoCount": 0,
  "photoUrls": [],
  "ownerResponse": "Thank you so much for sharing your lovely feedback.\n\nWe are delighted to hear that you enjoyed your stay again and it will be our pleasure welcoming you once more in March.\n\nKind regards from Berlin\n\nChristian Hirt\nManaging Director",
  "ownerResponseDate": "2026-01-15",
  "ownerResponseRole": "Inhaber",
  "reviewerName": "RJ F",
  "productName": null
}
```

An input that returns no reviews gives one free row with a `status` and a `message`:

| `status` | Meaning |
|---|---|
| `no_reviews` | The place has no reviews, none match your filters, or none are new since the last run |
| `invalid_url` | Not a Tripadvisor place page, or a city or list page, which has no reviews of its own |
| `not_found` | No search result matched the place name |
| `duplicate` | Another input in the run already reached this place, so its reviews are listed once |
| `unsupported_language` | Tripadvisor has no review filter for that language |
| `error`, `partial` | The place failed after retries on fresh IPs. `partial` keeps the reviews pushed before the failure |

### Input

```json
{
  "startUrls": [
    "https://www.tripadvisor.com/Hotel_Review-g60763-d93450-Reviews-Hyatt_Grand_Central_New_York-New_York_City_New_York.html",
    "https://www.tripadvisor.co.uk/Restaurant_Review-g60763-d424434-Reviews-Le_Bernardin-New_York_City_New_York.html",
    "188151"
  ],
  "placeNames": ["Louvre Museum Paris", "Shangri-La Paris"],
  "maxReviewsPerPlace": 500,
  "sortBy": "newest",
  "ratings": ["1", "2"],
  "languages": ["en"],
  "includeMachineTranslations": true,
  "tripTypes": ["business"],
  "visitMonths": ["1", "2"],
  "keyword": "breakfast",
  "publishedAfter": "2025-01-01"
}
```

| Input | What it does |
|---|---|
| `startUrls` | Place pages from any Tripadvisor country site, review page links, or numeric place IDs (the number after `-d` in the URL) |
| `placeNames` | Names as you would type them in Tripadvisor's search box, best with the city |
| `placeType` | Search names only among `hotel`, `restaurant` or `attraction` (attractions and tours). `any` by default |
| `maxReviewsPerPlace` | Stop after this many reviews per place. 100 by default. Set it high for the full history |
| `sortBy` | `newest` (default) or `detailed`, Tripadvisor's Detailed reviews order |
| `ratings` | Only these star ratings, `"1"` to `"5"` |
| `languages` | Only reviews in these languages, such as `en`, `de`, `fr`, `ja`, `zh-CN` or `zh-TW`. Empty means all languages |
| `includeMachineTranslations` | On by default. Off drops the reviews Tripadvisor machine-translated, free of charge |
| `tripTypes` | `family`, `couples`, `solo`, `business`, `friends` |
| `visitMonths` | Months of the visit, `"1"` for January to `"12"` for December, in any year |
| `keyword` | Only reviews that mention this word or phrase, through Tripadvisor's own review search |
| `publishedAfter`, `publishedBefore` | A date window: `2026-10-01`, an ISO time in UTC, or a relative value such as `7 days` |
| `onlyNewSinceLastRun` | Off by default. See "Run it on a schedule" |

Inputs copied from the old leading Tripadvisor reviews actor also work: `maxItemsPerQuery`, `reviewRatings`, `reviewsLanguages` and `lastReviewDate` are read as `maxReviewsPerPlace`, `ratings`, `languages` and `publishedAfter`, and `startUrls` takes `{"url": ...}` objects as well as plain strings.

#### Filters, as measured

- `"languages": ["de"]`, `"includeMachineTranslations": false` and `"ratings": ["1", "2"]` on a New York hotel, the Eiffel Tower and Munich's Hofbräuhaus returned 165 reviews, every one written in German with 1 or 2 stars.
- `"keyword": "breakfast"`, `"tripTypes": ["business"]`, `"visitMonths": ["1", "2"]` and `"publishedAfter": "2024-01-01"` on Hyatt Grand Central returned 5 reviews, each from a January or February business trip, mentioning breakfast, published in 2024 or later.

#### Languages and machine translations

With no language set, each review comes in the language it was written in, except some that Tripadvisor shows machine-translated.
In the 80-input test run that was 2,416 of 9,948 reviews, marked `machineTranslated: true` with the original language in `originalLanguage`.
With a language set, Tripadvisor adds reviews it translated into that language.
On Hyatt Grand Central, 19 of the first 20 German reviews were machine-translated from English.
Set `includeMachineTranslations` to `false` to keep only reviews written in that language.

#### Place names

Names go through Tripadvisor's own search box.
The scraper takes a result whose name and city hold most of the words you typed, preferring an exact name over a longer one, so `Eiffel Tower` finds the tower and not a tour of it.
In the test run, 8 of 12 names found the place meant, such as `Louvre Museum Paris`, `Le Jules Verne Paris` and `Burj Al Arab Jumeirah`.
Tripadvisor's search did not list the other 4 for the names we typed.
Katz's Delicatessen in New York and Raffles Singapore matched a similar name elsewhere, `Uluru Kata Tjuta National Park` matched the park's Cultural Centre, and `Tsukiji Outer Market Tokyo` matched a food walk with no reviews.
Check `matchedPlace` on each row, and use a URL when you need certainty.

### Run it on a schedule

A daily run with `onlyNewSinceLastRun: true` turns the scraper into a review alert for the places you follow.
It returns only reviews it has not returned to you before for the same place and filters, and nothing older than the newest one from the last run.
With the default newest-first order, each run stops at the first page with nothing new, so you pay only for new reviews.
Tripadvisor publishes a review after moderation, so the scraper looks 3 days behind the newest review it returned and skips the ones it returned before.
The memory is a key-value store named `tripadvisor-reviews-scraper-monitor` in your own Apify account, one record per place and filter set.

We ran the same 10 busy places twice on 21 Oct with `onlyNewSinceLastRun: true`, among them the Taj Mahal, Petra and the Blue Lagoon.
The first run returned 450 reviews from 9 of them, since Burj Khalifa was already in the memory from an earlier test.
The second, 25 minutes later, returned none, and a direct read of each place's newest reviews confirmed Tripadvisor had published nothing new in between.
At that moment the newest review on those 9 places was 13 hours to 5 days old, which is why the look-back is 3 days.

1. Set your input with `onlyNewSinceLastRun: true` and click **Save as a new task**.
2. On the task page, click **Actions**, then **Schedule**, and pick how often it runs.
   [Apify's schedules guide](https://docs.apify.com/actors/running/schedules) covers cron times and time zones.
3. On the task's **Integrations** tab, choose where each run's results go.

| Integration | What it does |
|---|---|
| [Slack](https://docs.apify.com/integrations/slack) | Posts a message to your channel when a run finishes |
| [Google Drive](https://docs.apify.com/integrations/drive) | Saves each run's results as a file in your Drive |
| [Webhook](https://docs.apify.com/integrations/webhooks) | Sends the finished run, with its dataset ID, to your own URL |
| [Make](https://docs.apify.com/integrations/make), [Zapier](https://docs.apify.com/integrations/zapier), [n8n](https://docs.apify.com/integrations/n8n) | Adds each new row to a Google Sheet, a CRM or a database |

Each review has a stable `reviewId`, so a sheet or database can skip rows it already holds.

### Price

| Tier | Per review | Per 1,000 reviews |
|---|---|---|
| No discount | $0.0004 | $0.40 |
| Bronze | $0.00035 | $0.35 |
| Silver | $0.0003 | $0.30 |
| Gold and above | $0.00025 | $0.25 |

There is no start fee.
Rows for places with no reviews, wrong URLs, names with no match, duplicates and failures are free.
Reviews dropped by `includeMachineTranslations: false` are free too.
Set a maximum charge per run in Apify, and the scraper stops when it is reached.

### How it works

The scraper reads Tripadvisor's public review list, the same data its place pages load, with no login and no account.
It needs no browser, so runs are fast: the 80-input test took 65 seconds.
Each place runs on its own residential IP, and a call that fails moves to a fresh IP, up to 6 tries.

### Limits

- City, hotel list and search result pages have no reviews of their own. Pass the page of one place.
- Name matching depends on what Tripadvisor's search box lists, as described above.
- `placeReviewCount` is Tripadvisor's own count, which can differ by a few from the reviews returned, as new reviews arrive. Hyatt Grand Central showed 15,043 and returned 15,048.
- Photo links are the ones Tripadvisor's review list carries, which can be fewer than `photoCount`.

### More from heyitsgautham

Other actors from the same account.

- [Hotel Reviews Scraper (Booking.com + Agoda)](https://apify.com/heyitsgautham/hotel-reviews-scraper) for Booking.com and Agoda hotel reviews, by URL or hotel name, with one hotel from both sites at once.
- [Trustpilot Reviews & TrustScore Scraper](https://apify.com/heyitsgautham/trustpilot-reviews-scraper) for Trustpilot reviews and each company's TrustScore, for any business on any Trustpilot country site.
- [Capterra Reviews Scraper](https://apify.com/heyitsgautham/software-reviews-scraper) for Capterra software reviews, by product URL or product name.
- [Google Trends Scraper: Related Queries & Trending Searches](https://apify.com/heyitsgautham/google-trends-scraper) for Google Trends interest over time, related queries and Trending Now.

# Actor input Schema

## `startUrls` (type: `array`):

Tripadvisor pages of hotels, restaurants, attractions or tours, from any Tripadvisor country site, such as https://www.tripadvisor.com/Hotel_Review-g60763-d93450-Reviews-Hyatt_Grand_Central_New_York-New_York_City_New_York.html. A review page link or the place's numeric ID (the number after -d) works too. City and list pages have no reviews of their own. Leave empty and use Place names below if you have no URLs.

## `placeNames` (type: `array`):

Names as you would type them into Tripadvisor's search box, best with the city, such as Le Bernardin New York or Louvre Museum Paris. The actor takes the search result that holds the name's words, and every row says which place that was in matchedPlace. A name with no matching result gives a free not_found row. A URL is always the most precise input.

## `placeType` (type: `string`):

Limits the name search to one kind of place, for names such as Burj Al Arab that are both a hotel and an attraction. URLs are not affected.

## `maxReviewsPerPlace` (type: `integer`):

Stops after this many reviews for each place. You pay only for reviews returned. Set it high, such as 100000, for a place's full history.

## `sortBy` (type: `string`):

Newest first is the site's Most recent order. Detailed is Tripadvisor's Detailed reviews order, longer reviews about themes first.

## `ratings` (type: `array`):

Only reviews with these ratings, from 1 to 5. Leave empty for all.

## `languages` (type: `array`):

Only reviews in these languages, as codes such as en, de, fr, es, it, ja, zh-CN or zh-TW. Leave empty for every language, each review in the language it was written in. With a language set, Tripadvisor also lists reviews it machine-translated into it, marked machineTranslated. Turn off the next option to drop those.

## `includeMachineTranslations` (type: `boolean`):

Off drops reviews Tripadvisor machine-translated, so you get only reviews written in the language you asked for. Dropped reviews are not charged.

## `tripTypes` (type: `array`):

Only reviews from these kinds of trip. Leave empty for all.

## `visitMonths` (type: `array`):

Only reviews of visits in these months, 1 for January to 12 for December, in any year. Leave empty for all.

## `keyword` (type: `string`):

Only reviews that mention this word or phrase, through Tripadvisor's own review search, such as breakfast or noise.

## `onlyNewSinceLastRun` (type: `boolean`):

For scheduled runs. Returns only reviews this actor has not returned to you before for the same place and filters, and nothing older than the newest one it returned last time. The first run returns the usual results and remembers them. Works best with newest-first order, where the run stops at the first page with nothing new. The memory is a key-value store named tripadvisor-reviews-scraper-monitor in your Apify account.

## `publishedAfter` (type: `string`):

Only reviews published on or after this date. Use a date such as 2026-10-01, an ISO time such as 2026-10-01T12:00:00Z (UTC), or a relative value such as 7 days, meaning the last 7 days. With newest-first order the run stops as soon as it reaches older ones.

## `publishedBefore` (type: `string`):

Only reviews published before this date, in the same formats. Together with Published after it makes a date window.

## `maxConcurrency` (type: `integer`):

How many places to scrape in parallel.

## `useProxy` (type: `boolean`):

Leave on. Each place runs on its own residential IP, and a failed call moves to a fresh one.

## Actor input object example

```json
{
  "startUrls": [
    "https://www.tripadvisor.com/Hotel_Review-g60763-d93450-Reviews-Hyatt_Grand_Central_New_York-New_York_City_New_York.html",
    "https://www.tripadvisor.com/Restaurant_Review-g60763-d424434-Reviews-Le_Bernardin-New_York_City_New_York.html",
    "https://www.tripadvisor.com/Attraction_Review-g187147-d188151-Reviews-Eiffel_Tower-Paris_Ile_de_France.html"
  ],
  "placeNames": [],
  "placeType": "any",
  "maxReviewsPerPlace": 20,
  "sortBy": "newest",
  "ratings": [],
  "languages": [],
  "includeMachineTranslations": true,
  "tripTypes": [],
  "visitMonths": [],
  "onlyNewSinceLastRun": false,
  "maxConcurrency": 5,
  "useProxy": true
}
```

# Actor output Schema

## `reviews` (type: `string`):

One item per review with the place, rating, title, text, review date, visit month, trip type, language, sub-ratings, photos, the owner's response and the reviewer's display name. Places that fail or have no reviews add one uncharged item with a status and message.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "startUrls": [
        "https://www.tripadvisor.com/Hotel_Review-g60763-d93450-Reviews-Hyatt_Grand_Central_New_York-New_York_City_New_York.html",
        "https://www.tripadvisor.com/Restaurant_Review-g60763-d424434-Reviews-Le_Bernardin-New_York_City_New_York.html",
        "https://www.tripadvisor.com/Attraction_Review-g187147-d188151-Reviews-Eiffel_Tower-Paris_Ile_de_France.html"
    ],
    "maxReviewsPerPlace": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("heyitsgautham/tripadvisor-reviews-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "startUrls": [
        "https://www.tripadvisor.com/Hotel_Review-g60763-d93450-Reviews-Hyatt_Grand_Central_New_York-New_York_City_New_York.html",
        "https://www.tripadvisor.com/Restaurant_Review-g60763-d424434-Reviews-Le_Bernardin-New_York_City_New_York.html",
        "https://www.tripadvisor.com/Attraction_Review-g187147-d188151-Reviews-Eiffel_Tower-Paris_Ile_de_France.html",
    ],
    "maxReviewsPerPlace": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("heyitsgautham/tripadvisor-reviews-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "startUrls": [
    "https://www.tripadvisor.com/Hotel_Review-g60763-d93450-Reviews-Hyatt_Grand_Central_New_York-New_York_City_New_York.html",
    "https://www.tripadvisor.com/Restaurant_Review-g60763-d424434-Reviews-Le_Bernardin-New_York_City_New_York.html",
    "https://www.tripadvisor.com/Attraction_Review-g187147-d188151-Reviews-Eiffel_Tower-Paris_Ile_de_France.html"
  ],
  "maxReviewsPerPlace": 20
}' |
apify call heyitsgautham/tripadvisor-reviews-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,heyitsgautham/tripadvisor-reviews-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/alBDUmaS82y5ZlLel/builds/TgnQuHl75RyZWfHgs/openapi.json
