GetYourGuide Scraper - Tours, Activities, Prices & Reviews avatar

GetYourGuide Scraper - Tours, Activities, Prices & Reviews

Pricing

from $1.80 / 1,000 results

Go to Apify Store
GetYourGuide Scraper - Tours, Activities, Prices & Reviews

GetYourGuide Scraper - Tours, Activities, Prices & Reviews

Scrape GetYourGuide tours and activities by keyword, city or link. Get prices, discounts, ratings, review counts, duration, languages, activity provider, categories, badges, highlights, meeting-point coordinates, images and traveler reviews with provider replies and photos.

Pricing

from $1.80 / 1,000 results

Rating

0.0

(0)

Developer

Abot API

Abot API

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

6 days ago

Last modified

Categories

Features

Limited permissions

Share

GetYourGuide Scraper: Tours, Activities, Prices & Reviews

GetYourGuide Scraper turns GetYourGuide (getyourguide.com) into a clean data feed. Search any city, place or activity keyword, or paste activity links, and get prices, discounts, ratings, review counts, duration, languages, the activity provider, categories, badges, highlights, full image galleries and traveler reviews.

Why This Scraper?

  • Three ways in. Search by plain keyword or city name, paste any GetYourGuide link (activity, search, destination, category, any language), or collect traveler reviews. No ids or URLs to build by hand.
  • Real prices in your currency. The "from" price, the original price and the discount percentage, in the currency you pick.
  • Provider and languages. Every activity can carry its provider name, the guide languages, group size, cancellation terms and Reserve now, pay later flag.
  • Deep detail on demand. Highlights, inclusions, exclusions, what to bring, meeting point, itinerary stops, full description and the complete image gallery.
  • Filters that really narrow. Sort order, minimum rating, price range, tour languages and duration are applied by the site itself, plus free cancellation and skip-the-line toggles. Reviews can be narrowed by star rating, language, traveler type and written text.
  • Coordinates and demand signals. Meeting-point coordinates and address, every map pin of the itinerary, the best-seller flag and the daily "booked yesterday" counter.
  • Built for schedules. Incremental mode returns only new and changed items on recurring runs (optionally only when a price moves), and Resume continues an interrupted run without paying twice.

Use Cases

  • Travel price monitoring: track "from" prices and discounts for the same destination every day.
  • Competitive research for tour operators: compare ratings, review counts, durations and providers across a city.
  • Travel apps and aggregators: feed activity cards, galleries and highlights into your own product.
  • Reputation analysis: collect traveler reviews with rating, country, traveler type and language for sentiment work.
  • Market sizing: count and classify what is on offer per destination, category and price band.

Data You Get

Sample shape: values are illustrative placeholders, not from a live record.

FieldExample
type"activity" (or "review")
activityId100000
title"City: Guided Walking Tour"
urllink to the activity page
descriptionshort description
priceFrom / priceCurrency43.45 / "USD"
originalPrice / discountPercent / priceUnit51.0 / 15 / "per person"
rating / reviewCount4.9 / 686
durationText"3 hours"
freeCancellation / skipTheLine / badgestrue / false / ["Top rated"]
categories["dayTrip", "privateTour"]
languages["English", "French"]
supplier"Sample Tours Ltd"
highlights / inclusions / exclusionslists of text
meetingPoint / itinerarystart location line and stops
latitude / longitude / meetingPointAddress / endPointAddressmeeting-point coordinates and where the activity starts and ends
mapMarkersevery itinerary pin with title, latitude, longitude, description and kind (meeting or stop)
isBestseller / bookedIn24Hoursbest-seller flag and the "booked yesterday" counter
audioGuide / pickupAvailable / privateGroup / wheelchairAccessiblecard flags from the results list
city / area / country / pointOfInterest"City" / "Region" / "Country" / "Landmark"
images / imageUrlfull gallery and the first image
subRatings / aiReviewSummaryper-topic ratings and the site's traveler summary
searchQuery / positionthe query that found it and its rank

