GetYourGuide All-in-One API avatar

GetYourGuide All-in-One API

Pricing

from $23.40 / 1,000 destination activity listings

Go to Apify Store
GetYourGuide All-in-One API

GetYourGuide All-in-One API

Unofficial always-on REST API for live GetYourGuide data: search suggestions, destination activity listings, activity detail with embedded reviews, and real per-date bookable availability with live pricing — in any currency. No account needed.

Pricing

from $23.40 / 1,000 destination activity listings

Rating

0.0

(0)

Developer

Romy

Romy

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

10 days ago

Last modified

Categories

Share

What does GetYourGuide All-in-One API do?

GetYourGuide All-in-One API is a REST endpoint for GetYourGuide's live tours & activities data — search suggestions, a destination's full bookable-activity listing, activity detail with embedded reviews, and real per-date bookable availability with live pricing. All from a single always-on API powered by Apify Standby.

It talks directly to the same internal API the official GetYourGuide Android app uses, reverse-engineered by capturing and analyzing live traffic from the real app, then independently re-confirmed by calling the API directly from a plain server. No GetYourGuide account, no API key — call the endpoint, get JSON back.

Why use GetYourGuide All-in-One API?

  • No signature or token needed — confirmed live: this API accepts self-generated, unvalidated identity headers with no cryptographic signing scheme at all
  • Real, live pricing — not a teaser/activities/{id}/availability returns actual bookable time slots with per-participant pricing that scales exactly with participant count, confirmed live against the app's own display
  • Real, working pagination — confirmed live on the destination activity listing: distinct pages return distinct, non-overlapping activities (36 per page)
  • Rich activity detail in one call — title, description, full image gallery, live price, and up to ~70 real customer reviews (author, rating, date, message), all from a single request
  • Always-on — Standby mode means no cold start, responds in milliseconds
  • No account needed — every endpoint works fully anonymously
  • Any currency — every price-returning endpoint takes a currency parameter, confirmed live to change every returned price
  • Use cases: travel content aggregation, price monitoring, activity discovery bots, review analysis, availability tracking

Endpoints

MethodPathDescription
GET/homeThe app's own Home screen: top destinations + attractions
GET/searchLive search-bar suggestions (destinations + activities)
GET/locations/{id}/activitiesA destination's full bookable-activity listing, paginated, filterable
GET/activities/{id}Full activity detail, with embedded reviews + similar activities
GET/activities/{id}/reviewsReal, paginated reviews beyond the embedded set
GET/activities/{id}/availabilityReal bookable time slots + live pricing for one date

How to use GetYourGuide All-in-One API

  1. Open this Actor's Standby API URL (shown on the Actor's page, under the API tab).
  2. Call any endpoint — for example:
    curl "https://romy--getyourguide-all-in-one-api.apify.actor/home"
    curl "https://romy--getyourguide-all-in-one-api.apify.actor/search?q=Bali"
    curl "https://romy--getyourguide-all-in-one-api.apify.actor/locations/347/activities"
    curl "https://romy--getyourguide-all-in-one-api.apify.actor/locations/347/activities?page=2&currency=EUR"
    curl "https://romy--getyourguide-all-in-one-api.apify.actor/locations/347/activities?filters=tc-1094"
    curl "https://romy--getyourguide-all-in-one-api.apify.actor/activities/489945"
    curl "https://romy--getyourguide-all-in-one-api.apify.actor/activities/489945?currency=USD"
    curl "https://romy--getyourguide-all-in-one-api.apify.actor/activities/489945/reviews?offset=80&limit=10"
    curl "https://romy--getyourguide-all-in-one-api.apify.actor/activities/489945/availability?date=2026-09-15&adults=2"
    Every call needs your Apify API token, either as Authorization: Bearer <token> or ?token=<token> — the Actor's page API tab has a ready-to-copy version with your token filled in.
  3. Read the JSON response — no setup required.

Parameters

GET /home — no required parameters. currency/language optional, same as every other endpoint.

GET /searchq required (partial text, e.g. Bali). Returns both destinations (with a locationId usable directly with /locations/{id}/activities) and individual activities.

ParamTypeExampleMeaning
qstringBaliSearch text
currencystring, default USDEURISO 4217 currency code
languagestring, default enenISO 639-1 language code

GET /locations/{id}/activities — path param id required (a location id, from GET /search or GET /home).

ParamTypeExampleMeaning
pageint, default 121-indexed page — real pagination, confirmed live
sortstring, default popularitypopularitySort order, read from the app's own sort picker
filterscomma-separatedtc-1094Interest-tag ids (e.g. "For kids", "Snorkeling") — confirmed live to narrow results with pagination still working correctly. See the response's availableFilters for valid values for this location
currencystring, default USDEURISO 4217 currency code — confirmed live to change every price
languagestring, default enenISO 639-1 language code

