All scrapers

Travel

Tripadvisor Reviews Scraper

tripadvisor.com

97.3% Success rate
8.2s Avg response
DataDome Protection
1,064 calls Measured over

Tripadvisor sits behind DataDome, and its reviews come ten to a page (fifteen for restaurants), so collecting them yourself means passing a challenge on every page and walking the paginated review URLs one by one. A dedicated plugin endpoint takes a Hotel_Review, Restaurant_Review, Attraction_Review or AttractionProductReview URL from any Tripadvisor site, or a bare location id, and returns the reviews already parsed: title, full text, rating, published date and date of stay, trip type, language, helpful votes, the reviewer, sub-ratings, photos and the owner's response. The place comes with them - overall rating, review count, the 1-5 star histogram, sub-ratings such as cleanliness or value, the ranking, address, coordinates, phone and website. Collect up to 200 reviews in one call, newest first, pick the review language, stop at a date with since, and continue from nextPage.

What you can extract

  • Review title, full text, rating, published date and date of stay
  • Trip type, language, a machine-translation flag with the original language, and helpful votes
  • Reviewer display name, location and contribution count
  • Per-review sub-ratings, review photos and the owner's response with its date
  • Place summary: name, type, rating, review count, 1-5 star histogram, sub-ratings and ranking
  • Address, coordinates, phone, website and price range
  • Up to 200 reviews per call, newest first, with a since date cut-off and nextPage to continue

Dedicated endpoints

/travel/tripadvisor-reviews

Tripadvisor reviews

Reviews of a hotel, restaurant or attraction by review URL (any Tripadvisor site) or location_id: a place summary (rating, reviewsCount, ratingHistogram, subratings, ranking, address, coordinates, phone, website) and a reviews array with title, text, rating, publishedDate, travelDate, tripType, language, helpfulVotes, user, subratings, photos and ownerResponse. Newest first, up to max_reviews (1-200) across pages; choose the review language with language, cut off old reviews with since, and continue with page.

How to scrape it

curl -X POST \
  -H "X-ScrapeUnblocker-Key: $SU_API_KEY" \
  "https://api.scrapeunblocker.com/travel/tripadvisor-reviews?url=https%3A%2F%2Fwww.tripadvisor.com%2FHotel_Review-g60763-d93589-Reviews-The_Michelangelo_New_York-New_York_City_New_York.html&max_reviews=10"
import requests

resp = requests.post(
    "https://api.scrapeunblocker.com/travel/tripadvisor-reviews",
    headers={"X-ScrapeUnblocker-Key": SU_API_KEY},
    params={"url": "https://www.tripadvisor.com/Hotel_Review-g60763-d93589-Reviews-The_Michelangelo_New_York-New_York_City_New_York.html", "max_reviews": "10"},
)
print(resp.text)
import { ScrapeUnblockerClient } from 'scrapeunblocker';

const su = new ScrapeUnblockerClient({ apiKey: process.env.SU_API_KEY });

const reviews = await su.tripadvisorReviews(
  'https://www.tripadvisor.com/Hotel_Review-g60763-d93589-Reviews-The_Michelangelo_New_York-New_York_City_New_York.html',
  { maxReviews: 10 },
);
console.log(reviews);

Requests are POST and take their parameters in the query string. Browser rendering always happens - there is no flag to enable.

Example response

