Иллюстрация скрапера Tripadvisor ReviewsОтели, рестораны и достопримечательности

Скрапер Tripadvisor Reviews.

Собирайте открытые отзывы Tripadvisor об отеле, ресторане или достопримечательности и о местах, с которыми они конкурируют. Каждый отзыв приходит в оригинале с английским переводом Tripadvisor, чтобы сравнивать рынки в одной таблице.

Запустить на Apify

Как использовать этот скрапер.

Попробуйте эти сценарии для маркетинга, роста и изучения конкурентов.

01

Сравнить отель с конкурентами

Соберите отзывы за шесть месяцев о своём отеле и четырёх соседних конкурентах. Сравните средние оценки и частные оценки номеров, сервиса и цены, чтобы увидеть, в чём лидирует каждый.

Ведите сравнительную таблицу по объектам со ссылками на отзывы за каждой оценкой.

02

Узнать, о чём пишут иностранные гости

Соберите отзывы на всех языках и читайте их вместе через английские переводы. Ищите темы, которые чаще встречаются на одном рынке, например завтрак или заселение.

Подготовьте краткую сводку об опыте гостей по рынкам с цитатами из переведённых отзывов.

03

Проверить скорость и тон ответов

Посмотрите, на какие негативные отзывы ответила администрация, кто ответил и как быстро. Сравните с конкурентами и выберите удачные примеры.

Ведите журнал ответов с датами и ролью отвечающего.

ОТ ПЕРВОГО ЗАПУСКА К РЕГУЛЯРНОЙ РАБОТЕ

Первый запуск, шаг за шагом.

  1. Откройте Actor на Apify, выберите Input и перейдите в редактор JSON, чтобы вставить конфигурацию.
  2. Замените пример ссылкой Tripadvisor на свой отель, ресторан или достопримечательность либо на объект конкурента. Скопируйте её со страницы места в браузере.
  3. Для первого запуска оставьте maxReviewsPerPlace равным 100, а фильтры пустыми. Проверьте исходный текст, английский перевод и поля места, затем добавьте фильтры по оценке, языку, типу поездки или дате.
  4. Запустите Actor и посмотрите журнал. Проверьте распознанные цели и фильтры, прежде чем считать пустой результат отсутствием данных.
  5. Откройте Storage → Dataset, проверьте несколько записей и экспортируйте вложенные данные в JSON или таблицу для первого просмотра в CSV.
Конфигурация первого запуска
{
  "places": [
    "https://www.tripadvisor.com/Hotel_Review-g186338-d187591-Reviews-The_Ritz_London_Hotel-London_England.html"
  ],
  "maxReviewsPerPlace": 100
}

Вставьте это в редактор JSON Actor. Перед запуском замените примеры своими целями.

Посмотреть актуальные параметры на Apify

Выберите способ поиска.

Укажите ссылку Tripadvisor, ID места или его название. Ссылки и ID ведут к одному месту, а название может совпасть с несколькими. Каждый отзыв приходит в оригинале вместе с английским переводом Tripadvisor, и доступна вся история с самого первого отзыва.

Способ поискаКогда использоватьЧто меняется
Ссылки TripadvisorКогда использоватьВы уже настроили поиск на исходном сайте.Что меняетсяСсылка с tripadvisor.com, .co.uk, .de или любого другого сайта Tripadvisor даёт то же место и те же отзывы. Это самый понятный способ указать одно место.
ID местКогда использоватьВы точно знаете, по какому объекту хотите собрать данные.Что меняетсяID места это номер с буквой d в ссылке Tripadvisor, например d187591. Он короткий и стабильный, поэтому подходит для сохранённого списка.
Названия местКогда использоватьВы хотите найти подходящие результаты, прежде чем выбрать конкретные цели.Что меняетсяНазвание читает все места, которые находит поиск Tripadvisor, начиная с самых крупных. Ritz London даёт отель и несколько ресторанов Ritz. Проверьте place_name или вставьте ссылку, чтобы получить одно место.

Важное различие

Каждый отзыв приходит на языке оригинала, а английский перевод Tripadvisor находится в title_english и text_english. Читайте английские версии для сравнения рынков, а в отчётах цитируйте оригинал.

