ホテル、レストラン、観光スポットを入力すると、Web UnlockerがそのTripadvisorのページを返します。評価、順位、スコア、オーナーの返信付きの口コミが1ページに10件、課金は1ページ分です。読み込みに失敗したページは無料です。
無料リクエスト1,000件 · 課金は成功時のみ · 195以上の国 · Claude対応
チームについて簡単にご記入いただくと、次の内容をお届けします。
Tripadvisorのホテルページには口コミが10件、レストランページには15件、評価とオーナーの返信とともに載っており、Web Unlockerは1ページとして課金します。ApifyやBright DataのTripadvisor口コミスクレイパーは、口コミを1件ずつ課金します。
難しいページも
簡単なページと同じ料金です。
読み込みに失敗したページは無料です。ボストンのThe Godfrey Hotelの、英語で書かれた口コミ9,260件は926ページで、$0.91です。
Tripadvisorの口コミ10,000件の料金
口コミ10件のホテルページ1,000件、公開価格で
GrowthプランのWeb Unlocker、1,000ページあたり$0.98。他社は口コミごとに課金します。Bright Dataは従量課金、Apifyで最も使われているアクターはApifyの$19プラン、Outscraperは無料の口コミ500件を超えた分の価格です。
ご自身のホテルで実行しますか?APIキーと無料リクエストを入手しましょう。
Tripadvisorスクレイピングのテスト:1ページにつきリクエスト1回、再試行なしで100ページを取得しました。ボストンから東京までのホテル、ホテルの過去にさかのぼる口コミページ、レストラン、観光スポット、都市の一覧です。返ってきた結果と、その速さは次のとおりです。
返ってこなかったページは$0。
課金されるのはページで、試行回数ではありません。
Tripadvisorはすべての訪問者にすべての口コミを表示しており、ホテルページには10件、レストランページには15件ずつ載り、各ページが次のページにリンクしています。Tripadvisorスクレイパーはそのリンクを最後のページまでたどります。ボストンのThe Godfrey Hotelなら、2016年1月の最初の口コミまで926ページです。
Tripadvisor自身のAPIが返すのは、契約で決まる範囲の口コミです。
ページにはすべての口コミが載っています。
TripadvisorのWebスクレイピングは1ページにつきリクエスト1回。ホテル、レストラン、観光スポットのTripadvisorアドレスを送るとページが返るので、評価、順位、口コミを読み取ります。各ページは次のページにリンクしているため、すべての口コミを1つのループで取得できます。
上のフォームにご記入ください。キーは1営業日以内にメールで届きます。
ブラウザで開いたときのTripadvisorページのアドレスと、ページを開く国を指定します。
ページには評価、順位、10〜15件の口コミが載っており、それぞれに評価、本文、日付、オーナーの返信が付いています。
pip install requestsGOLOGIN_SCRAPING_API_KEY=your_key python tripadvisor_reviews.pyhttps://parsing.webunlocker.gologin.com/v1/scrapeimport json
import os
import re
import time
from html import unescape
import requests
address = "https://www.tripadvisor.com/Hotel_Review-g60745-d8316858-Reviews-The_Godfrey_Hotel_Boston-Boston_Massachusetts.html"
def scrape(url):
for attempt in range(3):
response = requests.get(
"https://parsing.webunlocker.gologin.com/v1/scrape",
headers={"apikey": os.environ["GOLOGIN_SCRAPING_API_KEY"]},
params={
"url": url if attempt == 0 else f"{url}?_r={int(time.time())}",
"geo": "us",
"format": "json",
},
timeout=120,
)
html = response.json().get("data", {}).get("html", "")
if "ShowUserReviews-" in html:
return html
return html
def text(markup):
return unescape(re.sub(r"\s+", " ", re.sub(r"<[^>]+>", " ", markup.replace("<!-- -->", "")))).strip()
def first(pattern, source):
match = re.search(pattern, source)
return text(match.group(1)) if match else None
html = scrape(address)
place = {}
for block in re.findall(r'<script[^>]*application/ld\+json[^>]*>(.*?)</script>', html, re.S):
data = json.loads(block)
if "aggregateRating" in data:
place = data
break
cards = re.split(r'data-test-target="HR_CC_CARD"|data-automation="reviewCard"', html)[1:]
reviews = []
for card in cards:
title = first(r'<a[^>]+ShowUserReviews[^>]+>(.*?)</a>', card)
if not title:
continue
body = card.split("</h3>", 1)[1]
body = body[body.find('data-test-target="review-body"'):] if 'data-test-target="review-body"' in body else body
reviews.append({
"author": first(r'href="/Profile/[^"]+"[^>]*>(?:<span[^>]*>)?([^<]+)<', card),
"rating": first(r"<title[^>]*>([\d.]+) of 5 bubbles</title>", card),
"title": title,
"text": text(re.split(r"<button|Date of stay:|<div[^>]*>Written ", body)[0]),
"date_of_stay": first(r"Date of stay:(?:<[^>]+>)+([^<]+)<", card),
"owner_reply": "Response from " in card,
})
next_page = re.search(r'aria-label="Next page" href="([^"]+)"', html)
print(json.dumps({
"name": place.get("name"),
"rating": place.get("aggregateRating", {}).get("ratingValue"),
"reviews_total": place.get("aggregateRating", {}).get("reviewCount"),
"ranking": first(r"(#[\d,]+ of [\d,]+ [^<\"]+?)(?= and rated|\"|<)", html),
"reviews": reviews,
"next_page": f"https://www.tripadvisor.com{unescape(next_page.group(1))}" if next_page else None,
}, indent=2, ensure_ascii=False))GOLOGIN_SCRAPING_API_KEY=your_key node every-review.mjshttps://parsing.webunlocker.gologin.com/v1/scrapeimport { writeFileSync } from 'node:fs';
let address = 'https://www.tripadvisor.com/Restaurant_Review-g60763-d33984348-Reviews-Olio_e_Piu-New_York_City_New_York.html';
const scrape = async (url) => {
for (let attempt = 0; attempt < 3; attempt += 1) {
const params = new URLSearchParams({ url: attempt ? `${url}?_r=${Date.now()}` : url, geo: 'us', format: 'json' });
const response = await fetch(`https://parsing.webunlocker.gologin.com/v1/scrape?${params}`, {
headers: { apikey: process.env.GOLOGIN_SCRAPING_API_KEY },
});
const html = (await response.json()).data?.html ?? '';
if (html.includes('ShowUserReviews-')) return html;
}
return '';
};
const text = (markup) =>
markup
.replace(/<[^>]+>/g, ' ')
.replace(/&/g, '&')
.replace(/'|'/g, "'")
.replace(/"/g, '"')
.replace(/\s+/g, ' ')
.trim();
const reviews = new Map();
let pages = 0;
while (address) {
const html = await scrape(address);
pages += 1;
for (const card of html.split(/data-test-target="HR_CC_CARD"|data-automation="reviewCard"/).slice(1)) {
const id = card.match(/ShowUserReviews-g\d+-d\d+-r(\d+)/)?.[1];
if (!id) continue;
const at = card.indexOf('data-test-target="review-body"');
const body = at >= 0 ? card.slice(at) : card.slice(card.indexOf('</h3>'));
reviews.set(id, {
id,
rating: card.match(/<title[^>]*>([\d.]+) of 5 bubbles<\/title>/)?.[1],
title: text(card.match(/<a[^>]+ShowUserReviews[^>]+>([\s\S]*?)<\/a>/)?.[1] ?? ''),
written: card.match(/Written (?:<!-- -->)?([^<]+)</)?.[1] ?? '',
text: text(body.slice(body.indexOf('>') + 1).split(/<button|Date of stay:|<div[^>]*>Written /)[0]),
});
}
const next = html.match(/aria-label="Next page" href="([^"]+)"/)?.[1];
address = next ? `https://www.tripadvisor.com${next.replace(/&/g, '&')}` : null;
}
const csv = (value) => `"${String(value).replace(/"/g, '""')}"`;
const rows = [...reviews.values()].map((r) => [r.id, r.rating, r.written, r.title, r.text].map(csv).join(','));
writeFileSync('reviews.csv', ['id,rating,written,title,text', ...rows].join('\n'));
console.log(`${reviews.size} reviews from ${pages} pages saved to reviews.csv`);GOLOGIN_SCRAPING_API_KEY=your_key node city-hotels.mjshttps://parsing.webunlocker.gologin.com/v1/scrapeconst address = 'https://www.tripadvisor.com/Hotels-g60745-Boston_Massachusetts-Hotels.html';
const params = new URLSearchParams({ url: address, geo: 'us', format: 'json' });
const response = await fetch(`https://parsing.webunlocker.gologin.com/v1/scrape?${params}`, {
headers: { apikey: process.env.GOLOGIN_SCRAPING_API_KEY },
});
const html = (await response.json()).data?.html ?? '';
const hotels = [];
for (const [, json] of html.matchAll(/<script[^>]*application\/ld\+json[^>]*>([\s\S]*?)<\/script>/g)) {
const data = JSON.parse(json);
if (data['@type'] !== 'ItemList') continue;
for (const { item } of data.itemListElement) {
hotels.push({
name: item.name,
rating: item.aggregateRating?.ratingValue,
reviews: item.aggregateRating?.reviewCount,
phone: item.telephone,
address: item.address?.streetAddress,
page: item.url.replace(/\?.*$/, '').replace('/HotelHighlight-', '/Hotel_Review-'),
});
}
}
console.table(hotels.map(({ name, rating, reviews, phone }) => ({ name, rating, reviews, phone })));
console.log(`${hotels.length} hotels, each with its page for the reviews`);同じ施設のGoogle側のデータも必要ですか?Googleレビュースクレイパーが、店舗のGoogleの評価、星別の内訳、上位レビューを同じ方法で返します。
2026年8月31日にContent APIに代わった公式API、Apifyで最も使われている口コミスクレイパー、Outscraper、Web Unlocker。Tripadvisorのデータをスクレイピングするのに、それぞれ何に課金し、何を保存できるかは次のとおりです。
| 必要なもの | Tripadvisor API | Apify | Outscraper | |
|---|---|---|---|---|
| 課金の対象 | 1ページ | 施設ごと、コールごと | 口コミごと | 口コミごと |
| 最初の口コミ付きの1,000施設 | $0.98 | $15 | $19 | $38 |
| 施設のすべての口コミ | あり、1ページずつ | 契約で決まる範囲 | あり | あり |
| 収集したデータの保存 | あり | ロケーションIDのみ | あり | あり |
| 無料で開始 | 1,000ページ | 1,000コール、1回のみ | 月$5 | 口コミ500件 |
| 他のどのサイトでも同じ料金 | あり | なし | なし | なし |
| ページ全体をHTMLまたはMarkdownで | あり | なし | なし | なし |
先に施設の一覧が必要ですか?Tripadvisorの都市の一覧には1ページにホテルやレストランが30件載っており、上の「都市のホテル」タブがそれを読み取ります。Web Unlockerなら、ほかのどのサイトも同じ方法で返します。
1つのアカウント、1つのプロキシネットワーク、1つのエコシステム。用途に合った製品をお選びください。
ほかのサイトの口コミもスクレイピングしますか?GoogleレビューとGoogle Mapsのスクレイパー、またはすべてのWebスクレイピングツールをご覧ください。
施設のTripadvisorアドレスをWeb Unlockerに送ります。本物のブラウザでページを開き、評価、都市内の順位、評価の内訳、口コミとともに返します。口コミはホテルページに10件、レストランページに15件で、それぞれに投稿者、評価、タイトル、本文、日付、オーナーの返信が付いています。各ページは次のページにリンクしており、上のコードはそのリンクを最後のページまでたどります。
requestsライブラリでページのアドレスをWeb Unlockerに送り、ページから各項目を読み取ります。上のPythonタブは完全なスクリプトで、実際のAPIでテスト済みです。
Tripadvisorは2026年8月31日にContent APIを終了し、そのキーは使えなくなりました。後継のTripadvisor Terraは、口コミ数に上限のあるセルフサービスのパッケージを販売しており、口コミは契約で決まる範囲から提供されます。また、利用規約で保存が認められているのはロケーションIDだけです。Web Unlockerは公開ページそのものを返し、すべての口コミを1ページずつ取得できます。
Tripadvisor Terraは、アカウントごとに最初の1,000件の課金対象コールを1回だけ無料で提供し、その後はコールのたびに施設1件あたり$0.015を課金します。量が多いほど単価は下がります。Web Unlockerは1,000ページあたり$0.98で、ホテルページ1つに口コミが10件載っています。
最初だけです。Tripadvisor Terraは各アカウントに最初の1,000件の課金対象コールを1回だけ提供し、それ以降のコールはすべて有料です。毎月の無料コールがあった旧Content APIは、2026年8月31日に終了しました。Web Unlockerには1,000件の無料リクエストが付き、ホテルの口コミ10,000件に相当します。
旧Content APIのキーは2026年8月31日に使えなくなりました。新しいキーはTripadvisor Terraのパッケージに付いてきます。Web Unlockerのキーは上のフォームから1営業日以内に届き、ご自身の施設で試せる無料リクエストが付いています。
はい。Tripadvisorの口コミスクレイパーにサインインは不要です。Tripadvisorはすべての口コミをすべての訪問者に1ページずつ表示しています。ボストンのThe Godfrey Hotelは、英語で書かれた口コミ9,260件を926ページに載せており、最後のページは2016年1月までさかのぼります。全部で$0.91です。
ホテルや観光スポットのページで10件、レストランのページで15件です。加えて、施設の評価、口コミ数、都市内の順位、評価の内訳、滞在の項目ごとのスコアが取得できます。
はい、施設が返信している場合は、返信者、日付、全文が取得できます。The Godfrey Hotelの口コミの2ページ目では、10件すべてに返信がありました。
はい。都市の一覧ページには30件の施設が、評価、口コミ数、価格帯、電話番号、住所、地図上の位置とともに載っており、各施設の口コミはもう1ページで取得できます。上の「都市のホテル」タブは、1ページからボストンのホテル30件を一覧にします。
Tripadvisor.comには英語で書かれた口コミが載っています。各国のサイトにはその国の言語で書かれた口コミが載っており、tripadvisor.frではThe Godfrey Hotelの口コミが2,061件表示されます。Web Unlockerはそれらのページも、195以上の国から同じように返します。
上の「すべての口コミ」タブがreviews.csvを書き出します。口コミ1件につき1行で、評価、日付、タイトル、本文が入ります。または、Gologin scraping skillを使ってページをClaudeに渡し、CSVを依頼してください。
1,000ページあたり$1未満で、どのページも同じ料金です。ホテルの口コミ10,000件で$0.98です。読み込みに失敗したページは無料です。プランは50,000リクエストで月$49からです。
はい、まずは無料で試せます。Web Unlockerには1,000件の無料リクエストが付き、ホテルの口コミ10,000件に相当します。
いいえ。Web Unlockerが195以上の国からIPを選び、選んだ国からページを開きます。
目的によります。Apify、Bright Data、Outscraperは完成した行を提供し、口コミごとに課金します。Web Unlockerは、ページ全体を1ページ1つの料金で返すTripadvisorスクレイパーで、順位、評価の内訳、オーナーの返信も手元に残り、自分の方法で解析できます。
サイト内部のデータフィードを呼び出すスクレイパーは、Tripadvisorがそのフィードを変更するたびに修正が必要です。Apifyで最も使われているTripadvisorのアクターは、2026年10月にそうした修正を3回記録しています。Web Unlockerは訪問者が見るページを返します。
Tripadvisorのページは公開されており、ログインなしで読み込めます。Web Unlockerは訪問者のブラウザと同じようにページを読み込んで返します。何を収集し、どう使うかはお客様の判断ですので、プロジェクトに適用されるルールに照らして確認してください。
チームについて簡単にご記入いただくと、次の内容をお届けします。