{
  "url": "https://www.tripadvisor.com/Hotel_Review-g60763-d93589-Reviews-The_Michelangelo_New_York-New_York_City_New_York.html",
  "locationId": 93589,
  "language": "en",
  "place": {
    "locationId": 93589,
    "name": "The Michelangelo New York",
    "type": "hotel",
    "rating": 4.5,
    "reviewsCount": 5213,
    "ratingHistogram": { "1": 81, "2": 109, "3": 293, "4": 1127, "5": 3603 },
    "subratings": {
      "cleanliness": 4.7,
      "location": 4.9,
      "rooms": 4.6,
      "service": 4.6,
      "sleepQuality": 4.7,
      "value": 4.3
    },
    "ranking": "#116 of 526 hotels in New York City",
    "address": "152 W 51st St, New York City, NY 10019",
    "phone": "00 1 212-765-1900",
    "website": "https://www.michelangelohotel.com/",
    "coordinates": { "lat": 40.761528, "lng": -73.98261 }
  },
  "reviews": [
    {
      "id": 1078193437,
      "title": "Consistent Excellence and Value in NYC!",
      "text": "My partner and I have been happily staying at the Michelangelo for over 30 years. It's a calm oasis in the craziness of the Times...",
      "rating": 5,
      "publishedDate": "2026-09-17",
      "travelDate": "2026-05",
      "tripType": "couples",
      "language": "en",
      "isMachineTranslated": false,
      "helpfulVotes": 0,
      "user": { "name": "Peter F", "username": "...", "location": "Toronto, Canada", "contributions": 11 },
      "subratings": { "value": 5, "rooms": 5, "location": 5, "cleanliness": 5, "service": 5, "sleepQuality": 5 },
      "ownerResponse": {
        "text": "After more than 30 years of visits, your loyalty to Michelangelo Hotel New York means a...",
        "publishedDate": "2026-09-19",
        "authorRole": "Guest Services / Front Office"
      }
    }
  ],
  "resultsCollected": 10,
  "totalResults": 4831,
  "page": 1,
  "pagesFetched": 1,
  "hasMore": true,
  "nextPage": 2
}

Read the API docs

Frequently asked questions

Is it legal to scrape Tripadvisor reviews?

Collecting publicly available Tripadvisor reviews and ratings is lawful in many jurisdictions, but the rules depend on your country, the data you collect and how you use it. Reviewer names and review text can be personal data, so follow the privacy rules that apply to you. ScrapeUnblocker returns the public reviews; what you collect and how you use it is your decision.

How do I scrape Tripadvisor reviews without getting blocked?

Tripadvisor sits behind DataDome, which answers a plain request with a challenge instead of the page. The /travel/tripadvisor-reviews plugin renders every review page in a real browser that passes the challenge, reads the reviews from the data Tripadvisor ships with the page, and fetches the first page again when it comes back without a review list. In ScrapeUnblocker's benchmark it returned reviews on 97.3% of 1,064 calls with different hotels, restaurants and attractions, about 8.2s per call.

What data do I get for each review?

For each review: the title and full text, the rating, the published date and the month of the stay, the trip type (couples, family, business and so on), the language, with a flag and the original language for machine-translated reviews, helpful votes, the reviewer's display name, location and contribution count, sub-ratings such as rooms or service, review photos and the owner's response with its date. The place summary adds the rating, review count, 1-5 star histogram, review counts by language, sub-ratings, ranking, address, coordinates, phone, website and price range.

Do I need a Tripadvisor API key?

No. Tripadvisor's own Content API needs a key of its own and returns only a few of the most recent reviews per location. The plugin needs no Tripadvisor account or key: send a review page URL or a location id with your ScrapeUnblocker key and get up to 200 reviews back per call, with nextPage to go further.

Can I get Tripadvisor reviews in another language?

Yes. Tripadvisor ties the review language to its regional site, so pass language (en, de, fr, it, es, pt, nl, ja, ko, ru, sv, tr or da) and the plugin reads that site's reviews. By default it uses the language of the URL's site, and when that site lists no reviews for the place, it switches to the place's most-reviewed of these languages. Reviews written in another language come back machine-translated, flagged by isMachineTranslated with their originalLanguage. Leave proxy_country blank: a pinned exit country makes the call much slower.

How much does it cost to scrape Tripadvisor reviews?

Tripadvisor shows 10 reviews per page, 15 for restaurants, and each review page fetched is billed as one request: a max_reviews=50 call on a hotel fetches five pages and counts as 5 requests, and pagesFetched shows the exact number. 1 request = 1 credit, EUR 1.00 per 1,000 on pay as you go, down to about EUR 0.55 per 1,000 on the Ultimate plan. Blocks and timeouts are not billed, and the free trial includes 500 requests with no card.

Related scrapers

Start scraping this site today

Free tier included. No credit card required to test it.