To get Tripadvisor reviews and hotel data programmatically, use Scavio's Tripadvisor API. POST /api/v1/tripadvisor/locations turns a hotel's name into its ids, /location returns the rating, the five-bucket histogram, per-aspect scores, ranking, amenities and the 10 newest reviews in one call, and /reviews pages back through the rest, 10 a page for hotels and 15 for restaurants. /search lists a city's hotels, restaurants or attractions in Tripadvisor's own order. Every call costs 2 credits, about $0.004 on the Growth plan billed yearly.
Tripadvisor's own API was built to display a few licensed reviews, not to read a history: the legacy Content API returned up to 5 recent reviews per location and was retired on August 31, 2026, and its Terra replacement returns a fixed pool of recent reviews set by contract. The steps below use Hôtel Malte - Astotel in Paris, captured on October 27, 2026.
Step 1: Resolve the hotel's name
curl -s https://api.scavio.dev/api/v1/tripadvisor/locations \
-H "Authorization: Bearer $SCAVIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"query": "Hotel Malte Paris", "limit": 5}'Tripadvisor keys everything on its own ids, so this call comes first. It answered in 0.9 s; the first row, as captured:
{
"pos": 1,
"type": "HOTEL",
"name": "Hotel Malte - Astotel, Paris, Ile-de-France, France",
"geo_id": "187147",
"location_id": "228694",
"url": "https://www.tripadvisor.com/Hotel_Review-g187147-d228694-Reviews-Hotel_Malte_Astotel-Paris_Ile_de_France.html",
"latitude": 48.867207,
"longitude": 2.337543,
"category": "Hotels"
}A city name returns a GEO row with only a geo_id, which is what search takes; a business returns both ids, which detail and reviews take.
Step 2: List the hotels in a city
curl -s https://api.scavio.dev/api/v1/tripadvisor/search \
-H "Authorization: Bearer $SCAVIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"geo_id": "187147", "category": "hotels"}'Paris returned 34 hotels in 4.5 s: 30 in Tripadvisor's ranked order and 4 with sponsored: true. One row, trimmed (URL, image, address parts and review snippet left out):
{
"pos": 8,
"location_id": "572984",
"geo_id": "187147",
"type": "hotel",
"name": "Hotel Eiffel Seine",
"rank": 6,
"rating": 4.4,
"review_count": 3057,
"price_range": "€€",
"price": 152,
"address": "3 Boulevard De Grenelle, Paris, 75015",
"latitude": 48.85437,
"longitude": 2.28929,
"phone": "+33 1 45 78 14 81",
"ranking": "#6 Best Value of 3,075 places to stay in Paris",
"sponsored": false
}price is the nightly rate the listing card prints, present on 23 of the 30 ranked rows. page moves through the list 30 at a time, and category switches to restaurants or attractions.
Step 3: Get the hotel's scores and newest reviews
curl -s https://api.scavio.dev/api/v1/tripadvisor/location \
-H "Authorization: Bearer $SCAVIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"location_id": "228694", "geo_id": "187147", "category": "hotels"}'The summary, as captured in 2.1 s:
{
"location_id": "228694",
"type": "hotel",
"name": "Hôtel Malte - Astotel",
"rating": 4.9,
"review_count": 3976,
"rating_distribution": { "excellent": 3662, "very_good": 263, "average": 40, "poor": 6, "terrible": 5 },
"subratings": [
{ "name": "Rooms", "rating": 4.7 },
{ "name": "Service", "rating": 4.9 },
{ "name": "Value", "rating": 4.8 },
{ "name": "Cleanliness", "rating": 4.9 },
{ "name": "Location", "rating": 4.9 },
{ "name": "Sleep Quality", "rating": 4.8 }
],
"ranking": "#1 of 1,896 hotels in Paris",
"address": "63 Rue De Richelieu, Paris, 75002",
"website": "http://www.astotel.com/hotel/malte-opera/overview"
}The same response carries 18 amenities, coordinates, phone, images and reviews[] with the 10 newest reviews, so it is the call to schedule if you track a hotel's reputation day by day.
Step 4: Page through every review
curl -s https://api.scavio.dev/api/v1/tripadvisor/reviews \
-H "Authorization: Bearer $SCAVIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"location_id": "228694", "geo_id": "187147", "category": "hotels", "page": 2}'Page 1 already came with step 3, so start at 2. Page 2 answered in 4.5 s with offset 10 and count 10, and all 10 reviews carried the hotel's reply. One review, text trimmed:
{
"review_id": "1080444999",
"title": "A Wonderful Stay with Exceptional Service and a Special Birthday Surprise",
"text": "We had a wonderful stay at Hotel Malte Astotel in Paris. From the moment we arrived, we were treated with great kindness and hospitality by the entire team...",
"rating": 5,
"published_date": null,
"trip_date": "October 2026",
"trip_type": "Traveled as a couple",
"author": "Ramon D",
"author_contributions": 41,
"owner_response": "Dear Ramon D,Thank you for choosing Hotel Malte - Astotel for such a special celebration...",
"owner_response_date": "3 weeks ago",
"owner_response_from": "Paris_Astotel"
}Keep incrementing page until you get a 404. For this hotel, page 150 reached March 2023, page 277 held the last 9 reviews, the oldest published in January 2017, and page 278 was a 404: about 2,769 reviews on tripadvisor.com's review pages, against 3,976 in Tripadvisor's total count. Two things to handle: consecutive pages can repeat a review at the boundary, so de-duplicate on review_id, and on the newest hotel reviews published_date came back null while trip_date was filled, so group by trip date.
All four endpoints
| Endpoint | What it returns | Credits |
|---|---|---|
/api/v1/tripadvisor/locations | A place or business name resolved to geo_id and location_id | 2 |
/api/v1/tripadvisor/search | Hotels, restaurants or attractions in a geo, 30 a page, in Tripadvisor's order | 2 |
/api/v1/tripadvisor/location | Rating, histogram, aspect scores, ranking, amenities, contact details and the newest reviews | 2 |
/api/v1/tripadvisor/reviews | A page of reviews: 10 for hotels and attractions, 15 for restaurants | 2 |
A full review history costs one call per page: 277 calls, 554 credits and about $1.11 at the Growth-yearly rate for a hotel with Hôtel Malte's depth. For a side-by-side of every option, see the best Tripadvisor reviews APIs.
Getting started
- Sign up at dashboard.scavio.dev/sign-up: 50 free credits, no card required.
- Copy your API key from the dashboard.
- Send a POST to
/api/v1/tripadvisor/locationswith a hotel or city name and your key in theAuthorizationheader.
Try the Tripadvisor API free in the playground first, or call it from Claude and other agents through the MCP server.
Reference: Tripadvisor API overview · locations · search · location · reviews
Frequently asked questions
How do I get all the reviews for a Tripadvisor hotel?
Call Scavio's /api/v1/tripadvisor/location for the first 10 reviews and the totals, then /api/v1/tripadvisor/reviews with page 2, 3 and so on until a page returns 404. For Hotel Malte in Paris that was 277 pages on October 27, 2026, about 2,769 reviews back to January 2017. De-duplicate on review_id when you join pages.
How many reviews does the Tripadvisor API return?
Tripadvisor's legacy Content API returned up to 5 of the most recent reviews per location, and its Terra replacement returns a fixed pool set by your contract, such as the 25 most recent. Scavio's reviews endpoint returns 10 reviews a page for hotels and attractions and 15 for restaurants, and pages as far back as tripadvisor.com lists.
What is a Tripadvisor location_id and geo_id?
geo_id identifies a destination such as Paris (187147) and location_id identifies one business such as Hotel Malte (228694); both appear in Tripadvisor URLs as g187147 and d228694. Scavio's /api/v1/tripadvisor/locations turns a name into both, and the detail and reviews endpoints take the pair.
How much does Tripadvisor data cost with Scavio?
Every Tripadvisor call costs 2 credits: about $0.004 on the Growth plan billed yearly and $0.0086 on the $30 monthly Project plan. A hotel review page holds 10 reviews, so 1,000 hotel reviews cost about $0.40 on Growth yearly. New accounts get 50 free credits with no card.