Review rows carry reviewId, rating, text, author, authorCountry, authorCountryCode, date, language, travelerType, verifiedBooking, the traveler photos, the provider's reply (ownerResponse, ownerResponseDate) and the activity's overall activityRating and activityReviewCount.

How to Use

  1. Pick a mode: search, url or reviews.
  2. Fill in the fields for that mode, then set the filters you need.
  3. Set Max items to control run size and cost, then click Start.
  4. Download the dataset as JSON, CSV or Excel, or read it through the API.

Search a city with filters:

{
"mode": "search",
"queries": ["paris"],
"sortBy": "rating_desc",
"minRating": "4.5",
"freeCancellationOnly": true,
"maxItems": 50
}

Paste an activity link for the full record:

{
"mode": "url",
"urls": ["https://www.getyourguide.com/paris-l16/disneyland-paris-2-parks-ticket-1-2-3-4-5-day-t395320/"]
}

Collect traveler reviews:

{
"mode": "reviews",
"urls": ["https://www.getyourguide.com/paris-l16/disneyland-paris-2-parks-ticket-1-2-3-4-5-day-t395320/"],
"maxReviewsPerActivity": 100,
"maxItems": 100
}

Collect only 5-star couple reviews written in English:

{
"mode": "reviews",
"urls": ["https://www.getyourguide.com/paris-l16/disneyland-paris-2-parks-ticket-1-2-3-4-5-day-t395320/"],
"minReviewRating": "5",
"reviewTravelerTypes": ["couple"],
"reviewLanguages": ["en"]
}

An activity link always returns the full record. Every link the site itself shows works in url and reviews modes:

Link you pasteWhat the actor does
Activity page (/paris-l16/<name>-t395320/, also /x-t395320/ or the bare id)returns the full record
Search page (/s/?q=paris)walks the results like a search
Destination page (city, area, country or attraction, /rome-l33/)walks the destination like a search
Category page (/amsterdam-l36/cruises-boat-tours-tc48/)walks the destination narrowed by the category name
The same links with a language prefix (/en-gb/) or on a country domainnormalised to the main site, same result
Home, help, partner or other-site linksskipped with a note in the log

Run it from your code

Python:

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("abotapi/getyourguide-scraper").call(run_input={"mode": "search", "queries": ["rome"], "maxItems": 20})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["title"], item["priceFrom"], item["rating"])

JavaScript:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('abotapi/getyourguide-scraper').call({ mode: 'search', queries: ['rome'], maxItems: 20 });
const { items } = await client.dataset(run.defaultDatasetId).listItems();

Or connect it to Make, Zapier, n8n, Google Sheets or webhooks from the Integrations tab.

Tips

  • Prices follow the Currency you select for search and reviews runs. An activity link returns the price the page shows by default.
  • Turn Fetch full activity details off for a lighter run that returns list fields only (no provider, languages or itinerary).
  • Entry tickets have no guide, so languages can be empty for them.
  • Review filters are applied while reading the reviews feed, so a narrow filter scans more pages (up to 1000 reviews per activity) to find enough matches.

Resume and recurring updates

  • Resume (resumeFromRunId) continues one interrupted run: paste its run or dataset ID and the actor skips everything already collected there.
  • Incremental mode (incrementalMode) is for scheduled runs over the same search. Each item is classified NEW, UPDATED (with changedFields), UNCHANGED (suppressed and not billed unless emitUnchanged is on), REAPPEARED or EXPIRED (only after a run that scanned the whole search; on by default, switch it off with emitExpired). stateKey names or shares the stored state.
  • Price monitoring: set changeScope to priceAndStock so an item is UPDATED only when its from-price, original price, discount, currency or price unit moves. Add compactUpdates to receive slim UPDATED and EXPIRED rows (identity, link, current price and a priceChanges object with old and new values). expireAfterMissedScans waits for N complete scans before an item is EXPIRED. EXPIRED means the activity dropped out of the search results; it does not prove the activity is unavailable.

Send results into your apps (MCP connectors)

