Tripadvisor API: List top attractions in a city
Lists Tripadvisor's ranked things to do in a city from the first results page, for all attractions or one category (tours, museums, sights and landmarks, nature and parks), with rating, review count, category, and the description or neighbourhood when shown.
Unofficial. Not affiliated with or endorsed by Tripadvisor.
Inputs
Values from the run on Oct 31, 2026, shown under Output.
- City, required
city City to look up, with country if needed; for example, Rome or Paris, France.
Paris, France
- Category optional
category Kind of things to do; for example, museums.
museums
One of
any,tours,museums,sights_and_landmarks,nature_and_parks. Defaultany.- Max Results optional
max_results Maximum attractions to return from the first results page; for example, 20.
20 (default)
Whole number from 1 to 30.
Input as JSON
{ "city": "Paris, France", "category": "museums"}Output
{ "attractions": [ { "name": "Louvre Museum", "rank": 1, "rating": 4.6, "category": "Points of Interest & Landmarks • Architectural Buildings", "description": null, "review_count": 104619, "tripadvisor_link": "https://www.tripadvisor.com/Attraction_Review-g187147-d188757-Reviews-Louvre_Museum-Paris_Ile_de_France.html" , "tripadvisor_location_id": "188757", "neighbourhood_or_address": "Louvre / Palais-Royal" }, { "name": "Musée d'Orsay", "rank": 2, "rating": 4.7, "category": "Art Museums", "description": null, "review_count": 67978, "tripadvisor_link": "https://www.tripadvisor.com/Attraction_Review-g187147-d188150-Reviews-Musee_d_Orsay-Paris_Ile_de_France.html" , "tripadvisor_location_id": "188150", "neighbourhood_or_address": "Tour Eiffel / Invalides" }, { "name": "Musée de l’Orangerie", "rank": 3, "rating": 4.6, "category": "Speciality Museums", "description": null, "review_count": 17737, "tripadvisor_link": "https://www.tripadvisor.com/Attraction_Review-g187147-d265635-Reviews-Musee_de_l_Orangerie-Paris_Ile_de_France.html" , "tripadvisor_location_id": "265635", "neighbourhood_or_address": "Louvre / Palais-Royal" } ]}Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"tripadvisor.com/list_top_attractions","input":{"city":"Paris, France","category":"museums"}}' # Save as fous.py, then run: python3 fous.pyimport json, os, timefrom urllib.error import HTTPErrorfrom urllib.request import Request, urlopenAPI = "https://api.fous.com/v1/runs" KEY = os.environ["FOUS_API_KEY"]HEADERS = { "Authorization": f"Bearer {KEY}", "Content-Type": "application/json" ,}def call(url, body=None): data = json.dumps(body).encode() if body else None request = Request(url, data, HEADERS) try: with urlopen(request, timeout=120) as r: return r.status, json.load(r) except HTTPError as error: message = json.load(error)["error"]["message"] raise RuntimeError(message) from errorstatus, run = call(API, { "method": "tripadvisor.com/list_top_attractions" , "input": { "city": "Paris, France", "category": "museums" }})# 202: still going after 30 s. Ask again until it ends.while status == 202: time.sleep(2) status, run = call(f"{API}/{run['id']}")print(json.dumps(run["data"], indent=2))// Save as fous.mjs, then run: node fous.mjsconst api = "https://api.fous.com/v1/runs" ;const headers = { Authorization: `Bearer ${process.env.FOUS_API_KEY}`, "Content-Type": "application/json" ,};let response = await fetch(api, { method: "POST", headers, body: JSON.stringify({ "method": "tripadvisor.com/list_top_attractions" , "input": { "city": "Paris, France", "category": "museums" } }), signal: AbortSignal.timeout(120_000),});let run = await response.json();// 202: still going after 30 s. Ask again until it ends.while (response.status === 202) { await new Promise((done) => setTimeout(done, 2_000)); response = await fetch(`${api}/${run.id}`, { headers }); run = await response.json();}if (!response.ok) throw new Error(run.error.message);console.log(run.data);# Connect your agent to Fous once, over MCP (Streamable HTTP):# https://api.fous.com/mcp# Set FOUS_API_KEY first: create a key at https://app.fous.com/keys.# Claude Codeclaude mcp add \ --scope user \ --transport http fous https://api.fous.com/mcp \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Codexcodex mcp add fous \ --url https://api.fous.com/mcp \ --bearer-token-env-var FOUS_API_KEY# Cursor, VS Code, Windsurf, Cline and morenpx -y add-mcp https://api.fous.com/mcp -g -n fous \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Then ask your agent:# "Use Fous to run tripadvisor.com/list_top_attractions# with {"city":"Paris, France","category":"museums"}"Over HTTP, the answer’s data holds the output. A run still going after 30 seconds answers 202 with its id: ask GET /v1/runs/{id} until it ends.
Schema
Input schema
{ "type": "object", "required": [ "city" ], "properties": { "city": { "type": "string", "description": "City to look up, with country if needed; for example, Rome or Paris, France." }, "category": { "enum": [ "any", "tours", "museums", "sights_and_landmarks", "nature_and_parks" ], "type": "string", "default": "any", "description": "Kind of things to do; for example, museums." }, "max_results": { "type": "integer", "default": 20, "maximum": 30, "minimum": 1, "description": "Maximum attractions to return from the first results page; for example, 20." } }}Output schema
{ "type": "object", "required": [ "attractions" ], "properties": { "attractions": { "type": "array", "items": { "type": "object", "required": [ "rank", "name", "category", "rating", "review_count", "description", "neighbourhood_or_address", "tripadvisor_link", "tripadvisor_location_id" ], "properties": { "name": { "type": "string" }, "rank": { "type": "integer" }, "rating": { "type": [ "number", "null" ] }, "category": { "type": [ "string", "null" ] }, "description": { "type": [ "string", "null" ] }, "review_count": { "type": [ "integer", "null" ] }, "tripadvisor_link": { "type": "string" }, "tripadvisor_location_id": { "type": [ "string", "null" ] }, "neighbourhood_or_address": { "type": [ "string", "null" ] } } } } }}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
tripadvisor.com/list_top_attractions- Returns
- rank, name, category, rating, review count, description, neighbourhood or address, Tripadvisor link and location ID
Use it from your agent
Give your agent this line. It reads SKILL.md, gets a Fous API key and connects the Fous MCP server. Its run then takes the method tripadvisor.com/list_top_attractions with the inputs above.
Ask your agent
- What are the top 10 things to do in Lisbon, Portugal according to Tripadvisor? I need ratings and review counts.
- Give me the highest-ranked museums in Vienna with their ratings and how many reviews each has.
- I'm planning a trip to Kyoto — list the best-rated nature and parks spots there, up to 15.
- Find the top tours in Cartagena, Colombia on tripadvisor.com, including descriptions and links.
- Which sights and landmarks rank highest in Edinburgh? Show me around 25 with neighbourhood info.
See more
All Tripadvisor methodsLists Tripadvisor's ranked restaurants in a city from the first results page, optionally filtered by cuisine and price category. Sponsored listings are left out; up to 30 restaurants with rating, review count, cuisines, price range and address.
tripadvisor.com/list_top_restaurantsGets the latest traveler reviews for a hotel, restaurant or attraction in a city (by name or Tripadvisor listing link), with the place's overall rating and review count. Dates of visit show the month and year when provided.
tripadvisor.com/get_reviewsFinds tours and experiences in a city on Viator, with optional keywords, date, currency and sorting. Prices are starting prices.
viator.com/search_toursFinds GetYourGuide tours, tickets and activities in a city, optionally matching words, available on a day, sorted by popularity, price or rating, with prices, ratings and booking features.
getyourguide.com/search_activitiesFinds Klook activities, tickets, tours and passes in a city, with ratings, booking counts, prices and booking policies. Keyword matches are ranked by Klook and may include related activities.
klook.com/search_activitiesFinds hotels in a city on Trip.com for given dates, with prices, guest ratings, reviews and booking links. Only the initial public listing is read, so large limits may return fewer hotels.
trip.com/search_hotelsFinds available Agoda stays in a city for your dates, with prices before taxes and fees, star and guest ratings, and free-cancellation status.
agoda.com/search_hotelsFinds a hotel on Google Hotels by name and city and returns its guest reviews in the chosen order, its Google rating and review count, and topic ratings averaged from the returned reviews that rate each topic.
google.com/get_hotel_reviews