Looking for the overview — what this API returns, what it costs, and a call you can run without a key? See the Tripadvisor API page →
Reputation & Reviews

Tripadvisor API & Scraper

The Tripadvisor API returns hotel, restaurant and attraction reviews and ratings as clean JSON.

4 actionsLive JSON1,000 free credits$0.67–$1.50 / 1,000 creditsMCP-ready
Get a free keyOpen in playground

🤖 Using an AI assistant? Copy this link into ChatGPT / Claude / Cursor — it reads every endpoint and parameter instantly and tells you if this API fits your use case.

The primary reviews endpoint returns a place with its location id, name, type, rating, review count, ranking, price range, rating histogram, subratings and amenities — plus the review text. You can also list places, pull a detail and run a search. It is built for travel apps, reputation monitoring and hospitality analytics that need Tripadvisor data without scraping a defended site. One ReefAPI key, one shared credit pool, the standard envelope.

Reference

How to read a Tripadvisor URL — the g-number and the d-number

Every action here is keyed on the page URL, and that URL encodes two different ids that people constantly mix up. Taking the measured Bellagio URL apart: https://www.tripadvisor.com/Hotel_Review-g45963-d91703-Reviews-Bellagio-Las_Vegas_Nevada.html

URL partMeasured valueWhat it identifies
g-numberg45963 = Las Vegasthe geo — a city or region. This is the geo_id parameter on places/list.
d-numberd91703 = Bellagiothe place itself. Comes back as location_id on every response.
trailing slugLas_Vegas_Nevadathe location_slug that pairs with geo_id when you pin a city exactly
Hotel_Review-…Bellagioentity_type "hotel"
Restaurant_Review-…entity_type "restaurant"
Attraction_Review-…Bellagio Conservatory & Botanical Garden (d625114)entity_type "attraction" — a place you visit
AttractionProductReview-…O by Cirque du Soleil at the Bellagio (d12165098)entity_type "activity" — a bookable tour, show or ticket, not a place

"activity" is a real entity_type in responses even though the search filter only offers hotel, restaurant, attraction and geo. A name search for one venue can therefore return a hotel, an attraction and an activity that all sit at the same address — check entity_type before you treat three rows as duplicates.

Live example

Real request and response JSON

Captured from the indexed primary action, search, on .

Captured request
{
  "method": "POST",
  "url": "https://api.reefapi.com/tripadvisor/v1/search",
  "headers": {
    "x-api-key": "$REEF_KEY",
    "content-type": "application/json"
  },
  "body": {
    "query": "Bellagio Las Vegas",
    "limit": 5
  }
}
Captured response
{
  "ok": true,
  "meta": {
    "api": "tripadvisor",
    "endpoint": "search",
    "mode": "live",
    "latency_ms": 694.7,
    "record_count": 5,
    "bytes": 0,
    "cache_hit": false,
    "attempts": 1
  },
  "data": {
    "results": [
      {
        "location_id": "91703",
        "name": "Bellagio",
        "entity_type": "hotel",
        "url": "https://www.tripadvisor.com/Hotel_Review-g45963-d91703-Reviews-Bellagio-Las_Vegas_Nevada.html"
      },
      {
        "location_id": "625114",
        "name": "[redacted-name]",
        "entity_type": "attraction",
        "url": "https://www.tripadvisor.com/Attraction_Review-g45963-d625114-Reviews-Bellagio_Conservatory_Botanical_Garden-Las_Vegas_Nevada.html"
      },
      {
        "location_id": "12165098",
        "name": "[redacted-name]",
        "entity_type": "activity",
        "url": "https://www.tripadvisor.com/AttractionProductReview-g45963-d12165098-O_by_Cirque_du_SoleilR_at_the_Bellagio_Hotel_and_Casino-Las_Vegas_Nevada.html"
      }
    ]
  }
}
Actions

What the Tripadvisor API does