Optionally pipe the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. This is an extra delivery step after the scrape: the Apify dataset is never changed.

What gets written to the connector: a condensed, human-readable summary of each record, not the full JSON. Each item becomes one entry with a title and its key fields flattened to plain text. The complete record always stays in the Apify dataset.

  1. Authorize a connector once under Apify → Settings → Integrations (Notion, Linear, Airtable, or Apify).
  2. Select it in the "Pipe results into your apps" input field. (If the picker is empty, you haven't authorized a connector yet.)
  3. For Notion, also set notionParentPageUrl to the page where items should be created.

The connection is mediated by Apify's MCP proxy, so this actor never sees your third-party credentials. Leave the field empty to skip.

Input Parameters

ParameterTypeDefaultDescription
modestringsearchsearch, url or reviews.
queriesarray["paris"]Cities, places or activity keywords (search mode; also picks activities in reviews mode).
sortBystringpopularitypopularity, price_asc, price_desc or rating_desc.
minRatingstring0Minimum star rating: 0, 3.0, 3.5, 4.0 or 4.5.
minPriceinteger(none)Lowest "from" price in the selected currency.
maxPriceinteger(none)Highest "from" price in the selected currency.
languagesarray[]Tour language codes such as en, de, fr.
durationsarray[]Duration buckets: 0 (0-3 h), 1 (3-5 h), 2 (5-7 h), 3 (full day), 4 (2 days), 5 (3 days), 6 (4 days), 7 (5+ days).
freeCancellationOnlybooleanfalseKeep only activities with free cancellation.
skipTheLineOnlybooleanfalseKeep only activities with skip-the-line or fast-track entry.
urlsarrayfour example linksActivity, search, destination or category links in any language, or activity ids (url and reviews modes).
fetchDetailsbooleantrueAdd provider, languages, highlights, inclusions, itinerary, full description and gallery.
maxPagesinteger(none)Optional limit on result pages per search; empty means no page limit.
maxItemsinteger20Stop after this many rows (0 = no limit).
maxReviewsPerActivityinteger20Reviews mode: reviews collected per activity (up to 1000).
minReviewRatingstring0Reviews mode: minimum star rating, 0 (any) to 5.
reviewLanguagesarray[]Reviews mode: keep reviews written in these languages (en, de, ...).
reviewTravelerTypesarray[]Reviews mode: couple, friends, solo or family.
reviewsWithTextOnlybooleanfalseReviews mode: skip star-only reviews.
currencystringUSDCurrency for prices.
languagestringen-USLanguage of titles and descriptions.
proxyobjectApify ProxyConnection settings.
resumeFromRunIdstring(none)Continue one interrupted run.
incrementalModebooleanfalseReturn only new and changed items on scheduled runs.
stateKeystring(none)Name or share an incremental-mode state.
emitUnchangedbooleanfalseAlso return (and bill) unchanged items.
emitExpiredbooleantrueIncremental mode: also return (and bill) items no longer found after a full scan.
changeScopestringallIncremental mode: all fields or priceAndStock (price and discount only).
compactUpdatesbooleanfalseIncremental mode: slim UPDATED and EXPIRED rows.
expireAfterMissedScansinteger1Incremental mode: complete scans an item must be missing before EXPIRED.
ignoreFieldsForChangesarray[]Incremental mode only: field names excluded from change detection.
mcpConnectorsarray(none)Optional: send a summary of each item to apps you authorized under Integrations.
notionParentPageUrlstring(none)Notion connector only: page under which items are created.
maxNotifyListingsinteger50Cap on items written to each connector per run.

Output Example

The Output tab offers a combined Results table plus Activities and Reviews tables. Every row carries a type field (activity or review).

Sample shape: values are illustrative placeholders, not from a live record.

{
"type": "activity",
"source": "getyourguide.com",
"activityId": 100000,
"title": "City: Guided Walking Tour",
"url": "https://www.getyourguide.com/city-l1/city-guided-walking-tour-t100000/",
"description": "Explore the old town with a local guide.",
"priceFrom": 43.45,
"originalPrice": null,
"discountPercent": 0,
"priceCurrency": "USD",
"priceUnit": "per person",
"rating": 4.9,
"reviewCount": 686,
"durationText": "3 hours",
"freeCancellation": true,
"skipTheLine": false,
"badges": ["Top rated"],
"categories": ["dayTrip"],
"languages": ["English"],
"supplier": "Sample Tours Ltd",
"highlights": ["Walk through the old town"],
"meetingPoint": "1 Sample Street, City",
"city": "City",
"country": "Country",
"images": ["https://cdn.getyourguide.com/image/sample.jpg"],
"searchQuery": "city"
}

Plan Requirement

The default connection is the standard Apify Proxy pool, which works for search, reviews and gallery data. A residential connection is recommended for the most reliable results: choose a residential group in the Proxy configuration field. If a run keeps hitting failures on the standard pool it moves to a residential connection by itself, and it rotates to a fresh exit on every request.

Apify free plans do not include residential proxies. On a free plan, if the selected connection is refused, the run logs a clear warning and continues on a backup connection; some pages may still be unavailable. For residential access, upgrade at https://apify.com/pricing or supply your own proxy URLs (custom URLs are used exactly as given, with no backup). Full activity details are collected through the platform's managed connection; if a run cannot reach them the rows are still returned with list fields only.

FAQ

How much does it cost?

Pay per event. The current rates are shown on the Pricing tab (paid Apify plans get lower tiered rates). The events and when each one is charged:

EventWhen it is charged
Result (apify-default-dataset-item)once for each activity row and once for each review row pushed to the dataset (every review is its own row, so there is no separate review charge)
Detail enrichment (detail-enrichment)once per activity row pushed with full details, charged as each row is delivered; list-only rows, review rows, unchanged rows and slim compactUpdates rows never carry it
Actor Start (apify-actor-start)once per run, per GB of memory

Unchanged or suppressed rows in incremental mode are not billed. Use Max items to cap the cost of any run.

This actor collects only publicly available listing and review data. You are responsible for how you use it: follow the site's terms and the laws that apply to you, and get legal advice if you plan commercial redistribution.

Can I get only new or changed activities on a schedule?

Yes. Schedule the actor from the Schedules tab and turn on Incremental mode. Each run then returns only new and updated rows, and unchanged ones are not billed.

Why do titles and order differ between two runs?

The site ranks and words some results differently per visitor. The actor keeps one stable visitor identity per search so scheduled runs stay comparable.

Why did my run fail instead of returning an empty dataset?

If no page could be read at all, the run ends as failed with a clear message (proxy refused, residential unavailable on a free plan, or a connection problem) so "no matches" is never confused with "nothing could be read". Run it again in a few minutes or follow the upgrade hint in the message.

Can I use it with AI agents or MCP?

Yes. Call it from any Apify integration or MCP client, and use the connector field to push results into Notion, Linear or Airtable.

🔗 Want more travel data?

Pair this actor with these related scrapers from the same team:

✈️ Viator Scraper
Collect Viator.com tour and activity results from destinations, categories, search pages...
🧩 KKday Scraper
Scrape KKday travel activities by keyword, city or URL. Every row carries prices...
🏨 Klook Scraper
Scrape Klook activities, tours, attractions and travel experiences from search pages or...
🏨 Expedia Hotels Scraper
Scrape Expedia.com hotel listings and reviews for any destination. Extract prices...
✈️ Pollstar Scraper
Scrape Pollstar upcoming concerts and tour dates: play date, venue with full address and...
🏨 Booking.com Scraper
Scrape booking.com hotels, apartments, villas and hostels. Search any destination with...

👉 Browse all abotapi scrapers

💬 Support

  • 🐞 Found a bug or a missing field? Open a ticket on the Issues tab. We usually reply within hours.
  • 🛠️ Need another site, extra fields or a private build? Email contact@abotapi.com.
  • ⭐ Enjoying it? A quick review on the actor page helps other users find it.