TripAdvisor travel data via the Terra API through MCP. Use when the user asks to find hotels, restaurants, or attractions, look up a place's TripAdvisor rati...
浏览器
tripadvisor-api
试用Query TripAdvisor location data (search, nearby, details, photos, reviews) straight from a shell with curl against the Terra REST API (terra.tripadvisor.com), instead of running the tripadvisor-mcp server — plus a no-API-key fallback that reads a location's public page through the fpx browser bridge. Use when you want TripAdvisor data without the MCP, in a script, or on a machine where the MCP isn't installed. Triggers on "check TripAdvisor", "TripAdvisor location/restaurant/hotel/attraction search, details, photos, reviews", or any TripAdvisor data request that should hit the API directly.
它能做什么
Query TripAdvisor location data (search, nearby, details, photos, reviews) straight from a shell with curl against the Terra REST API (terra.tripadvisor.com), instead of running the tripadvisor-mcp server — plus a no-API-key fallback that reads a location's public page through the fpx browser bridge. Use when you want TripAdvisor data without the MCP, in a script, or on a machine where the MCP isn't installed. Triggers on "check TripAdvisor", "TripAdvisor location/restaurant/hotel/attraction search, details, photos, reviews", or any TripAdvisor data request that should hit the API directly.
技能文档
TripAdvisor Terra API via curl (no MCP)
TripAdvisor's Terra API (terra.tripadvisor.com/api) is a plain
API-key REST API reachable directly from a server or shell — no browser
bridge needed. This skill shells out to curl with the key in an
X-API-Key header, exactly as tripadvisor-mcp's src/client.ts does.
Terra is the current API (the legacy Content API sunsets 2026-08-31); it
has no write endpoints — everything here is a read.
A second, smaller tier at the bottom covers the one thing Terra can't do
without a key: reading a location's core details from the public
consumer page via the fpx browser bridge.
One-time setup: get a Terra key
# Prefer the env var tripadvisor-mcp itself reads (check its .env first):
grep -h TRIPADVISOR_API_KEY ~/git/tripadvisor-mcp/.env 2>/dev/null
export TRIPADVISOR_API_KEY='...'
If you don't have one: create a free Discover-tier key at
https://www.tripadvisor.com/developers (pay-as-you-go, 10 QPS / 10,000
calls/day). A legacy Content API key does NOT work here (and vice
versa) — a mismatched key gets a 403.
Core call pattern
BASE=https://terra.tripadvisor.com/api
curl -sS "$BASE/locations/search?query=Golden%20Gate%20Bridge" \
-H "X-API-Key: $TRIPADVISOR_API_KEY" -H 'accept: application/json' \
| jq '.data[].location | {id, name: (.names[] | select(.primary) | .value)}'
Every call needs just the two headers above — no session/cookie, no
mutual TLS. Ready-to-run recipes for all 6 endpoints are in
references/terra-endpoints.md.
The one rule: resolve a location id first
Details/photos/reviews are keyed by numeric location_id — get one from
ta_search_locations's equivalent, GET /locations/search, before
calling the id-scoped endpoints:
curl -sS "$BASE/locations/search?query=Golden+Gate+Bridge" \
-H "X-API-Key: $TRIPADVISOR_API_KEY" | jq -r '.data[].location.id'
# 104675
Response shapes (quick reference)
- List endpoints (
search,nearby,reviews,photos) wrap results:{"data": [...], "pagination": {"page","size","total_pages","total_elements"}}. GET /locations(batch) andGET /locations/{id}(details) do not wrap inpagination— batch returns{"data": [...]}, details returns the location object directly.- A location object keys
names/descriptions/addressesas arrays tagged by language — the primary entry has"primary": true(jq '.names[] | select(.primary) | .value'), not a flatnamefield.
Full field lists and all 6 curl+jq recipes: references/terra-endpoints.md.
Output / error contract
- A 2xx body is JSON; pipe to
jq. 400— validation error; body is{type, title, status, detail, field_errors: [{field, message}], trace_id}—detail/field_errorsname the bad param.401/403— key missing, invalid, or the wrong API family (legacy key on Terra, or vice versa).404— unknown id, or a typo'd path (/locations/{id}is plural; the singular form 404s).429— QPS (10) or daily quota (10,000) exceeded on the Discover tier; back off and retry (the response may carryRetry-After).
Fallback tier: no API key (fpx browser bridge)
TripAdvisor's consumer site (www.tripadvisor.com) is DataDome-walled, so
it can't be curled directly — but a location's public detail page is
plain server-rendered HTML with a clean application/ld+json block
(name, rating, review count, address, phone, coordinates), reachable with
no API key by routing the fetch through your own signed-in browser
tab via fpx (@fetchproxy/cli). Use this when you don't have (or don't
want to use) a Terra key, or ta_get_location_details is blocked.
npm install -g @fetchproxy/cli # provides `fpx`
fpx profile add tripadvisor --domain tripadvisor.com # fetch capability only
fpx pair -p tripadvisor # prints a pair code → approve in Transporter
Requires the Transporter extension with an open www.tripadvisor.com
tab. This covers attractions, hotels, and restaurants — it does not
return individual review text (only the aggregate rating/count). Fetch +
parse recipe: references/web-fallback.md.
fpx exit codes (fetch verbs)
0— success.2— bridge unavailable: extension not connected / pairing pending →fpx pair -p tripadvisor.3— bot wall: the tab hasn't cleared DataDome → open/refresh awww.tripadvisor.comtab and retry.4— upstream non-2xx from TripAdvisor.
Notes
- Terra reads only — nothing here mutates TripAdvisor data.
- This project (
tripadvisor-mcp) is developed and maintained by AI (Claude Code).
相关技能
Resolve any place or business name to Tripadvisor ids, then pull ranked restaurants, hotels and attractions in a geo, one location in full, and paged review bodies. 4 endpoints, 2 credits each, structured JSON.
Search Viator tours, activities and experiences via MCP. Use when the user asks to find tours, activities, excursions, day trips, tickets, or "things to do" in a city or destination, get details/pricing/availability for a Viator product, list attractions in a destination, or convert supplier-currency prices. Triggers on phrases like "things to do in Rome", "find a food tour in Paris", "is this tour available in September", "Viator", "book an excursion" (search only — no booking), or "skip-the-line Colosseum tickets". Requires the @chrischall/viator-mcp package installed and the viator server registered (see Setup), plus a Viator Partner API key (free Basic Access affiliate tier).
This skill should be used when the user asks about GetYourGuide tours, activities, or attraction tickets. Triggers on phrases like "find tours on GetYourGuide", "things to do in Paris", "skip-the-line tickets", "GetYourGuide reviews", "book an activity", or any request involving searching tours, activities, day trips, or attraction tickets.
Search Google Hotels for hotel prices
Researches hotels, flights, attractions, short-term rentals, and live events via the Crawlora API — Booking.com, Expedia, Agoda, TripAdvisor, Trip.com, Airbnb, and Ticketmaster — returning clean JSON. Use when the user wants to search or compare hotel/stay prices and reviews, look up flight options, find attractions/things-to-do or concerts/events, or research an Airbnb host or listing.