2,000 TripAdvisor reviews in 62 seconds for one cent: what one Times Square hotel's guests actually complain about

2026-11-04来源 dev.to DataEnglish

TripAdvisor shows a hotel's all-time score at the top of the page. For an old hotel with 18,000 reviews, that number mostly describes stays from years ago. If you want to know what guests say now, you need the recent reviews themselves, in a table.

So we pulled them. One run of our TripAdvisor Reviews Scraper on Apify, pointed at the Hotel Edison Times Square, asking for 2,000 reviews:

  • Time: 62 seconds.
  • Cost: $0.0096 of compute on our side. A user pays $0.50 per 1,000 reviews on the Starter tier, so this run is $1.00 for anyone else.
  • Coverage: 2,000 reviews from 12 Dec 2024 to 3 Nov 2026, plus one row for the hotel itself.

Every number below comes from that one run. Reviews are written by members of the public, so this post shows counts only: no reviewer names and no quotes from reviews.

The input

{ "startUrls": [ { "url": "https://www.tripadvisor.com/Hotel_Review-g60763-d93437-Reviews-Hotel_Edison_Times_Square-New_York_City_New_York.html" } ], "maxReviewsPerPlace": 2000 } 

Any TripAdvisor review page works the same way: hotels, restaurants and attractions, on any TripAdvisor country site. Filters are optional: ratings (for example only 1 and 2 stars), reviewsSince, languages, tripTypes (family, couples, solo, business, friends), reviewsContaining and sortBy.

From Python:

from apify_client import ApifyClient client = ApifyClient("YOUR_APIFY_TOKEN") run = client.actor("locaihost/tripadvisor-reviews").call(run_input={ "startUrls": [{"url": "https://www.tripadvisor.com/Hotel_Review-g60763-d93437-Reviews-Hotel_Edison_Times_Square-New_York_City_New_York.html"}], "maxReviewsPerPlace": 2000, }) rows = list(client.dataset(run["defaultDatasetId"]).iterate_items()) reviews = [r for r in rows if r["type"] == "review"] 

Each review row has the rating, title, full text, language (and whether TripAdvisor machine-translated it), published date, travel month, trip type, sub-ratings when given, helpful votes, photo count and the hotel's reply. Reviewer names are off by default. The place row carries the address, coordinates, all-time rating and histogram, sub-scores, the "#169 of 529 hotels" ranking, amenities, and three numbers computed from the reviews you collected: owner reply rate, average reply lag and the rating over the last 90 days.

Finding 1: the all-time score hides two good years

Reviews Average 5 stars
All time (TripAdvisor's own histogram) 18,836 3.9 40%
Latest 2,000 (Dec 2024 to Nov 2026) 2,000 4.43 71%

The headline 3.9 is dragged down by older stays: 2,482 of the hotel's one and two-star reviews are in the all-time histogram, and only 176 of them are in the last two years. Month by month, the recent average sits between 4.18 (September 2026) and 4.67 (April 2025), with no trend down.

If you compare hotels by their all-time score, an older property that has improved looks worse than it is. A 90-day or 12-month average from the raw reviews is fairer, and it's one column in the output (ratingLast90d: 4.35 over 250 reviews here).

Finding 2: who is happiest

Trip type Reviews Average
Solo 93 4.78
Friends 256 4.68
Family 620 4.58
Couples 262 4.47
Business 124 4.34
Not given 645 4.14

Business travellers rate it lowest of the groups that say why they came. Reviewers who don't pick a trip type are the least happy of all, which is common: an angry reviewer fills in fewer optional fields.

Finding 3: what the bad reviews are about

We split the reviews into 176 low (1 or 2 stars) and 1,701 high (4 or 5 stars) and counted how many in each group mention a word at least once (whole words only):

Mentioned Low reviews High reviews
noise / noisy 23% 7%
bathroom 26% 8%
old / dated / outdated 20% 5%
check-in 17% 8%
window 16% 1%
price / expensive / overpriced 18% 6%
rude 12% 0%
fee / fees 11% 1%
air conditioning / AC 11% 2%
dirty 9% 0%
staff 44% 54%
location 34% 54%
clean 15% 33%

The pattern is clear even with simple word counts. Happy guests talk about the staff and the location. Unhappy guests talk about the room itself (bathroom, noise through the windows, an old building, the air conditioning) and about the front desk (check-in, rude, fees). "Staff" shows up in both groups, because staff are the reason for both the best and the worst reviews.

This is the cheapest version of the analysis. With the full text in a dataframe, the next step is an embedding or topic model over the 176 low reviews, which takes a few seconds on a laptop.

Finding 4: the hotel answers almost everything

1,991 of the 2,000 reviews have a reply from the hotel (99.6%), including 175 of the 176 low ones, and the average reply comes 4.6 days after the review. That's a well-run reply process. For a competitor analysis, reply rate and reply lag are two of the most telling columns: they show which hotels have someone watching their reviews.

What it doesn't do

  • It reads what a logged-out visitor can see. A list stops at about 10,000 reviews; for bigger places, run it per star rating to go deeper.
  • Machine-translated reviews are marked (machineTranslated). 161 of these 2,000 were translations; filter them out with languages if you only want originals.
  • It doesn't name staff. Names in the hotel's replies are replaced with [name removed].

Try it

The Actor is locaihost/tripadvisor-reviews on the Apify Store: $0.50 per 1,000 reviews and $1 per 1,000 places on the Starter tier, cheaper on the higher tiers, and links that aren't a TripAdvisor place are never charged. It also works from AI agents through Apify's MCP server, so "pull the last 500 reviews of these 10 hotels and tell me what the one-star ones have in common" is one tool call away.

If you run it and something looks wrong, open an issue on the Actor page and we'll fix it the same day.

原文:https://www.a8q9.cn/en/article/2-000-tripadvisor-reviews-in-62-seconds-for-one-cent-what-one-times-square-hotel-7442ec.html

相关文章