Nhập một khách sạn, nhà hàng hoặc điểm tham quan và Web Unlocker trả về trang Tripadvisor của nó: xếp hạng, thứ hạng, điểm số và các đánh giá kèm phản hồi của chủ sở hữu, 10 đánh giá mỗi trang, tính như một trang. Trang tải không được thì không tốn phí.
1.000 yêu cầu miễn phí · Chỉ tính phí khi thành công · 195+ quốc gia · Sẵn sàng cho Claude
Trang Tripadvisor mất 5 đến 30 giây để tải. Hệ thống vẫn đang xử lý, bạn không cần nhấp lại.
Sẵn sàng cho các địa điểm của riêng bạn? Nhận API key hoặc đặt lịch demo.
Hãy cho chúng tôi biết đôi nét về đội ngũ của bạn để nhận:
Một trang khách sạn trên Tripadvisor chứa 10 đánh giá và một trang nhà hàng chứa 15, kèm xếp hạng và phản hồi của chủ sở hữu, và Web Unlocker tính phí nó như một trang. Một scraper đánh giá Tripadvisor trên Apify hoặc Bright Data tính phí từng đánh giá.
Một trang khó có giá
bằng một trang dễ.
Trang tải không được thì không tốn phí. 9.260 đánh giá tiếng Anh của The Godfrey Hotel ở Boston là 926 trang: $0.91.
Chi phí cho 10.000 đánh giá Tripadvisor
1.000 trang khách sạn, mỗi trang 10 đánh giá, theo giá công bố
Web Unlocker ở gói Growth, $0.98 cho 1.000 trang. Các bên còn lại tính phí từng đánh giá: Bright Data ở giá pay-as-you-go, actor được dùng nhiều nhất trên Apify ở gói $19 của Apify, Outscraper sau 500 đánh giá miễn phí.
Sẵn sàng chạy nó trên các khách sạn của riêng bạn? Nhận API key và các yêu cầu miễn phí.
Bài kiểm tra thu thập dữ liệu Tripadvisor của chúng tôi: một trăm trang, mỗi trang một yêu cầu, không thử lại: khách sạn từ Boston đến Tokyo, các trang đánh giá sâu trong lịch sử của một khách sạn, nhà hàng, điểm tham quan và danh sách theo thành phố. Đây là những gì trả về, và nhanh đến đâu.
Trang không trả về thì tốn $0.
Bạn trả tiền cho trang, không phải cho số lần thử.
Tripadvisor hiển thị mọi đánh giá cho mọi khách truy cập, 10 đánh giá trên một trang khách sạn và 15 trên một trang nhà hàng, và mỗi trang liên kết tới trang tiếp theo. Scraper Tripadvisor của bạn đi theo liên kết đó tới trang cuối: The Godfrey Hotel ở Boston có 926 trang, ngược về đánh giá đầu tiên vào tháng 1 năm 2016.
API riêng của Tripadvisor cung cấp một nhóm đánh giá do hợp đồng quy định.
Trang hiển thị mọi đánh giá.
Thu thập dữ liệu web Tripadvisor chỉ cần một yêu cầu cho mỗi trang: gửi địa chỉ Tripadvisor của một khách sạn, nhà hàng hoặc điểm tham quan, nhận lại trang, đọc xếp hạng, thứ hạng và các đánh giá. Mỗi trang liên kết tới trang tiếp theo, nên mọi đánh giá chỉ cách bạn một vòng lặp.
Điền biểu mẫu ở trên. Key sẽ được gửi qua email trong vòng một ngày làm việc.
Trang Tripadvisor của nó, đúng như khi mở trong trình duyệt của bạn, và quốc gia để mở trang từ đó.
Trang có xếp hạng, thứ hạng và 10 đến 15 đánh giá, mỗi đánh giá có số sao, nội dung, ngày và phản hồi của chủ sở hữu.
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`);Cần cả phía Google của cùng các địa điểm? Scraper đánh giá Google trả về xếp hạng Google, số lượng ở từng mức sao và các đánh giá hàng đầu của một địa điểm theo cùng cách.
API chính thức đã thay thế Content API từ ngày 31 tháng 8 năm 2026, scraper đánh giá được dùng nhiều nhất trên Apify, Outscraper và Web Unlocker: mỗi bên tính phí gì để thu thập dữ liệu Tripadvisor và cho phép bạn giữ lại những gì.
| Bạn cần gì | Tripadvisor API | Apify | Outscraper | |
|---|---|---|---|---|
| Bạn trả tiền cho | Một trang | Mỗi địa điểm, mỗi lệnh gọi | Mỗi đánh giá | Mỗi đánh giá |
| 1.000 địa điểm kèm các đánh giá đầu tiên | $0.98 | $15 | $19 | $38 |
| Mọi đánh giá của một địa điểm | Có, từng trang một | Nhóm do hợp đồng quy định | Có | Có |
| Lưu trữ dữ liệu bạn thu thập | Có | Chỉ ID địa điểm | Có | Có |
| Miễn phí để bắt đầu | 1.000 trang | 1.000 lệnh gọi, một lần | $5 mỗi tháng | 500 đánh giá |
| Cùng mức giá trên mọi trang web khác | Có | Không | Không | Không |
| Toàn bộ trang ở dạng HTML hoặc Markdown | Có | Không | Không | Không |
Cần danh sách địa điểm trước? Một danh sách theo thành phố trên Tripadvisor chứa 30 khách sạn hoặc nhà hàng mỗi trang, và tab Khách sạn thành phố ở trên đọc nó. Web Unlocker trả về bất kỳ trang web nào khác theo cùng cách.
Một tài khoản, một mạng proxy, một hệ sinh thái. Chọn sản phẩm phù hợp với công việc.
Thu thập đánh giá ở nơi khác nữa? Xem các scraper đánh giá Google và Google Maps, hoặc mọi công cụ thu thập dữ liệu web.
Gửi địa chỉ Tripadvisor của địa điểm tới Web Unlocker. Nó mở trang trong một trình duyệt thật và trả về trang kèm xếp hạng, thứ hạng trong thành phố, phân bố xếp hạng và các đánh giá: 10 trên một trang khách sạn, 15 trên một trang nhà hàng, mỗi đánh giá có tác giả, số sao, tiêu đề, nội dung, ngày và phản hồi của chủ sở hữu. Mỗi trang liên kết tới trang tiếp theo, và đoạn code ở trên đi theo liên kết đó tới trang cuối.
Gửi địa chỉ trang tới Web Unlocker bằng thư viện requests và đọc các trường từ trang. Tab Python ở trên là một script hoàn chỉnh, đã được kiểm thử trên API thật.
Tripadvisor đã đóng Content API vào ngày 31 tháng 8 năm 2026, và các key của nó ngừng hoạt động. Sản phẩm thay thế, Tripadvisor Terra, bán một gói tự phục vụ với số lượng đánh giá có hạn, lấy từ một nhóm do hợp đồng của bạn quy định, và điều khoản của nó chỉ cho phép bạn lưu trữ ID địa điểm. Web Unlocker trả về chính trang công khai, với mọi đánh giá, từng trang một.
Tripadvisor Terra miễn phí 1.000 lệnh gọi tính phí đầu tiên, một lần cho mỗi tài khoản, sau đó tính $0.015 cho mỗi địa điểm trong mỗi lệnh gọi, rẻ hơn khi dùng nhiều. Web Unlocker tính $0.98 cho 1.000 trang, và một trang khách sạn chứa 10 đánh giá.
Chỉ để bắt đầu: Tripadvisor Terra cho mỗi tài khoản 1.000 lệnh gọi tính phí đầu tiên một lần, và mọi lệnh gọi sau đó đều trả phí. Content API cũ, với các lệnh gọi miễn phí hằng tháng, đã đóng vào ngày 31 tháng 8 năm 2026. Web Unlocker đi kèm 1.000 yêu cầu miễn phí, tức là 10.000 đánh giá khách sạn.
Key của Content API cũ đã ngừng hoạt động vào ngày 31 tháng 8 năm 2026; key mới đi kèm một gói Tripadvisor Terra. Key Web Unlocker đến từ biểu mẫu ở trên trong vòng một ngày làm việc, kèm các yêu cầu miễn phí để thử trên chính các địa điểm của bạn.
Có, và một scraper đánh giá Tripadvisor không cần đăng nhập để làm việc đó: Tripadvisor liệt kê mọi đánh giá cho mọi khách truy cập, từng trang một. The Godfrey Hotel ở Boston hiển thị 9.260 đánh giá tiếng Anh trên 926 trang, và trang cuối cùng ngược về tháng 1 năm 2016. Tất cả có giá $0.91.
10 trên một trang khách sạn hoặc điểm tham quan và 15 trên một trang nhà hàng, cùng xếp hạng, số lượng đánh giá, thứ hạng trong thành phố, phân bố xếp hạng và điểm cho từng khía cạnh của kỳ lưu trú.
Có, mỗi khi địa điểm đã phản hồi: người phản hồi, ngày và toàn văn. Ở trang thứ hai trong các đánh giá của The Godfrey Hotel, cả 10 đánh giá đều có phản hồi.
Có. Một trang danh sách theo thành phố chứa 30 địa điểm kèm xếp hạng, số lượng đánh giá, mức giá, số điện thoại, địa chỉ và vị trí trên bản đồ, và mỗi địa điểm là thêm một trang cho các đánh giá của nó. Tab Khách sạn thành phố ở trên liệt kê 30 khách sạn ở Boston từ một trang.
Tripadvisor.com liệt kê các đánh giá bằng tiếng Anh. Mỗi trang theo quốc gia liệt kê các đánh giá bằng ngôn ngữ của nó: trên tripadvisor.fr, The Godfrey Hotel hiển thị 2.061 đánh giá như vậy. Web Unlocker trả về các trang đó theo cùng cách, từ hơn 195 quốc gia.
Tab Mọi đánh giá ở trên ghi ra file reviews.csv: mỗi đánh giá một dòng, kèm số sao, ngày, tiêu đề và nội dung. Hoặc đưa trang cho Claude cùng Gologin scraping skill và yêu cầu một file CSV.
Dưới $1 cho 1.000 trang, và cùng một mức giá cho mọi trang: 10.000 đánh giá khách sạn có giá $0.98. Trang tải không được thì không tốn phí. Các gói bắt đầu từ $49 mỗi tháng cho 50.000 yêu cầu.
Có, để bắt đầu: Web Unlocker đi kèm 1.000 yêu cầu miễn phí, đủ cho 10.000 đánh giá khách sạn.
Không. Web Unlocker chọn IP cho bạn, ở hơn 195 quốc gia, và mở trang từ quốc gia bạn chọn.
Tùy vào nhu cầu của bạn. Apify, Bright Data và Outscraper bán các dòng dữ liệu làm sẵn và tính phí từng đánh giá. Web Unlocker là một scraper Tripadvisor trả về toàn bộ trang với một mức giá cho mỗi trang, kèm thứ hạng, phân bố xếp hạng và phản hồi của chủ sở hữu, và bạn tự phân tích theo cách của mình.
Các scraper gọi tới nguồn dữ liệu nội bộ của trang web cần được sửa mỗi khi Tripadvisor thay đổi một nguồn: actor Tripadvisor được dùng nhiều nhất trên Apify đã ghi nhận ba lần sửa như vậy trong tháng 10 năm 2026. Web Unlocker trả về trang mà một người dùng nhìn thấy.
Trang Tripadvisor là công khai và tải được mà không cần đăng nhập. Web Unlocker tải nó giống như trình duyệt của một người dùng và trả về trang đó. Bạn thu thập gì và dùng ra sao là quyết định của bạn, vì vậy hãy đối chiếu với các quy định áp dụng cho dự án của bạn.
Hãy cho chúng tôi biết đôi nét về đội ngũ của bạn để nhận: