TripAdvisor Scraper
Pricing
Pay per event
TripAdvisor Scraper
Pricing
Pay per event
Rating
0.0
(0)
Developer
SR
Maintained by CommunityActor 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_sourceon 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
| Field | Type | Required | Default | What it does |
|---|---|---|---|---|
url | string | yes | a Boston restaurants URL | A TripAdvisor restaurants or hotels list URL |
limit | integer | no | 60 | Places to return, 1 to 600. A page carries 30 |
retries | integer | no | 3 | Retry 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_sourcesaysderived_from_street. It worked on 29 of 30 in testing; the one miss had no comma to split on. price_rangeis 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.
descriptionis 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.
Related Actors
- Google Maps Scraper — the same kind of local record from Google
- Trustpilot Reviews — review data for businesses
- Booking Scraper — accommodation listings