Сравнить с похожим скрейпером

Все параметры с объяснениями.

Используйте точные имена полей ниже в JSON. В форме Apify вводите элементы списков отдельно и соблюдайте числовые и логические типы.

Значение по умолчанию и предзаполнение различаются. Первое действует при пропуске настройки; второе является примером в форме Apify. Проверяйте цели и лимиты перед каждым запуском. У некоторых настроек нет значения по умолчанию в схеме. Всё равно нужно указать хотя бы одну поддерживаемую цель.

Цели и поисковые запросы1
places
СписокПример в форме: ["https://www.tripadvisor.com/Hotel_Review-g186338-d187591-Reviews-The_Ritz_London_Hotel-London_England.html"]

Одно место на строку: ссылка Tripadvisor на отель, ресторан, достопримечательность или тур с сайта любой страны, ID места (d187591) или его название. Название означает все места, которые поиск Tripadvisor находит по нему.

Рынки, даты и фильтры5
ratings
Список

Только отзывы с этими оценками, строками от 1 (Terrible) до 5 (Excellent). Для негативных отзывов выберите 1 и 2. Пустое значение означает все оценки.

languages
Список

Только отзывы на этих языках, кодами или названиями: en, de или French. Пустое значение означает все языки: каждый отзыв на языке оригинала вместе с английским переводом Tripadvisor.

dateFrom
Текст

Только отзывы, опубликованные в эту дату или позже. Укажите YYYY-MM-DD или относительный период, например 30 days или 6 months. При ежедневном или еженедельном расписании относительная дата собирает только новые отзывы.

tripTypes
Список

Только отзывы о поездках этих типов: Business, Couples, Family, Friends или Solo. Многие авторы не указывают тип поездки, поэтому фильтр отбрасывает и такие отзывы. Пустое значение означает все отзывы.

searchText
Текст

Только отзывы, где упоминается это слово или фраза, по собственному поиску отзывов Tripadvisor, например breakfast, noise или rooftop. Одна тема на запуск.

Лимиты, подробности и прокси3
maxReviewsPerPlace
Целое числоПример в форме: 100

Самые новые отзывы о каждом месте, не больше этого числа. Начните со 100. Пустое значение означает все отзывы, начиная с самого первого.

maxReviews
Целое число

Жёсткий лимит отзывов на весь запуск, по всем целям вместе. Используйте его, чтобы ограничить время и стоимость. Пустое значение означает отсутствие общего лимита; лимит на цель всё равно действует.

proxyConfiguration
ОбъектПо умолчанию: {"useApifyProxy":true,"apifyProxyGroups":["RESIDENTIAL"],"apifyProxyCountry":"US"}Пример в форме: {"useApifyProxy":true,"apifyProxyGroups":["RESIDENTIAL"],"apifyProxyCountry":"US"}

Резидентный прокси США работает по умолчанию. Tripadvisor отвечает резидентным выходам, прокси datacenter от Apify тоже работает, а другие настройки при отказе переключаются на резидентный.

Дополнительные настройки и восстановление2
resume
Истина или ложьПо умолчанию: true

Сохраняет прогресс примерно каждые 30 секунд для продолжения после перезапуска или миграции Apify. Обычно оставляйте включённым.

continueFromLastRun
Истина или ложьПо умолчанию: false

Продолжает незавершённую работу предыдущего запуска с теми же входными данными. Старые результаты остаются в его dataset. Для нового или регулярного сбора оставляйте false.

Справочник соответствует параметрам Actor. Перед изменением рабочего процесса проверьте актуальную форму. Посмотреть актуальные параметры на Apify.

Готовые конфигурации.

Каждый пример рассчитан на отдельный запуск. Начните с малого, проверьте результаты и затем расширяйте охват. Измените цели, страны и даты под свою задачу.

Сравнить три отеля

Соберите отзывы за шесть месяцев об одном отеле по ID места и о двух конкурентах по названию, до 300 на каждый. Перед сравнением проверьте place_name: название может совпасть и с ресторанами внутри отеля.

Сравнить три отеля
{
  "places": ["d187591", "The Savoy London", "The Langham London"],
  "dateFrom": "6 months",
  "maxReviewsPerPlace": 300
}