GET /activities/{id} — path param id required (an activity id, from GET /search or GET /locations/{id}/activities).

ParamTypeExampleMeaning
currencystring, default USDEURISO 4217 currency code
languagestring, default enenISO 639-1 language code

GET /activities/{id}/reviews — path param id required. Real pagination beyond the ~70 reviews already embedded in GET /activities/{id}.

ParamTypeExampleMeaning
offsetint, default 0800-indexed review offset — real pagination, confirmed live
limitint, default 1010Reviews per page
currencystring, default USDEURISO 4217 currency code
languagestring, default enenISO 639-1 language code

GET /activities/{id}/availability — path param id required. date required.

ParamTypeExampleMeaning
datestring (date)2026-09-15YYYY-MM-DD
adultsint, default 12Adult participant count
childrenint, default 00Child participant count
currencystring, default USDEURISO 4217 currency code — confirmed live to change every returned price
languagestring, default enenISO 639-1 language code

Output

Every response is returned directly over HTTP — this Actor does not write to an Apify dataset. Real responses (trimmed for readability):

GET /home (trimmed to one card each):

{
"success": true,
"destinations": [{ "title": "Rome", "image": "https://cdn.getyourguide.com/image/{options}/location_img/f9cef1b5d3bf6e3c.jpeg", "locationId": 33 }],
"attractions": [{ "title": "Statue of Liberty", "subtitle": "196 activities", "locationId": 158431, "poiId": 2612 }]
}

GET /search?q=Bali:

{
"success": true,
"results": {
"suggestions": [
{ "suggestion": "Bali", "suggestionId": "location:347", "type": "location", "locationType": "area", "locationId": 347 },
{ "suggestion": "Bali: Waterbom Bali Entry Ticket", "suggestionId": "activity:253117", "type": "activity" }
]
}
}

GET /locations/347/activities?currency=GBP (trimmed to one card):

{
"success": true,
"page": 1,
"activities": [
{
"id": 489945,
"title": "Bali: Ubud Gorilla Face ATV and Ayung Rafting Trip with Meal",
"abstract": "Experience Ubud's vibrant nature with a combo 2.5-hour Ayung River rafting trip...",
"rating": 4.83,
"reviewCount": 6714,
"price": { "formatted_starting_price": "£12", "formatted_base_price": "£15", "currency": "GBP", "starting_price": 12.09 },
"attributes": [{ "type": "duration", "label": "3 - 8 hours" }, { "type": "freeCancellation", "label": "Free cancellation" }]
}
],
"availableFilters": [{ "label": "For kids", "value": "tc-1094" }, { "label": "Snorkeling", "value": "tc-57" }]
}

GET /activities/489945?currency=USD (trimmed):

{
"success": true,
"activity": {
"id": 489945,
"title": "Bali: Ubud Gorilla Face ATV and Ayung Rafting Trip with Meal",
"description": "Experience Ubud's vibrant nature with a combo 2.5-hour Ayung River rafting trip...",
"images": ["https://cdn.getyourguide.com/image/{options}/tour_img/2afe7caf59feeb0d.jpeg"],
"rating": 4.83,
"reviewCount": 6773,
"price": { "currency": "USD", "discounted_price": 14.79, "original_price": 18.49 },
"reviews": [{ "reviewId": "126190156", "rating": 5, "message": "...", "authorName": "marjolein – Netherlands", "authorDetail": "August 3, 2026 - Verified booking" }],
"similar": [{ "id": 489942, "title": "Ubud: Gorilla Face ATV Quad Bike Adventure with Lunch", "rating": 4.8, "reviewCount": 1551 }]
}
}

GET /activities/489945/reviews?offset=80&limit=1:

{
"success": true,
"reviews": [
{
"reviewId": "125811614",
"rating": 5,
"message": "Rafting and ATV were definitely a highlight of Ubud",
"authorName": "Adam – Australia",
"authorDetail": "July 24, 2026 - Verified booking"
}
]
}

GET /activities/489945/availability?date=2026-09-15&adults=2 (trimmed to one option):

{
"success": true,
"options": [
{
"optionId": 902997,
"title": "Rafting Only Adventure with Meeting Point (No ATV)",
"slots": [
{
"label": { "text": "9:00 AM" },
"startTime": "2026-09-15T09:00:00+0800",
"priceBreakDown": [{ "startLabel": { "text": "2 Adult × $20.62" }, "endLabel": { "text": "$41.24" } }],
"totalPrice": { "price": 41.24, "currency": "USD" }
}
]
}
]
}