ActionDescriptionConcrete use caseKey params
reviewsReviews + the full place profile (rating histogram, subratings, amenities) for one or more Tripadvisor places, by page URL.Support teams call reviews to get reviews + the full place profile (rating histogram, subratings, amenities) for one or more Tr….startUrls, url, queries, query, maxReviews, ...
places/listDiscover hotels, restaurants or attractions in a city/area (name, rating, review count) — the feeder for `reviews`.Reputation platforms call places/list to discover hotels, restaurants or attractions in a city/area (name, rating, review count).location, category, geo_id, location_slug, max_results
detailFull profile for one Tripadvisor hotel, restaurant or attraction by page URL: overall rating, total reviews, ranking, price level, the per-star rating breakdown, category subratings (cleanliness / service / value / location / food / atmosphere), amenities, cuisines, address, coordinates and phone.Market researchers call detail to get full profile for one Tripadvisor hotel, restaurant or attraction by page URL.url
searchFind Tripadvisor places (hotels, restaurants, attractions) and destinations by name — the typeahead the site's own search box uses. Returns the matching location IDs + page URLs to feed into `reviews` or `detail`.B2B review analysts call search to find Tripadvisor places (hotels, restaurants, attractions) and destinations by name.query
Code samples

Call search from your stack

curl -X POST https://api.reefapi.com/tripadvisor/v1/search \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"query":"Bellagio Las Vegas","limit":5}'
MCP one-liner
Ask your MCP-connected assistant: call reefapi.tripadvisor.search with {"query":"Bellagio Las Vegas","limit":5}.
Use cases

Who uses this API and why

  • Hospitality teams call reviews to monitor a property's Tripadvisor rating, ranking and guest feedback.
  • Travel apps use search and detail to show live ratings for hotels, restaurants and attractions.
  • Market analysts use the rating histogram and subratings to benchmark a venue against competitors.
FAQ

Questions developers ask before integrating

Why does looking a place up by name sometimes fail?

The query and queries parameters go through a name-resolution step that regularly comes back with 'Could not resolve a locationId', and we would rather label them unreliable than let you build on them. The dependable path is two steps: call search with the name to get location_id and the exact page URL, then pass that url to detail or reviews. A measured search for 'Bellagio Las Vegas' returned three distinct entities — the hotel (91703), the conservatory (625114) and the Cirque du Soleil show (12165098) — which is precisely the ambiguity a single name lookup has to guess at.

Is ranking a number I can sort on?

No. It is a human-readable string: a measured Bellagio lookup returned "#59 of 260 hotels in Las Vegas". Both numbers and the category and city are baked into one field, so sorting on it means parsing it, and the phrasing differs between hotels, restaurants and attractions. If you need an ordering, sort on rating and review_count, which are a float and an integer.

Why is price_range set but price_level null?

They are two separate fields and only one was populated on the measured record: price_range "$$" with price_level null. Read price_range for the dollar-sign band. The same pattern shows up elsewhere on a place record — a hotel returns cuisines, dietary, awards and photos as empty arrays and hours and website as null, because those are restaurant and attraction fields that simply do not apply. Empty here means not applicable, not missing.

Can I verify the rating breakdown adds up?

Yes, and it is a useful integrity check. The measured Bellagio histogram was {5: 8953, 4: 2127, 3: 1984, 2: 1277, 1: 1423}, which sums to exactly 15,764 — the same value as review_count. The keys are strings, not integers, so index them as "5" rather than 5. If a histogram ever fails to sum to review_count, you are looking at a partially-rendered page rather than a real discrepancy.

What subratings does a hotel return versus a restaurant?

They differ by entity type, and there is no fixed key set. A measured hotel returned Location 4.7, Cleanliness 4.3, Service 4.1, Value 3.8, Sleep Quality 4.3 and Rooms 4.1. Restaurants instead carry food and atmosphere dimensions. Iterate the subratings object rather than reading fixed keys, or a restaurant record will look empty to code written against a hotel.

Why is the phone number formatted with a leading 00?

Because Tripadvisor publishes the international dial-out prefix rather than E.164. A measured hotel returned "00 1 888-987-6667" — that is 00, country code 1, then the national number, with spaces and a hyphen. It will not pass an E.164 validator and it will not tel: dial correctly outside the countries that use 00. Normalize to +1 888 987 6667 yourself before storing.

