GetYourGuide Scraper — Tours, Activities & Attraction Tickets
Pricing
from $2.00 / 1,000 result scrapeds
GetYourGuide Scraper — Tours, Activities & Attraction Tickets
Scrape tours, activities, and attraction tickets from getyourguide.com search results. Extract titles, locations, durations, ratings, review counts, and prices for any destination or activity keyword. No partner API credentials required.
Pricing
from $2.00 / 1,000 result scrapeds
Rating
0.0
(0)
Developer
Studio Amba
Maintained by CommunityActor stats
0
Bookmarked
4
Total users
0
Monthly active users
2 days ago
Last modified
Categories
Share
GetYourGuide Scraper
Scrape tours, activities, and attraction tickets from getyourguide.com search results — titles, locations, durations, ratings, review counts, and prices for any destination or activity keyword.
Why use this actor?
GetYourGuide is one of the largest tours-and-activities marketplaces in the world, listing tens of thousands of bookable experiences across nearly every city on earth. There's no public partner API without a business relationship with GetYourGuide, so pulling this data at scale otherwise means either signing a partner agreement or scraping the site directly. This actor does the latter: it runs the same search a visitor would, parses the server-rendered result cards, and returns structured data — no partner credentials, no login.
Typical uses:
- Competitive pricing research for tour operators and travel agencies
- Building a meta-search or comparison site for activities in a destination
- Market research on what activities exist, how they're priced, and how they're rated in a given city
- Feeding activity data into a travel itinerary tool or recommendation engine
How it works
GetYourGuide is protected by Cloudflare, so a plain HTTP request gets a 403 and a bot-challenge cookie. This actor loads each search page in Bright Data's Scraping Browser, a remote browser that passes the Cloudflare check, and parses the server-rendered result cards with Cheerio. No browser runs inside the actor itself, so memory use stays low. A search page takes about 15-30 seconds to load.
GetYourGuide serves at least two different result-card layouts for the same query (observed live during development) — one with a dedicated "location" element, one without. The actor tries both layouts for every field and falls back to deriving the location from the activity's URL slug when no dedicated element exists, so field coverage stays high regardless of which layout a given request happens to get.
Input
| Field | Type | Required | Description |
|---|---|---|---|
searchQuery | String | No (default: rome) | Activity or destination to search for — a city name (e.g. rome, paris, barcelona) or an activity keyword (e.g. cooking class, wine tasting). |
maxResults | Integer | No (default: 100) | Maximum number of activities to return. The actor pages through search results (?p=2, ?p=3, ...) until it hits this limit or runs out of results. |
brightDataApiKey | String (secret) | No | Optional. A Bright Data API key for a Web Unlocker zone, tried once per run before the Scraping Browser. Leave it blank: the actor uses its own Bright Data access. |
proxyConfiguration | Object | No | Present for input-schema completeness. Page fetches go through Bright Data, not through Apify's proxy, so this field has no effect on how requests are routed. |
Example input:
{"searchQuery": "rome","maxResults": 20,"proxyConfiguration": { "useApifyProxy": true }}
Empty input ({}) also works — it falls back to searchQuery: "rome" and maxResults: 100. GetYourGuide answers every query with a result list, so an unknown word returns its popular activities instead of an empty result.
Output
Each item in the dataset represents one activity from a search results page.
| Field | Type | Description |
|---|---|---|
activityTitle | String | Name of the tour, activity, or ticket |
location | String | City or destination where the activity takes place |
duration | String (nullable) | Duration of the activity, e.g. "2.5 hours" |
rating | Number (nullable) | Average customer rating, 0–5 scale |
reviewCount | Integer (nullable) | Number of customer reviews |
price | Number | Starting ("from") price for the activity |
currency | String | Currency code for the price, e.g. EUR |
url | String | Full activity page URL |
scrapedAt | String | ISO 8601 timestamp of when the item was scraped |
Example output item:
{"activityTitle": "Colosseum, Roman Forum & Palatine Hill Guided Tour","location": "Rome","duration": "2.5 hours","rating": 4.8,"reviewCount": 86247,"price": 49,"currency": "EUR","url": "https://www.getyourguide.com/rome-l33/colosseum-roman-forum-palatine-hill-guided-tour-t195566/","scrapedAt": "2026-07-13T01:08:13.706Z"}
How to scrape GetYourGuide data
To pull activity data for a destination, set searchQuery to a city name (e.g. "rome", "lisbon", "kyoto") or an activity type (e.g. "food tour", "scuba diving"), and set maxResults to how many activities you want back. The actor:
- Requests
https://www.getyourguide.com/s/?q=<query>&p=<page>in Bright Data's Scraping Browser, which passes GetYourGuide's Cloudflare protection. Two browser sessions run side by side and the first page with results is used; a refused session is replaced until the run's time limit. - Parses the server-rendered result cards (
data-test-id="verticalActivityCard") with Cheerio, extracting title, location, duration, rating, review count, and starting price for each card. - Increments the
pquery parameter to move through pages (24 results per page) untilmaxResultsis reached or a page returns no cards. - Pushes each activity to the dataset as it's found, so partial results are available even if a run is stopped early.
This gets you a clean, structured feed of what's bookable for a destination or activity type — useful for tracking price changes over time, benchmarking a competitor's offerings, or building a dataset of activities for a downstream tool.
Cost estimate
A search page returns up to 24 activities, so 100 results take about 5 page loads and 1,000 results about 42. Images, fonts and media are not loaded. Actor compute cost is small: the browser runs at Bright Data, the actor only parses HTML.
Limitations
- Page load time. Each search page takes about 15-30 seconds through the Scraping Browser, so 100 results take roughly 2-3 minutes.
- Search-page data only. This actor parses the search results page, not individual activity detail pages — so fields like a full itinerary, cancellation policy, or all available time slots aren't included. If you need that, you'd fetch the activity's own
urlseparately. - No partner API used. GetYourGuide has an official partner API for approved travel businesses, but it requires a commercial agreement. This actor does not use it — it works entirely from public search results, so field availability depends on what GetYourGuide chooses to render on the search page (and that has changed at least once already during development, see "How it works" above).
- Best-effort fields.
rating,reviewCount, anddurationare not shown on every card (e.g. new listings with no reviews yet), so these fields may be missing on a small share of items.activityTitle,location,price,currency, andurlare present on effectively every item.
Related Scrapers
- Tiqets Scraper — attraction tickets and tours from tiqets.com, GetYourGuide's closest direct competitor
- BlaBlaCar Scraper — carpool and bus trip search results, useful for the transport leg of a trip alongside activities
- Touring Scraper — Belgian automobile club travel guides, FAQs, and cross-border travel information
Support
Found a bug or have a feature request? Open an issue on the actor's Apify Store page or reach out through the Apify platform's contact options.