Разобрать негативные отзывы за год

Соберите отзывы на 1 и 2 звезды об одном ресторане за последние 12 месяцев. Проверьте, на какие ответила администрация и как быстро.

Разобрать негативные отзывы за год
{
  "places": ["d719141"],
  "ratings": ["1", "2"],
  "dateFrom": "12 months",
  "maxReviewsPerPlace": 200
}

Отследить одну тему на разных рынках

Соберите отзывы с упоминанием breakfast от семей и пар на английском, французском или немецком. Сравните, что пишет каждая группа, читая английские переводы вместе.

Отследить одну тему на разных рынках
{
  "places": ["d187591"],
  "searchText": "breakfast",
  "tripTypes": ["Family", "Couples"],
  "languages": ["en", "fr", "de"],
  "maxReviewsPerPlace": 200
}

Запускайте, проверяйте, экспортируйте, повторяйте.

Ожидайте одну строку на отзыв с оценкой, исходным текстом, английским переводом, датами, типом поездки, частными оценками, автором и ответом администрации, а также рейтингом и адресом места. Запись SUMMARY показывает, сколько отзывов у каждого места, сколько подошло под фильтры и сколько собрано. Данные каждого места сохраняются в записи PLACES в хранилище ключ-значение.

  1. Проверьте набор данных и запись SUMMARY. Сравните количество с лимитом, изучите ошибки и пропущенные входные данные, проверьте несколько исходных ссылок.
  2. Сохраняйте исходные ID и добавляйте collected_at и run_id. Используйте CSV для простых столбцов, JSON для списков и вложенных подробностей.
  3. Сохраните проверенную конфигурацию как Apify Task и задайте расписание. Для регулярных снимков оставьте continueFromLastRun false. Убирайте дубликаты по ID, сохраняя даты наблюдений.
  4. В Make или n8n дождитесь завершения запуска, получите dataset и сопоставьте поля с Sheets или хранилищем. Передавайте данные в Looker Studio через таблицу отчётов; преобразуйте и проверяйте модели с dbt.
  5. Этот же JSON работает с API Actors Apify. В Claude с Apify MCP назовите Actor, попросите проверить схему и заранее задайте цели, рынки и лимиты результатов.

Продолжение не создаёт новый снимок

resume защищает текущий запуск при перезапуске Apify. continueFromLastRun продолжает предыдущий запуск с той же конфигурацией; старые записи остаются в старом dataset. Объедините оба набора и увеличьте достигнутый лимит. Для наблюдения сегодняшних изменений начните новый сбор.

Открыть инструкции для Sheets, Claude, Looker и BigQuery
Запуск Actor через API

Сохраните одну из конфигураций выше в input.json. Задайте в терминале APIFY_TOKEN своим токеном Apify и отправьте файл как тело запроса.

Запустить сбор
curl --fail-with-body --request POST \
  --url "https://api.apify.com/v2/actors/jmlp~tripadvisor-reviews-scraper/runs" \
  --header "Authorization: Bearer $APIFY_TOKEN" \
  --header "Content-Type: application/json" \
  --data-binary @input.json

Ответ содержит ID запуска и defaultDatasetId, а не готовые результаты. Дождитесь успешного завершения, задайте DATASET_ID идентификатором набора и получите записи. Для больших наборов используйте limit и offset для постраничной выгрузки.

Получить набор данных
curl --fail-with-body \
  --url "https://api.apify.com/v2/datasets/$DATASET_ID/items?format=json" \
  --header "Authorization: Bearer $APIFY_TOKEN"

Документация API Apify для запуска и экспорта
Параметры экспорта набора данных

Если результаты выглядят неверно.

Меняйте по одному параметру, сохраняйте небольшой лимит и проверяйте сводку перед расширением сбора.

В результатах есть места, которые я не запрашивал.

Название читает все места, которые находит поиск Tripadvisor, начиная с самых крупных. Ritz London даёт отель и несколько ресторанов Ritz. Проверьте place_name или вставьте ссылку, чтобы получить одно место.

У многих отзывов нет частных оценок и типа поездки.

