TripAdvisor Scraper — Hotels, Restaurants & Attractions avatar

TripAdvisor Scraper — Hotels, Restaurants & Attractions

Pricing

from $1.02 / 1,000 listings

Go to Apify Store
TripAdvisor Scraper — Hotels, Restaurants & Attractions

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

The Netaji

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

12 days ago

Last modified

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

FieldTypeRequiredDescription
startUrlstringnoA 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_idintegeryes, unless startUrl supplies itTripAdvisor'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_slugstringyes, unless startUrl supplies itThe 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.
kindenumno, default hotelshotels, restaurants, or attractions.
offsetintegerno, default 0Where 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.
maxItemsintegerno, default 30Maximum 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

FieldContents
positionRow's rank on its page. Restarts at 1 on every page.
schema_typeHotel, Restaurant, or TouristAttraction — the honest predictor of how populated the rest of the row is.
nameListing's name.
urlTripAdvisor's own link for the row.
geo_idThe 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_idThe row's d id, TripAdvisor's id for the property. null when the row's URL did not carry one.
ratingAverage rating out of rating_scale_max. null on attractions.
rating_scale_maxTop of the rating scale as TripAdvisor states it, typically 5. Not assumed, because not every rating site uses the same scale.
review_countExact review count. null on attractions.
price_rangePrice band as TripAdvisor renders it, e.g. $$$.
telephonePhone number, when published.
imageLead photo, when the row carries one.
addressStructured street address. null for every attraction.
geoLatitude and longitude. The one substantial field attractions do carry.
kindWhich of the three lists the row came from.
coverageStates 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.