Data notes

  • No signature or token required, confirmed from two independent angles. First captured live from the real Android app with all real API traffic passed through an SSL-intercepting proxy; every request carried nothing but plain, self-generated identity headers. Then independently re-confirmed by calling the same API directly from a plain server, with fabricated identity headers and no device involved at all — it worked identically. This Actor sends the same simple headers a fresh app install would.
  • GetYourGuide's edge does reject Apify's datacenter IP ranges, though. Confirmed live: a request byte-for-byte identical to one that succeeds from a non-Apify server got back an HTML error page (GetYourGuide's own branded error page, not a third-party bot-challenge) from the deployed Standby actor — an IP-reputation block, not a signing or logic issue. All outbound requests route through Apify's residential proxy pool to avoid it, one proxy session per Actor run for a stable IP, same as a real device would have.
  • The app's native code was checked for anti-bot protection and found clean. Every native library bundled with the app was inspected; none matches any known bot-detection SDK. The only fraud-prevention vendor found in the app's traffic is invoked for checkout/payment flows, not for any endpoint this Actor uses.
  • Pagination is real, confirmed live via a two-step process. The plain listing page always returns page 1 regardless of a page query parameter — real pagination lives behind a second, POST-based endpoint the app calls when scrolling or changing sort/filters, which this Actor uses internally. Confirmed live: page 2 returned 36 activities with zero id overlap against page 1.
  • /activities/{id}/availability's pricing is genuinely live, not a static "from" price. Confirmed live: requesting 2 adults for a specific date returned a total price exactly equal to 2× the per-person price shown in the same response, matching the app's own on-screen total to the cent.
  • Currency is a real, caller-controlled parameter on every price-returning endpoint, not just a display label. Confirmed live: the same activity/listing request returns genuinely different numeric prices (not just a different currency symbol) when currency changes — e.g. a listing's starting price came back as £12/GBP with no currency param and €14/EUR with currency=EUR for the exact same activity, same request otherwise.
  • Activity detail responses are a generic, deeply nested UI-description format rather than a flat product object — this Actor extracts the underlying clean data (title, description, images, price, reviews) from GetYourGuide's own embedded analytics payloads and a small set of well-known content blocks, rather than attempting to interpret the full UI layout, which keeps extraction stable even if GetYourGuide changes how the page visually renders.
  • /activities/{id}/reviews mirrors the app's own "See more reviews" modal, confirmed live: offset=80 returned 10 reviews with zero id overlap against the ~70 already embedded in GET /activities/{id}, in the same page-of-10 batching the app itself uses.
  • filters genuinely narrows results and pagination still works on the filtered set — confirmed live: applying a "For kids" filter returns a completely different top result than the unfiltered listing, and the same real, non-overlapping pagination behavior holds with a filter applied.
  • similar reuses the exact same product-card data shape as the listing endpoint — confirmed live: the app's own "You might also like" recommendation cards on the activity detail page carry the identical embedded analytics object as /locations/{id}/activities's cards, just for different activities.
  • /home's cards use a different, messier embedding than activities — destination cards carry their location id as a JSON-encoded string inside a metadata tracking field rather than a direct property (attraction/POI cards do carry it directly) — this Actor handles both. A few more Home-tab rails ("Go beyond the guidebook" and similar curated/brand rails) were checked and found to be lower-value marketing picks with their own distinct embedding shape, not wrapped here.

Pricing

Pay-per-event, billed only on a successful call — one event per request, tiered by your Apify plan (Free/Bronze/Silver/Gold/Platinum/Diamond get progressively cheaper rates). See the Actor's Pricing tab for the exact current rate per tier.

EventWhat it charges for
searchLive search-bar suggestions
home-feedHome screen curated rails
activity-reviewsPaginated reviews beyond the embedded set
activity-detailFull activity detail + embedded reviews + similar activities
location-activitiesA destination's activity listing (36 activities/page)
activity-availabilityReal bookable time slots + live per-participant pricing for one date

Known limitations

  • No booking/checkout endpoints. This Actor only wraps guest-accessible, read-only search/browse/pricing endpoints — no login flow, cart, or payment/booking submission is implemented or planned, by design.
  • Sort values for /locations/{id}/activities's sort parameter are read from the app's own sort picker but not exhaustively enumeratedpopularity (the default) is confirmed; other values are passed through unvalidated and may not all be accepted by the backend.
  • This is an unofficial, reverse-engineered integration, not affiliated with or endorsed by GetYourGuide Deutschland GmbH. Behavior may change if GetYourGuide changes its API.

Found a bug or have a feature request? Use the Issues tab on this Actor's page.