Частные оценки, тип поездки и дата поездки на Tripadvisor необязательны, и многие авторы их не указывают. Отсутствующие значения остаются пустыми и не угадываются. Указывайте, на скольких отзывах основано каждое среднее.

Источник возвращает пустые страницы или ошибки доступа.

Резидентный прокси США работает по умолчанию. Tripadvisor отвечает резидентным выходам, прокси datacenter от Apify тоже работает, а другие настройки при отказе переключаются на резидентный.

Запуск завершился успешно, но данных нет

Успешный статус означает завершение работы Actor, а не наличие данных у источника. Проверьте SUMMARY.inputProblem, SUMMARY.problem и журнал: возможны отсутствующие цели, неподдерживаемые фильтры или отклонённые запросы. Попробуйте известную цель с меньшим числом фильтров.

Записей меньше, чем ожидалось

Проверьте общие лимиты, лимиты поиска и страниц, охват и дедупликацию. Несколько запросов могут найти одну запись. Счётчик источника может включать недоступные публично данные. Проверьте незавершённые задачи, прежде чем считать набор полным.

Используйте результаты в своих инструментах.

Google Sheets

Добавляйте review_id, place_name, rating, published_at, trip_type и language. Заведите столбцы для темы и дальнейших действий и отфильтруйте негативные отзывы без ответа.

Читать инструкцию
Claude + MCP

Попросите Claude сравнить, что гости пишут о каждом месте, используя text_english и ссылаясь на review_url. Пусть он отметит выводы, основанные лишь на нескольких отзывах.

Читать инструкцию
Looker Studio

Постройте график средней оценки и частных оценок по месяцам для каждого места. Добавьте фильтры по типу поездки и языку и показывайте, на скольких отзывах основана каждая цифра.

Читать инструкцию
BigQuery + dbt

Храните отзывы по review_id со временем сбора. Разверните subratings в дочернюю таблицу, а снимки мест храните отдельно, чтобы отслеживать изменения рейтинга.

Читать инструкцию
Скопировать запрос для Claude
Запрос для Claude + Apify MCP
Изучите jmlp/tripadvisor-reviews-scraper, затем соберите до 200 отзывов за последние шесть месяцев для https://www.tripadvisor.com/Hotel_Review-g186338-d187591-Reviews-The_Ritz_London_Hotel-London_England.html. Кратко опишите, что гости хвалят и критикуют, по text_english, указывайте review_url для каждого пункта и сообщите долю ответов на отзывы с 1 и 2 звёздами.

Какие поля вы получите.

Сохраняйте время сбора и исходные ID: они нужны для проверки источника результата и сравнения с последующими запусками.

Прежде чем делать выводы

Отзывы пишут гости, которые сами решили это сделать, поэтому они не являются репрезентативным опросом всех посетителей. Частные оценки и тип поездки необязательны, и во многих отзывах их нет. Английские версии это машинный перевод Tripadvisor, поэтому перед цитированием проверяйте оригинал. Название может совпасть с несколькими местами, так что для одного конкретного места вставляйте ссылку.

review_id / review_url
Стабильный ID и открытая страница отзыва.
rating / title / text / language
Оценка и отзыв в оригинале и его язык.
title_english / text_english
Английский перевод Tripadvisor для отзывов на других языках.
travel_date / trip_type / subratings
Когда была поездка, её тип и оценки по аспектам.
reply_text / reply_author
Ответ администрации и роль отвечающего.
place_name / place_rating / place_review_count
Место и его общий рейтинг на момент сбора.

Частые вопросы.

Нужен ли аккаунт Tripadvisor?

Нет. Скрапер читает открытые отзывы Tripadvisor как посетитель без входа. Для запуска нужен аккаунт Apify.

Почему у некоторых отзывов нет английской версии?

text_english заполняется только для отзывов на другом языке. Англоязычным отзывам перевод не нужен.

Источник и актуальные сведения: Actor Tripadvisor Reviews от JMLP на Apify.

Другие скраперы,
которые могут пригодиться.

Поговорим о
вашем проекте.

Расскажите, что нужно собрать или понять. Я помогу со скрапером на заказ, конвейером или анализом.

Обсудить проект