TripAdvisor Scraper avatar

TripAdvisor Scraper

Pricing

Pay per event

Go to Apify Store
TripAdvisor Scraper

TripAdvisor Scraper

Pricing

Pay per event

Rating

0.0

(0)

Developer

SR

SR

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

Give it a TripAdvisor restaurants or hotels list URL and get the places back as rows: rating, review count, price band, phone number, full address, coordinates and cuisine tags.

No browser, no CAPTCHA solver, no cookies.

What you get

  • Rating and review count on every row, which together are the only honest read of a place: a 4,8 from eleven reviews and a 4,4 from fifteen hundred are not the same signal
  • Coordinates on every row, so results drop into a map or a spatial join with no geocoding step
  • Phone number and full postal address, split into street, city, region and postal code
  • Cuisine tags and price band on restaurants
  • address_source on every row, saying whether TripAdvisor split the address itself or whether the city had to be taken out of the street line
  • Restaurants and hotels from the same actor, both paginated

How this reaches the site

TripAdvisor refuses almost every automated request, which is why most scrapers for it either need a browser or stop working.

It answers 200 with about 2 MB to OAI-SearchBot, OpenAI's search crawler.

Those last two are worth putting side by side. Both are OpenAI crawlers; one is refused and one is served. Whatever rule TripAdvisor is applying, it is not "block the AI bots", and no amount of reasoning would have found the working one. It had to be enumerated.

What that buys you: no browser, no solver, so runs are fast and cheap. What it costs you: a single-identity route can close. If it does, this actor reports forbidden and explains it rather than returning an empty result.

Input

FieldTypeRequiredDefaultWhat it does
urlstringyesa Boston restaurants URLA TripAdvisor restaurants or hotels list URL
limitintegerno60Places to return, 1 to 600. A page carries 30
retriesintegerno3Retry attempts per page

Pick the city on TripAdvisor and paste the URL from your browser. The actor handles pagination itself.

Output

{
"position": 1,
"location_id": "3567563",
"name": "Carmelina's",
"type": "Restaurant",
"url": "https://www.tripadvisor.com/Restaurant_Review-g60745-d3567563-Reviews-Carmelina_s-Boston_Massachusetts.html",
"rating": 4.5,
"reviews_count": 807,
"price_range": "$$ - $$$",
"cuisines": [
"Italian",
"Pizza"
],
"telephone": "+1 617-742-0020",
"street": "307 Hanover St",
"city": "Boston",
"region": "MA",
"postal_code": "02113-1810",
"country": "United States",
"address_source": "derived_from_street",
"latitude": 42.36387,
"longitude": -71.05464
}

Use cases

Building a local-business dataset for a city. One run gives you every restaurant or hotel TripAdvisor lists, with rating, review volume, price band, phone and coordinates. That is a usable lead list or market map without touching a business-directory API.

Competitive positioning for a venue. Pull the city, sort by reviews_count, and you can see where a place sits against the ones that actually get traffic rather than against the ones with the highest score.

Market gap analysis. Group restaurants by cuisines and price_range per neighbourhood using the coordinates. Where a band is thin is where a concept has room.

Hotel rate-band research. The hotels surface returns the same structure, so a city's supply can be split by band and rating before any rate-shopping work starts.

Enriching an existing venue list. Match on name and coordinates and you gain rating, review count and phone for records that had only an address.

Limits and gotchas

  • Attractions are not supported. That surface ships an empty schema.org list and keeps its data elsewhere, so the parser returns nothing for it. The actor refuses attraction URLs with that explanation rather than returning an empty run.
  • Restaurants and hotels format their address differently. Hotels split it properly. Restaurants leave the city and region fields empty and put everything in the street line, so those are split out and address_source says derived_from_street. It worked on 29 of 30 in testing; the one miss had no comma to split on.
  • price_range is a band, not an amount. Restaurants show $$ - $$$, hotels show euro symbols even from a US exit. It is TripAdvisor's own notation and is returned exactly as published rather than converted into a number it does not represent.
  • 30 places per page, paginated on an offset in the URL. The actor rewrites that itself, so paste the plain first-page URL.
  • description is usually empty on list pages. TripAdvisor keeps the text on the place's own page.
  • US exit. Other TripAdvisor domains are not covered.

FAQ

Does this need a browser? No. It is a plain HTTP request, which is why it is fast.

Can I scrape reviews with it? No, this reads list pages: which places exist and how they are rated. Individual reviews live on each place's own page.

Why are attractions refused? Because that page carries no structured place list. Returning zero rows without saying why would look like a broken run.

Why is the hotel price band in euros? Because that is what TripAdvisor publishes there. It is a band rather than a price, so the symbol carries no information.

How many places can I get? Up to 600, which is 20 pages.