Why is a call slow, and how do I make it cheaper?

A measured detail call took 22.8 seconds, and reviews is heavier still because runtime scales with maxReviews (default 200, ceiling 10,000). Two things help. Pass startUrls with several place URLs in one call instead of issuing one call per place — the work of establishing the session is done once for the batch. And ask for the fewest reviews you actually need: fetching 200 when you display 10 costs you twenty times the runtime for nothing.

Why am I only seeing English reviews?

Because language defaults to en. Any ISO 639-1 code narrows to that language, and language 'all' returns every language — with non-English reviews machine-translated by Tripadvisor, and the review's own language field telling you which ones those are. For a property in a non-English market the default will hide most of the review volume, so 'all' is usually the honest setting for sentiment work.

What is the Tripadvisor API?

Tripadvisor API is a ReefAPI endpoint group for hotels, restaurants and attractions with reviews. It returns live JSON through POST requests under /tripadvisor/v1.

Is the Tripadvisor API free to try?

Yes. ReefAPI starts with 1,000 free credits, no card required. Tripadvisor calls use the same shared credit balance as every other ReefAPI engine.

Do I need a Tripadvisor login or account?

No login to Tripadvisor is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.

How fresh is the Tripadvisor data?

The page example is captured from a live reviews call, and production requests fetch live data through ReefAPI rather than a static sample.

How many credits does the Tripadvisor API use?

Tripadvisor actions currently cost 1-2 credits per successful call. Failed or blocked calls are free, and all APIs draw from one credit pool.

Can I call Tripadvisor from an AI assistant or MCP client?

Yes. Connect ReefAPI once through MCP and your assistant can call tripadvisor actions with the same key, credit pool and JSON envelope used by normal REST requests.

docs / tripadvisor

Tripadvisor

Hotels, restaurants and attractions with reviews.

base /tripadvisor/v14 endpoints
post/tripadvisor/v1/reviews1 credit

Reviews + the full place profile (rating histogram, subratings, amenities) for one or more Tripadvisor places, by page URL.

ParameterAllowed / rangeDescription
urloptionalTripadvisor page URL of the hotel/restaurant/attraction (the reliable input — copy it from the browser). Provide this OR startUrls.
startUrlsoptionalSeveral place URLs in one call (strings or {url:…} objects). One minted session is reused across them.
queryoptionalUNRELIABLE: place-name lookup often fails to resolve ('Could not resolve a locationId'). Use `url` instead.
queriesoptionalUNRELIABLE (same lookup as `query`): several place names in one call. Prefer `startUrls`.
maxReviews = 200optional1–10000How many of the newest reviews to fetch per place (1–10000). More reviews = longer runtime.
language = enoptionalReview language filter (ISO 639-1: en, es, de…). Use 'all' for every language (machine-translated).
Try in playground →
post/tripadvisor/v1/places/list2 credits

Discover hotels, restaurants or attractions in a city/area (name, rating, review count) — the feeder for `reviews`.

ParameterAllowed / rangeDescription
locationrequiredCity or area name. Resolved to a Tripadvisor geo automatically (or pin it exactly with geo_id).
category = hotelsoptionalhotels · restaurants · attractionsWhat kind of places to list (singular forms also accepted).
max_results = 30optional1–500How many places to return (1–500). The engine pages the results internally.
geo_idoptionalAdvanced: Tripadvisor geo ID (the g-number in URLs) — skips the location lookup.
location_slugoptionalAdvanced: the URL slug that pairs with geo_id.
Try in playground →
post/tripadvisor/v1/detail2 credits

Full profile for one Tripadvisor hotel, restaurant or attraction by page URL: overall rating, total reviews, ranking, price level, the per-star rating breakdown, category subratings (cleanliness / service / value / location / food / atmosphere), amenities, cuisines, address, coordinates and phone.

ParameterAllowed / rangeDescription
urlrequiredTripadvisor page URL of the hotel/restaurant/attraction (copy it from the browser, or get it from `search` / `places/list`).
Try in playground →