# GetYourGuide Tours Scraper (`crawloop/getyourguide-tours-scraper`) Actor

Scrape public GetYourGuide tours and activities by destination, search, or activity URL. Export title, price, currency, rating, review count, location, and URL as JSON. No login.

- **URL**: https://apify.com/crawloop/getyourguide-tours-scraper.md
- **Developed by:** [Andrej Kiva](https://apify.com/crawloop) (community)
- **Categories:** Travel, E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $6.00 / 1,000 activities

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## GetYourGuide Tours Scraper

> **Disclaimer:** Unofficial tool — not affiliated with, sponsored by, or endorsed by GetYourGuide GmbH or its affiliates. Data is read from publicly accessible destination, search, and activity pages only. No login. You are responsible for complying with the site’s terms. No warranty on accuracy or availability. Provided for informational and research use.

Scrape public GetYourGuide tours and activities into one dataset. Each row has the title, from price, currency, rating, review count, location, images, and the activity URL.

Tour operators use it to compare prices and ratings in a destination. OTAs use it as a GetYourGuide API alternative without a partner key. Export JSON or CSV from the dataset with Python, Node.js, cURL, or an MCP client.

### When to use

Use this Actor for a public destination page, a keyword search, or a list of activity URLs when you need price, rating, and review count.

Skip it for bookings, availability calendars, private supplier dashboards, and anything behind a login.

### Key features

- Destination URLs, keyword search, or a single activity URL
- From price and currency, average rating, and review count
- Location, next listed start, and up to five images on the same row
- Page through a destination until max activities or max pages
- Filter by minimum rating, minimum reviews, or maximum price
- One saved activity per row

### Input

| Field | Default | What it does |
| :--- | :--- | :--- |
| Search queries | empty | Keyword such as `Rome` or `Colosseum` |
| Destination or activity URLs | empty | Public destination, search, or activity page |
| Max activities | 50 | Stop after this many saved rows |
| Max pages per URL | 5 | Result pages for each destination or search |
| Currency | USD | Currency requested on the page |
| Minimum rating | none | Drop lower ratings |
| Minimum reviews | none | Drop activities with fewer reviews |
| Maximum price | none | Drop higher prices in the requested currency |
| Proxy | Unblocker | Required. Datacenter IPs are blocked |

```json
{
  "startUrls": [{ "url": "https://www.getyourguide.com/rome-l33/" }],
  "maxItems": 20,
  "currency": "USD",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": ["UNBLOCKER"],
    "apifyProxyCountry": "US"
  }
}
```

### Output

| Field | Meaning |
| :--- | :--- |
| `title`, `url`, `activityId` | Name, public page, and id |
| `price`, `currency` | From price in the requested currency |
| `rating`, `reviewCount` | Average rating and how many ratings |
| `location`, `duration`, `nextStart` | Place name, card duration, and the next listed start when the page publishes one |
| `image`, `images` | First image and up to five listing images |

```json
{
  "activityId": "195566",
  "title": "Colosseum, Roman Forum & Palatine Hill Guided Tour",
  "url": "https://www.getyourguide.com/rome-l33/colosseum-roman-forum-palatine-hill-guided-tour-t195566/",
  "price": 55.57,
  "currency": "USD",
  "rating": 4.7627,
  "reviewCount": 91634,
  "location": "Rome",
  "nextStart": "2026-10-03T10:00:00+02:00"
}
```

### Use cases

- Compare from-prices and ratings for tours in one city
- Watch a destination page for new activity ids
- Pull a shortlist of activity URLs into a sheet
- Filter to highly rated tours under a price cap
- Feed an MCP assistant a destination and get structured tour rows

### Integration examples

Replace `YOUR_TOKEN` and the Actor id after you open the Actor in Apify Console. These calls start a run and do not set a price.

#### Node.js

```javascript
import { ApifyClient } from "apify-client";

const client = new ApifyClient({ token: "YOUR_TOKEN" });
const run = await client.actor("crawloop/getyourguide-tours-scraper").call({
  searchQueries: ["Rome"],
  maxItems: 20,
  currency: "USD",
  proxyConfiguration: {
    useApifyProxy: true,
    apifyProxyGroups: ["UNBLOCKER"],
    apifyProxyCountry: "US",
  },
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

#### Python

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_TOKEN")
run = client.actor("crawloop/getyourguide-tours-scraper").call(run_input={
    "searchQueries": ["Rome"],
    "maxItems": 20,
    "currency": "USD",
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["UNBLOCKER"],
        "apifyProxyCountry": "US",
    },
})
items = client.dataset(run["defaultDatasetId"]).list_items().items
print(items)
```

#### cURL

```bash
curl -X POST "https://api.apify.com/v2/acts/crawloop~getyourguide-tours-scraper/runs?token=YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d "{\"searchQueries\":[\"Rome\"],\"maxItems\":20,\"currency\":\"USD\",\"proxyConfiguration\":{\"useApifyProxy\":true,\"apifyProxyGroups\":[\"UNBLOCKER\"],\"apifyProxyCountry\":\"US\"}}"
```

### MCP and AI assistants

Use this Actor from AI tools via [Apify MCP](https://docs.apify.com/platform/integrations/mcp).
Connect your Apify account, then call this Actor by its Store name.

Example prompts:

- "Run GetYourGuide Tours Scraper for Rome and return 20 tours with price, rating, and review count as JSON"
- "Find GetYourGuide activities in Paris rated at least 4.5 with a price under 40 USD"
- "Read this destination URL and list the tour titles, prices, and URLs"

### FAQ

**Does this need a partner API key or a login?**\
No. It reads public destination, search, and activity pages.

**What is one charged result?**\
One saved activity. Images and the next start time sit on that same row.

**Why are some pages empty?**\
Datacenter IPs are blocked. Keep the unblocker proxy on. A URL that is not a destination, search, or activity page returns no rows.

# Actor input Schema

## `searchQueries` (type: `array`):

Destination or activity keywords, such as Rome or Colosseum. Each query is a public search.

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

Public destination, search, or activity URLs. Activity URLs are one tour. Destination and search URLs are paginated.

## `maxItems` (type: `integer`):

Stop after this many saved activities.

## `maxPages` (type: `integer`):

How many result pages to read for each destination or search. Activity URLs are a single page.

## `currency` (type: `string`):

Price currency requested on the page, such as USD, EUR, or GBP.

## `minRating` (type: `number`):

Drop activities rated below this. Leave empty to keep every rating.

## `minReviews` (type: `integer`):

Drop activities with fewer reviews than this.

## `maxPrice` (type: `number`):

Drop activities priced above this, in the requested currency.

## `proxyConfiguration` (type: `object`):

Apify Proxy. Unblocker is required. Datacenter and plain residential IPs are blocked.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.getyourguide.com/rome-l33/"
    }
  ],
  "maxItems": 50,
  "maxPages": 5,
  "currency": "USD",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "UNBLOCKER"
    ],
    "apifyProxyCountry": "US"
  }
}
```

# Actor output Schema

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

Default dataset items.

# 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/"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("crawloop/getyourguide-tours-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/" }] }

# Run the Actor and wait for it to finish
run = client.actor("crawloop/getyourguide-tours-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/"
    }
  ]
}' |
apify call crawloop/getyourguide-tours-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,crawloop/getyourguide-tours-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/A21HpEhcfaKLLxOhy/builds/3Suzqob4DeOQmOLzA/openapi.json
