Tripadvisor Reviews API — Hotel & Restaurant Reviews
Documentation menu
FetchLayer FetchLayer API

Get a place's reviews

Pull traveller reviews for one place: rating, title and the full text, the trip type, the month of the visit and the date it was written, the reviewer's display name, home town and contribution count, per-aspect sub-ratings, attached photo URLs, and the owner's public reply where there is one. Tripadvisor serves 20 reviews per page whatever limit asks for, so depth comes from pages and cursor, not from a bigger page.

POST /location-reviews Reviews
https://api.fetchlayer.dev/tripadvisor/location-reviews
OpenAPI JSON

Headers

Authorization string required

Bearer token — your FetchLayer API key.

Parameters

location string required

Tripadvisor location id, or the URL of a hotel, restaurant or attraction page. Use /search-locations to turn a name into an id.

limit number optional

Maximum reviews returned (max 2000), or -1 for everything available. Reviews still arrive 20 per page. (default: 20)

pages number optional

Pages of reviews to collect in one request (max 100), or -1 for the maximum allowed. 20 reviews per page — this is the knob that controls depth. (default: 1)

cursor string optional

Resume from a previous response's nextCursor.

language string optional

Language to request reviews in. A translation target, not a filter — Tripadvisor still returns reviews written in a mix of languages. Pair it with translate to get the text in this language. (default: en)

translate boolean optional

Return each review's text translated into language. (default: false)

sortBy string optional

recent, detailed, or insightful. (default: recent)

minRating number optional

Only reviews rated this many bubbles or more (1 to 5).

tripTypes string[] optional

Only reviews from these trip types: business, couples, family, friends, solo.

photosPerReview number optional

How many photo URLs to return per review (max 20). 0 skips them. (default: 4)

delayMs number optional

Milliseconds to wait between pages (max 30000).

format string optional

json or markdown. (default: json)

Response Fields

location-reviews

Get a place's reviews

reviews object[]

The reviews collected, 20 per page walked.

reviews[].reviewId string

Stable review id — the dedupe key for incremental pulls.

reviews[].rating number

Bubble rating, 1 to 5.

reviews[].title string

Review headline.

reviews[].text string

The full review, not a snippet.

reviews[].language string

The language this text is returned in.

reviews[].originalLanguage string

The language the reviewer wrote in, which may differ.

reviews[].isTranslated boolean

True when text is a translation rather than the reviewer's own words.

reviews[].publishedDate string

When the review was written, YYYY-MM-DD.

reviews[].visitDate string

When the reviewer says they visited, YYYY-MM-DD.

reviews[].tripType string

business, couples, family, friends, or solo.

reviews[].helpfulVotes number

How many people marked the review helpful.

reviews[].photoUrls string[]

Photos the reviewer attached. URLs only — stream the bytes from GET /media.

reviews[].subRatings object[]

Per-aspect ratings (location, cleanliness, service, value…), where the place collects them.

reviews[].reviewer object

Display name, username, profile URL, stated home town, country code, contribution count, helpful votes and avatar.

reviews[].managementResponse object

The owner's public reply: text, published date, respondent name and role.

filters object

The filters this pull actually ran with, after defaults were applied — including the resolved language and translate.

reviewCount number

Every review Tripadvisor holds for this place under the requested language, not just this page. Changing language moves this number without changing which rows come back.

returnedCount number

Reviews in this response.

pagesScraped number

Pages actually collected. Each page counts as one request against your plan.

nextCursor string

Pass back as cursor to continue, or null when the listing is exhausted.

hasNextPage boolean

Whether more reviews are available beyond this response.

notes string[]

Caveats about this specific result — a walk cut short, a field Tripadvisor does not publish for this place, an upstream limit that was hit. Read it: a response can be well-formed and still incomplete, and this array is where that is said.

requestedUrl string

The Tripadvisor page this result corresponds to.

scrapedAt string

ISO-8601 timestamp of when the data was collected.

blocked boolean

Always false on a successful response.

Request

curl -X POST "https://api.fetchlayer.dev/tripadvisor/location-reviews" \
  -H "Authorization: Bearer ss-your-key" \
  -H "Content-Type: application/json" \
  -d '{"location":"298106","pages":5,"sortBy":"recent","minRating":4,"photosPerReview":4}'

Response

{
  "locationId": "298106",
  "locationName": "Park Hyatt Tokyo",
  "reviewCount": 2184,
  "returnedCount": 100,
  "pagesScraped": 5,
  "hasNextPage": true,
  "nextCursor": "eyJvZmZzZXQiOjEwMH0",
  "reviews": [
    {
      "reviewId": "948273615",
      "rating": 5,
      "title": "Still the best view in Tokyo",
      "text": "The room was immaculate and the staff remembered our names from a stay two years ago…",
      "publishedDate": "2026-08-29",
      "visitDate": "2026-08-01",
      "tripType": "couples",
      "reviewer": {
        "displayName": "Marina K",
        "location": "Melbourne, Australia",
        "contributionCount": 214
      },
      "managementResponse": {
        "respondentName": "Front Office Manager",
        "text": "Thank you for staying with us again…"
      }
    }
  ],
  "notes": [
    "Tripadvisor serves 20 reviews per page; limit above that is satisfied by walking pages."
  ]
}