# GetYourGuide Reviews Scraper (`piotrv1001/getyourguide-reviews-scraper`) Actor

The GetYourGuide Reviews Scraper extracts traveler reviews from any GetYourGuide activity — full review text, star ratings, per-aspect scores, dates, photos, traveler type, reviewer country and languages — ideal for tour reputation monitoring, competitor research and sentiment analysis.

- **URL**: https://apify.com/piotrv1001/getyourguide-reviews-scraper.md
- **Developed by:** [FalconScrape](https://apify.com/piotrv1001) (community)
- **Categories:** Travel, Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 reviews

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

### 🚀 GetYourGuide Reviews Scraper

Extract **traveler reviews from any GetYourGuide activity** — with the **full review text**, star rating, per-category sub-ratings, date, review photos, traveler type and the reviewer's name and home country. Paste one or more GetYourGuide activity URLs, choose how many reviews you want, and get clean structured data you can download as JSON, CSV or Excel, or pull straight from the [Apify API](https://docs.apify.com/api/v2).

Where most GetYourGuide review scrapers stop at the first few hundred reviews, this one keeps going: it works around the depth limit built into GetYourGuide's own review feed and reaches **thousands of reviews on the big sellers**, not just the newest page. Reviews come newest first by default, it runs across every GetYourGuide country and language from a single input field, and it needs **no proxies**, which keeps runs fast and cheap.

### ✨ Features

- 💬 **Complete review text** — the whole review exactly as the traveler wrote it, in their original language, never a truncated snippet.
- 📈 **Real depth** — pulls far beyond the few hundred reviews a naive scrape returns, so activities with thousands of reviews actually give you thousands.
- ⭐ **Ratings that break down** — the overall star rating plus per-aspect sub-scores for guide, transport, value for money, organization, safety and meeting point.
- 🌍 **Reviewer origin** — the reviewer's name, home country and country code on every record, so you can slice feedback by market.
- 👨‍👩‍👧 **Traveler segmentation** — GetYourGuide's own traveler type on each review: solo, couple, family with kids, family with teens, group of friends and more.
- 📸 **Review photos** — direct image URLs for the photos travelers attached to their reviews.
- 🌐 **Optional translation** — reviews arrive in dozens of languages; switch on translation and non-matching reviews get an extra field with the text in the language you asked for.
- ⭐ **Star rating filter** — collect only 1- and 2-star reviews for complaint analysis, or only 5-star for testimonial mining.
- 🔀 **Sorting** — newest first, oldest first, highest rating, lowest rating or most relevant.
- 📊 **Free activity stats** — every record carries the activity's total review count, average rating and per-category averages at no extra cost.
- 🔗 **City and search URLs supported** — paste a city, category or search page instead of an activity URL and reviews are collected for the activities it lists.
- ⚡ **Fast and proxy-free** — thousands of reviews per minute, with no proxy costs passed on to you.

### 💡 Why use GetYourGuide Reviews Scraper?

- **Reputation monitoring** — schedule a daily run on your own tours and get alerted the moment a 1- or 2-star review lands.
- **Competitor research** — read exactly what travelers praise and complain about on every rival tour in a city.
- **Tour operator benchmarking** — compare average ratings, review volume and per-category scores across dozens of activities.
- **Guide performance** — reviews name guides constantly, and the per-aspect `rating_guide` score makes weak guiding measurable.
- **Market analysis** — reviewer country plus traveler type tells you which markets and which traveler segments an activity actually converts.
- **AI and sentiment analysis** — feed thousands of real reviews straight into an LLM or sentiment model instead of scraping them yourself.

### 🛠️ How to use GetYourGuide Reviews Scraper

1. **Add activity URLs** — paste links like `https://www.getyourguide.com/rome-l33/colosseum-arena-floor-guided-tour-t1031725/`. Add as many as you want.
2. **Or paste a city URL** — something like `https://www.getyourguide.com/paris-l16/` works too, and reviews are collected for the activities listed there.
3. **Set the review limit** — choose how many reviews to collect per activity (50 by default).
4. **Pick a sort order and filters** — newest first by default; optionally restrict to specific star ratings.
5. **Run the Actor** — start it from the Console, on a schedule, or via the API.
6. **Download your data** — export as JSON, CSV, Excel or XML, or send it straight to Google Sheets, Slack, Zapier, Make or your own webhook.

### 📥 Input

| Field                     | Type    | Description                                                                                                 |
| ------------------------- | ------- | ----------------------------------------------------------------------------------------------------------- |
| `startUrls`               | array   | **Required.** GetYourGuide activity URLs, or city/category/search listing URLs.                             |
| `maxReviewsPerActivity`   | integer | Maximum reviews to collect per activity. Default `50`.                                                      |
| `sortBy`                  | string  | `DATE_DESC` (newest first, default), `DATE_ASC`, `RATING_DESC`, `RATING_ASC` or `RECOMMENDED`.              |
| `ratings`                 | array   | Only collect reviews with these star ratings, e.g. `["1","2"]`. Empty means all reviews.                    |
| `maxActivitiesPerListing` | integer | How many activities to take from each listing URL. Default `10`. Ignored for direct activity URLs.          |
| `translateTo`             | string  | Optional language code such as `en` or `de`. Reviews in other languages get an extra translated text field. |

Example input:

```json
{
    "startUrls": [{ "url": "https://www.getyourguide.com/rome-l33/colosseum-arena-floor-guided-tour-t1031725/" }],
    "maxReviewsPerActivity": 50,
    "sortBy": "DATE_DESC",
    "ratings": [],
    "maxActivitiesPerListing": 10,
    "translateTo": ""
}
```

### 📊 Sample output data

Each review is one dataset item. You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.

```json
[
    {
        "activityId": "1031725",
        "activityUrl": "https://www.getyourguide.com/rome-l33/colosseum-arena-floor-guided-tour-t1031725/",
        "activityTotalReviews": 459,
        "activityAverageRating": 4.858687237814821,
        "activityRatingByCategory": {
            "guide": 4.89418,
            "transportation": 4.8756757,
            "service": 0,
            "organization": 0,
            "valueForMoney": 4.779841,
            "safety": 0,
            "meetingPoint": 0
        },
        "reviewId": 126473606,
        "title": "",
        "message": "We had an excellent time with Massimo. He gave us lots of history and time to stop to take pictures. We really enjoyed this tour and would definitely do this one again. We highly recommend.",
        "messageTranslated": null,
        "rating": 5,
        "created": "2026-08-11T07:12:18+02:00",
        "language": "en",
        "authorName": "Pamela",
        "authorCountry": "United States",
        "authorCountryCode": "US",
        "isAnonymous": false,
        "isPartnerReview": false,
        "travelerType": "family_old",
        "travelerTypeLabel": "Family with teens",
        "ratingByCategory": {
            "rating_overall": 5,
            "rating_guide": 5,
            "rating_transport": 5,
            "rating_value": 5
        },
        "photos": [
            "https://cdn.getyourguide.com/img/review/31fe3d949ba90aee365d929bcbe8eb0684badf6f3d119732d3c19d871ebb2d95.jpg/99.jpg"
        ],
        "scrapedAt": "2026-08-12T09:55:42.410Z"
    }
]
```

### 📋 Data fields

| Field                      | Type    | Description                                                                               |
| -------------------------- | ------- | ----------------------------------------------------------------------------------------- |
| `activityId`               | string  | GetYourGuide ID of the reviewed activity                                                  |
| `activityUrl`              | string  | URL of the activity the review belongs to                                                 |
| `activityTotalReviews`     | number  | Total number of reviews the activity has on GetYourGuide                                  |
| `activityAverageRating`    | number  | Overall average rating of the activity, 1–5                                               |
| `activityRatingByCategory` | object  | Activity averages per aspect: guide, transportation, service, organization, value, safety |
| `reviewId`                 | number  | Stable identifier for the review                                                          |
| `title`                    | string  | Review headline, when the traveler left one                                               |
| `message`                  | string  | Full review text, in the language the traveler wrote it                                   |
| `messageTranslated`        | string  | Review text in the language set by `translateTo`, or `null` when translation is off       |
| `rating`                   | number  | Star rating given by the reviewer, 1–5                                                    |
| `created`                  | string  | ISO timestamp of when the review was posted                                               |
| `language`                 | string  | Language code of the original review text, e.g. `en`, `de`, `pt`                          |
| `authorName`               | string  | Reviewer's first name as displayed                                                        |
| `authorCountry`            | string  | Reviewer's home country                                                                   |
| `authorCountryCode`        | string  | ISO country code of the reviewer                                                          |
| `isAnonymous`              | boolean | Whether the review was left anonymously                                                   |
| `isPartnerReview`          | boolean | Whether the review came from a GetYourGuide distribution partner                          |
| `travelerType`             | string  | Traveler segment code, e.g. `couple`, `family_young`, `solo`                              |
| `travelerTypeLabel`        | string  | Human-readable traveler segment, e.g. "Family with kids"                                  |
| `ratingByCategory`         | object  | This reviewer's own sub-scores: overall, guide, transport, value and more                 |
| `photos`                   | array   | Image URLs of photos attached to the review                                               |
| `scrapedAt`                | string  | ISO timestamp of when the review was collected                                            |

### 💰 How much does it cost to scrape GetYourGuide reviews?

This Actor uses **pay per event** pricing, so you only pay for the data you actually receive. There is **no fee for starting a run** — a run that finds nothing costs nothing.

| Event             | Price      | When it is charged                                                                |
| ----------------- | ---------- | --------------------------------------------------------------------------------- |
| Review scraped    | **$0.002** | Once per review returned                                                          |
| Review translated | **$0.001** | Only when `translateTo` is set, and only for reviews actually in another language |

That works out to **$0.20 per 100 reviews** and **$2 per 1,000 reviews** — cheaper than the alternatives on the Store, while returning far more reviews per activity. A daily check on 10 tours pulling the 20 newest reviews each costs about **$0.40 per day**.

New Apify accounts include **$5 in free usage** every month on the free plan, which is enough for around 2,500 reviews before you pay anything.

### ⚙️ Tips and advanced options

- **Keep the limit tight for monitoring.** For daily checks, `maxReviewsPerActivity` of 20–30 with the default newest-first sort is plenty — you pay nothing for history you already have.
- **Raise the limit for analysis.** Set it to several thousand on a popular activity and the Actor works its way deep into the back catalogue automatically; no extra setting required.
- **Filter by rating instead of after the fact.** Setting `ratings` to `["1","2"]` means you only pay for the negative reviews you actually wanted.
- **Only translate when you need it.** Translation is off by default and costs extra, so leave it empty unless you plan to read or model the text directly.
- **Batch your activities.** Put every activity into one run rather than starting a run per URL; activities are processed in parallel, so a batch finishes far faster.
- **Use city URLs for discovery, activity URLs for precision.** A city URL is handy for surveying a destination, but `maxActivitiesPerListing` caps it — for a fixed set of tours, paste their activity URLs directly.
- **Schedule it.** Use [Apify Schedules](https://docs.apify.com/platform/schedule) to run the Actor every morning and route new reviews to Slack, a Google Sheet or your own webhook via [integrations](https://docs.apify.com/platform/integrations).

### ❓ FAQ

**Is scraping GetYourGuide reviews legal?**
This Actor collects only publicly available information — reviews that anyone can read on GetYourGuide without logging in. Web scraping of public data is generally legal, but how you *use* the data matters. Do not use it in ways that breach applicable privacy laws such as GDPR, and consult a lawyer if you plan to process personal data. See [Is web scraping legal?](https://blog.apify.com/is-web-scraping-legal/) for a longer discussion.

**How many reviews can I get from one activity?**
Far more than a plain scrape of the review feed allows. Activities with a few hundred reviews come back complete, and on the biggest sellers — the ones with tens of thousands of reviews — the Actor reaches into the thousands rather than stopping at the first page or two.

**Where do I find an activity URL?**
Open the tour on GetYourGuide and copy the address bar. Any locale works — `getyourguide.com`, `getyourguide.de`, `getyourguide.fr` and the rest all resolve to the same activity. You can also paste just the numeric activity ID.

**In what order do reviews come back?**
Newest first by default, which is what you want for monitoring: a run with a limit of 50 gives you the 50 most recent reviews. Activities are processed in parallel, so rows from different activities interleave in the dataset — sort by `created` if you need exact ordering.

**Why are reviews in so many languages?**
Because travelers write them that way, and GetYourGuide stores the original. The `language` field tells you which language each review is in, and setting `translateTo` adds a translated version alongside the original.

**Why are some rating categories zero?**
GetYourGuide only asks about aspects relevant to the tour, so a walking tour has no transport score and a self-guided ticket has no guide score. Zero means "not rated for this activity", not "rated badly".

**Do I need proxies?**
No. This Actor does not require proxies at all, which is why it runs fast and costs less than the alternatives.

**Something is not working or I need a different field.**
Report it on the **Issues** tab of this Actor and it will be looked at. If you need a tailored version or a different travel dataset, [custom solutions](https://apify.com/custom-solutions) are available.

Start mining real traveler feedback from GetYourGuide today! 🚀

# Actor input Schema

## `startUrls` (type: `array`):

GetYourGuide activity URLs to scrape reviews from. City, category or search listing URLs also work — the Actor picks up the activities linked on them.

## `maxReviewsPerActivity` (type: `integer`):

Maximum number of reviews to collect for each activity.

## `sortBy` (type: `string`):

Order in which reviews are collected.

## `ratings` (type: `array`):

Only collect reviews with these star ratings. Leave empty for all reviews.

## `maxActivitiesPerListing` (type: `integer`):

How many activities to take from each city, category or search listing URL. Ignored for direct activity URLs.

## `translateTo` (type: `string`):

Optional. Language code (e.g. 'en', 'de', 'es'). Reviews written in another language get an extra translated text field. Leave empty to keep original text only.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.getyourguide.com/rome-l33/colosseum-arena-floor-guided-tour-t1031725/"
    }
  ],
  "maxReviewsPerActivity": 50,
  "sortBy": "DATE_DESC",
  "ratings": [],
  "maxActivitiesPerListing": 10,
  "translateTo": ""
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "startUrls": [
        {
            "url": "https://www.getyourguide.com/rome-l33/colosseum-arena-floor-guided-tour-t1031725/"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("piotrv1001/getyourguide-reviews-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "startUrls": [{ "url": "https://www.getyourguide.com/rome-l33/colosseum-arena-floor-guided-tour-t1031725/" }] }

# Run the Actor and wait for it to finish
run = client.actor("piotrv1001/getyourguide-reviews-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "startUrls": [
    {
      "url": "https://www.getyourguide.com/rome-l33/colosseum-arena-floor-guided-tour-t1031725/"
    }
  ]
}' |
apify call piotrv1001/getyourguide-reviews-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,piotrv1001/getyourguide-reviews-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/lirGgRYpyUIIMdLS8/builds/El8jhhaPvshf8f0df/openapi.json
