TripAdvisor Scraper — Hotels, Restaurants & Attractions
Pricing
from $1.02 / 1,000 listings
TripAdvisor Scraper — Hotels, Restaurants & Attractions
Export a city's TripAdvisor hotel, restaurant or attraction listings in TripAdvisor's own ranked order, with rating, review count, price band, contact and location on every row. List pages only — there is no detail or reviews endpoint behind this Actor.
Pricing
from $1.02 / 1,000 listings
Rating
0.0
(0)
Developer
The Netaji
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
12 days ago
Last modified
Categories
Share
TripAdvisor Listings Scraper — Hotels, Restaurants & Attractions
The Actor reads one of a city's three TripAdvisor list pages — Hotels, Restaurants, or Attractions — and returns every row as a structured record, in TripAdvisor's own ranked order.
This Actor covers list pages only. It does not offer a detail lookup or a reviews export, for either kind, and none is planned: TripAdvisor's own review and detail pages refuse automated access at the source, independent of this Actor, so no service can reliably offer them today. What list pages publish is what this Actor returns — rank, rating, review count, price band, phone, address, and coordinates — not full review text.
Accepted input
| Field | Type | Required | Description |
|---|---|---|---|
startUrl | string | no | A TripAdvisor Hotels, Restaurants or Attractions listing URL. When it can be read, geo_id, location_slug and kind below are filled in from it; any of the three set directly is kept as given. |
geo_id | integer | yes, unless startUrl supplies it | TripAdvisor's id for the city or region — the g number in its URL, e.g. 60713 for /Hotels-g60713-San_Francisco_California-Hotels.html. |
location_slug | string | yes, unless startUrl supplies it | The underscored place name from the same URL, e.g. San_Francisco_California. There is no lookup that turns a geo id into a slug, so both are needed. |
kind | enum | no, default hotels | hotels, restaurants, or attractions. |
offset | integer | no, default 0 | Where to start reading. TripAdvisor pages in steps of 30 — page two is 30, page three is 60 — up to 2970. A value that is not a multiple of 30 is rejected rather than rounded. |
maxItems | integer | no, default 30 | Maximum rows to save across pages. 0 removes the limit. |
{"geo_id": 60713,"location_slug": "San_Francisco_California","kind": "hotels","maxItems": 90}
Pasting a URL works the same way:
{"startUrl": "https://www.tripadvisor.com/Hotels-g60713-San_Francisco_California-Hotels.html","maxItems": 90}
Response fields
| Field | Contents |
|---|---|
position | Row's rank on its page. Restarts at 1 on every page. |
schema_type | Hotel, Restaurant, or TouristAttraction — the honest predictor of how populated the rest of the row is. |
name | Listing's name. |
url | TripAdvisor's own link for the row. |
geo_id | The row's own g id, as a string. Usually the geo asked for, but not always — a listing can carry a neighbouring city's geo. |
location_id | The row's d id, TripAdvisor's id for the property. null when the row's URL did not carry one. |
rating | Average rating out of rating_scale_max. null on attractions. |
rating_scale_max | Top of the rating scale as TripAdvisor states it, typically 5. Not assumed, because not every rating site uses the same scale. |
review_count | Exact review count. null on attractions. |
price_range | Price band as TripAdvisor renders it, e.g. $$$. |
telephone | Phone number, when published. |
image | Lead photo, when the row carries one. |
address | Structured street address. null for every attraction. |
geo | Latitude and longitude. The one substantial field attractions do carry. |
kind | Which of the three lists the row came from. |
coverage | States why a row is thin, when it is. Populated for kind=attractions; null for hotels and restaurants. |
{"position": 1,"schema_type": "Hotel","name": "InterContinental Mark Hopkins","rating": 4.5,"rating_scale_max": 5,"review_count": 3309,"price_range": "$$$","kind": "hotels","coverage": null}
Attractions carry less than hotels and restaurants
TripAdvisor publishes attraction rows as TouristAttraction, which states a name and coordinates and nothing else — no rating, no review count, no address. This is not a parsing gap; the site does not put more on the page for that kind. coverage states the reason directly on a kind=attractions response, so a page of null values is identifiable as expected rather than as a broken run.
Behaviour on paging and limits
A page carries exactly 30 rows. next_offset on the response is where to continue; it is null once a page comes back short, which is the reliable end-of-list signal — TripAdvisor publishes no total count for a city, so a full page is a suggestion that more rows exist, not a guarantee. A run interrupted partway resumes at the exact row it stopped on rather than re-saving what already reached the dataset.
offset tops out at 2970, so a single kind for a single city returns at most 3,000 rows. A city with fewer listings than that ends earlier, when TripAdvisor's own page does.
Frequently asked questions
Why do I get zero rows instead of an error for a valid geo id?
A city can have no attractions worth listing, or fewer restaurants than the requested offset reaches. An empty results array with next_offset: null is TripAdvisor's own end of that list, not a failure of the request.
Why did startUrl not fill in location_slug?
The URL parser recognises a Hotels, Restaurants, or Attractions listing URL and reads geo_id, location_slug, and kind from its segments. A URL outside that shape — a detail page, a search results page, or a link with an unusual location name — is left unparsed, and geo_id and location_slug need to be set directly.
Can I get reviews or the full detail page for one listing? No. TripAdvisor's review and detail pages are not reachable through this Actor and none is planned — see the note at the top. Rating, review count, price band, phone, address, and coordinates come from the list page itself, and that is the complete set this Actor can offer.
Why is rating sometimes null on a hotel or restaurant row?
TripAdvisor itself has not published a rating for that listing — a new or lightly reviewed property, most often. It is returned as null rather than a guessed value.
How do I read every hotel in a large city?
Set maxItems to 0 and leave offset at its default. The run walks forward in steps of 30 until TripAdvisor returns a page that is not full, or until the 3,000-row ceiling is reached.