Tripadvisor Scraper
Pricing
from $0.01 / 1,000 results
Tripadvisor Scraper
Find TripAdvisor listings of restaurants, hotels and attractions by name and city: URL, name, street, city, bubble rating, review count, price range, ranking. Phone, website and reviews only when TripAdvisor serves the listing page (rare).
Pricing
from $0.01 / 1,000 results
Rating
0.0
(0)
Developer
The Howlers
Maintained by CommunityActor stats
0
Bookmarked
28
Total users
1
Monthly active users
7 days ago
Last modified
Categories
Security
Limited permissionsShare
TripAdvisor Business Scraper
Scrape TripAdvisor business listings for restaurants, hotels, attractions and vacation rentals: listing URL, TripAdvisor id, name, street, city, state, bubble rating, review count, price range and ranking. Find the TripAdvisor listing of any business from its name and city, for citation and NAP checks. Built by John Rippy (https://www.linkedin.com/in/johnrippy/ | https://johnrippy.link/).
Note: this actor runs in Demo Mode by default, so a default run returns labeled sample data and charges no task events (the Actor start fee still applies). Set demoMode to false to fetch real data.
How it reads TripAdvisor
TripAdvisor shows most automated browsers a CAPTCHA, and this actor never solves CAPTCHAs. It finds listings through Google's public index of TripAdvisor (Apify's Google SERP proxy), which gives each listing's URL, name, street, city, bubble rating, review count and price range. When Google hides a result's link, the actor follows Google's own click-through link to learn the listing URL. It then tries the listing page itself in a Camoufox stealth browser over Apify residential proxies: when TripAdvisor serves the page, the row adds the phone, website, full address, coordinates and reviews from it. Each row says where its data came from (dataSource) and which fields could not be read (unreadFields).
What to expect. TripAdvisor almost never serves its listing pages to automated sessions: in our November 2026 tests it served 0 pages in 11 runs. So on nearly every run phone, website, address.postalCode, coordinates, reviews and photos are null or empty, and NAP checks should compare name, street and city only. address.street is null when Google's index does not show it. A lookup usually takes 20 to 90 s with openListingPages off and 60 to 160 s with it on. Set openListingPages to false to skip the listing-page attempt.
Google's results vary between requests, so when the first two queries find nothing, a lookup asks twice more with differently worded queries before it reports not_found.
Quick Start
Test with Demo Mode (no task events)
{"demoMode": true}
Find one business (lookup)
{"demoMode": false,"scrapeType": "lookup","searchTerm": "Joe's Pizza","location": "New York, NY","includeReviews": false}
Returns one row: the matching listing, or a not_found row when no TripAdvisor listing for the business shows. Other listings with the same name in the area are in otherListings.
Search listings
{"demoMode": false,"scrapeType": "search","searchTerm": "pizza","location": "New York, NY","businessType": "restaurants","maxResults": 20,"includeReviews": false}
A listing by URL
{"demoMode": false,"scrapeType": "business_profile","businessUrl": "https://www.tripadvisor.com/Restaurant_Review-g60763-d425707-Reviews-Joe_s_Pizza-New_York_City_New_York.html"}
Input Parameters
| Parameter | Type | Default | Required | Description |
|---|---|---|---|---|
scrapeType | string | "business_profile" | No | lookup, business_profile, search or reviews |
businessUrl | string | - | No | TripAdvisor listing URL (business_profile, reviews) |
searchTerm | string | - | No | Lookup: the business name. Search: a keyword |
location | string | - | No | City and state, for example Nashville, TN |
phone | string | - | No | Lookup: phone of the business, compared with the listing when its page is read |
businessType | string | "all" | No | all, hotels, restaurants, attractions or vacation_rentals |
minRating | number | 0 | No | Minimum bubble rating |
priceLevel | array | [] | No | Price levels to keep |
includeReviews | boolean | true | No | Reviews from the listing page, when TripAdvisor serves it (rare; see above) |
maxReviewsPerBusiness | integer | 20 | No | Maximum reviews per listing |
includePhotos | boolean | false | No | Photo URLs from the listing page, when TripAdvisor serves it (rare; see above) |
maxResults | integer | 50 | No | Maximum number of listings |
openListingPages | boolean | true | No | Try each listing page for phone, website, full address and reviews |
sortBy | string | "relevance" | No | relevance, rating, review_count, price_low or price_high |
proxyConfiguration | object | {"useApifyProxy":true,"apifyProxyGroups":["RESIDENTIAL"]} | No | Proxy for listing pages |
demoMode | boolean | true | No | Return sample data without scraping |
webhookUrl | string | - | No | URL to POST results when scraping completes |
webhookPlatform | string | "custom" | No | Target platform for webhook payload formatting |
webhookHeaders | object | {} | No | Custom HTTP headers to send with the webhook |
Output
| Field | Description |
|---|---|
name, businessName | Listing name |
url, tripAdvisorUrl, tripAdvisorId, geoId | Listing URL and TripAdvisor ids |
businessType | Restaurant, Hotel, Attraction or Vacation Rental |
address | {street, city, state, country, postalCode}; a part that was not shown is null. fullAddress is the same on one line |
phone, website, coordinates | From the listing page when it was read; null otherwise (most runs) |
rating, reviewCount, priceLevel, ranking | Bubble rating, number of reviews, price range, ranking |
reviews, photos | From the listing page, when it was read and asked for (rare) |
dataSource | listing_page or search_engine (Google's index of TripAdvisor) |
unreadFields | Fields that could not be read because the listing page was not served |
match | Lookup only: how the listing was matched, with name score and city and phone checks |
A lookup with no match returns status: "not_found". When Google shows a matching listing but hides its link, the row has status: "unverified". When the search could not run, the row has status: "blocked". These rows charge no task events (the Actor start fee still applies).
Pricing
This actor uses pay-per-event billing:
| Event | When it is charged | Price |
|---|---|---|
| Actor start | Once when the run starts, one event per GB of memory (minimum one). At the default 2 GB of memory a run starts at $0.20 | $0.10 per GB |
| Listing Scraped | Per business scraped | $0.03 |
| Result | Each item written to the default dataset | $0.00001 |
Demo mode charges no task events: sample rows are never billed. Every run, a demo run included, still pays the Actor start fee and the small per-result fee shown above.
Troubleshooting
A lookup returned not_found
TripAdvisor lists restaurants, hotels, attractions and rentals; most other local businesses have no TripAdvisor listing. Check the spelling and the city TripAdvisor files the business under (it often uses the metro city, such as New York City for Brooklyn).
phone is null
TripAdvisor did not serve the listing page to the run (it showed a CAPTCHA, which the actor never solves). The listing URL, name, street, city, rating and review count still come from Google's index of TripAdvisor; unreadFields lists what is missing.
How do I test without paying for results?
Enable Demo Mode in the input. It returns labeled sample data so you can check the output format, and charges no task events; you pay only the Actor start fee and the per-result fee.
Built by John Rippy | Actor Arsenal