GetYourGuide API

What a city sells to visitors, priced in your currency

The GetYourGuide API returns tours and activities as clean JSON.

no credit card1,000 free credits · instant API key · pay by card or crypto
Missing a GetYourGuide endpoint, or need a source we don't have yet?Contact us real people · same-day reply.
G
/getyourguide/v1

5 active endpoints, on 1 and 2 credit tiers.

  • POST/getyourguide/v1/search
  • POST/getyourguide/v1/browse
  • POST/getyourguide/v1/detail
  • POST/getyourguide/v1/reviews
  • POST/getyourguide/v1/destinations

What GetYourGuide endpoints does ReefAPI ship?

5 live read endpoints. Read-only data API: no writes, no account actions, no dashboard access on the target site.

5 endpoints

search

1 cr

Search GetYourGuide for tours & activities by free-text keyword or destination ('Rome colosse…

required
query
optional
currency, language

browse

1 cr

Browse the top tours & activities for a destination's landing page.

required
optional
slug, location_id, city, destination, url, currency, language

detail

2 cr

Full record for one tour/activity.

required
optional
url, slug, currency, language

reviews

1 cr

The most-recent public traveler reviews for one activity (rating, text, author, date) plus th…

required
optional
url, slug, language

destinations

1 cr

Destination metadata for a GetYourGuide location.

required
optional
slug, location_id, city, destination, url, language

Every parameter, every allowed value →

GetYourGuide API

4 of 5 endpoints, ready to run

View docs ↗

Free-text search across the marketplace: each activity comes back with its id, title, a one-paragraph summary, the price and the price before any discount with the discount percentage, the currency, the star rating and review count, the duration, the category and the next available start time.

1 credit1 required · 2 optional
POST/getyourguide/v1/search
ok3979 ms · 24 records · sample
{
  "ok": true,
  "meta": {
    "api": "getyourguide",
    "endpoint": "search",
    "mode": "live",
    "latency_ms": 3979.2,
    "record_count": 24,
    "cache_hit": false
  },
  "data": {
    "activities": [
      {
        "activity_id": 195566,
        "title": "Colosseum, Roman Forum & Palatine Hill Guided Tour",
        "url": "https://www.getyourguide.com/rome-l33/colosseum-roman-forum-palatine-hill-guided-tour-t195566/",
        "abstract": "Explore Rome’s top 3 sites with a licensed guide — Colosseum, Roman Forum, and Palatine Hill. Upgrade for Arena floor access or choose a small group for a more personalized experience.",
        "images": [
          "https://cdn.getyourguide.com/img/tour/33cca66c19886c9f.jpeg/132.jpg"
        ],
        "category": "guidedTour",
        "duration": "2.5 hours",
        "rating": 4.77,
        "review_count": 89083,
        "price": 49,
        "original_price": 61.25,
        "currency": "EUR",
        "discount_percent": 20,
        "next_available": "2026-09-02T10:00:00+02:00"
      },
      {
        "activity_id": 217332,
        "title": "Rome: Colosseum Arena Floor, Palatine & Forum Guided Tour",
        "url": "https://www.getyourguide.com/rome-l33/rome-colosseum-arena-floor-palatine-forum-guided-tour-t217332/",
        "abstract": "Experience special access to the Colosseum, Roman Forum, and Palatine Hill on a guided tour. Follow in the footsteps of gladiators & emperors as you immerse yourself in the grandeur of ancient Rome.",
        "images": [
          "https://cdn.getyourguide.com/img/tour/94228a891b57dd5ac3f35040d77c0d5045f72c51aaf096f868ed50367e406c22.jpg/132.jpg"
        ],
        "category": "guidedTour",
        "duration": "2.5 - 3 hours",
        "rating": 4.53,
        "review_count": 27098,
        "price": 39,
        "original_price": 78,
        "currency": "EUR",
        "discount_percent": 50,
        "next_available": "2026-09-02T08:30:00+02:00"
      },
      {
        "activity_id": 1445834,
        "title": "Rome: Monteverde Ceramics Workshop with Local Artist",
        "url": "https://www.getyourguide.com/rome-l33/rome-monteverde-ceramics-workshop-with-local-artist-t1445834/",
        "abstract": "Join a ceramics workshop in Rome's Monteverde neighborhood. Learn the basics of hand-building from a local artist and create your own bowl, cup, or small plate.",
        "images": [
          "https://cdn.getyourguide.com/img/tour/36ed9d1c16f6cae87ef07c7e82844cc1c0530f42e38980e6ac729a56d46052bd.jpeg/132.jpg"
        ],
        "category": "workshopOrClass",
        "duration": "2 hours",
        "rating": 0,
        "review_count": 0,
        "price": 81,
        "original_price": 90,
        "currency": "EUR",
        "discount_percent": 10,
        "next_available": "2026-09-01T10:00:00+02:00"
      }
    ]
  }
}
Real response, fetched from the live endpoint with the parameters on the left — trimmed to the first few rows, with seller names left out. Press Try it for the untrimmed response.

How the GetYourGuide API works

GetYourGuide is a normal ReefAPI surface — the same four rules that hold for every other engine on the key.

01
Authenticate
x-api-key header

No OAuth app, no request signing, no per-site account. One key covers all 184 engines.

02
Call
POST /getyourguide/v1/…

Every route is a POST with a JSON body. Parameters are validated against the published schema before anything is charged.

03
Pay
1 or 2 credits per call

Credits, not seats. Failed and blocked calls are never charged, and cache hits cost nothing.

04
Read
{ ok, data, meta, error }

One envelope everywhere. meta carries latency_ms, record_count and the endpoint that answered.

Pricing a destination the way a traveller sees it

The same tour is a different number to a German visitor and an American one, in a different language, with a different set of things bookable. All three are the same call with different arguments.

01destinations
POST/getyourguide/v1/destinations
{"slug": "rome-l33"}

Confirms the destination and tells you how many activities it has and which region and country it sits under, before you spend anything walking it.

02browse
POST/getyourguide/v1/browse
{"slug": "rome-l33", "currency": "EUR"}

What the city leads with, priced in euros, with the rating and review count that decide the order.

03reviews
POST/getyourguide/v1/reviews
{"url": "…-t195566/"}

The newest reviews for the one activity you care about, with the overall score they roll up into.

A destination's bookable inventory with prices you can compare across markets, because you chose the currency rather than inheriting one.

request
curl -X POST https://api.reefapi.com/getyourguide/v1/search \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"query":"Rome colosseum","currency":"EUR"}'
response envelope
{
  "ok": true,
  "data": { … },
  "meta": {
    "api": "getyourguide",
    "endpoint": "search",
    "mode": "live",
    "latency_ms": …,
    "record_count": …
  },
  "error": null
}

Which GetYourGuide action returns which field

search and browse both return activity cards, but they are not the same card. search finds activities by keyword and gives you a category; browse lists a destination's top activities and gives you price, rating and review count. Picking the wrong one is the most common reason a field looks missing. Measured on rome-l33, paris-l16 and barcelona-l45, 2026-08-27.

FieldsearchbrowseExample
activity_idyesyes195566, the digits after -t in the URL
title, url, images[]yesyeshttps://www.getyourguide.com/rome-l33/...-t195566/
categoryyesno"guidedTour", "entryTicket"
pricenoyes57.2
currencynoyes"USD" - read it, do not assume
ratingnoyes4.77, or null when unrated
review_countnoyes89083, or null when unrated
start_datenoyes"2026-08-29T15:00:00+02:00"
locationnoyes"Rome", "Saint-Denis, Paris"
rows per call2416neither action takes a page parameter

destinations resolves a slug to location metadata, but it is partial. rome-l33 returned location_id 33, name "Rome", type "city", country "Italy" and area "Lazio", while url, abstract, country_id and activity_count came back null and parent_locations came back as an empty array. barcelona-l45 behaved identically. Treat activity_count as unavailable rather than zero.

What the currency and the language really change, and where a count comes from

Measured by running the same query in two currencies and two locales and comparing the payloads, by confirming a destination before browsing it, and by asking for a place that does not exist and a phrase that matches nothing.

The currency changes the numbers, not just a label

Ask for euros and every row comes back in euros; ask the identical query for dollars and the same rows come back in dollars. That is worth stating because the alternative — a currency field that decorates a number converted by somebody else, or worse, one that silently varies between calls — is how price comparisons go quietly wrong. If you omit the currency the site chooses one, so pass it whenever the numbers will be compared to anything.

The language changes the content, and the URLs with it

Asking for German returned German titles, a German summary, a German duration and German activity URLs, for the same activity ids as the English call. The ids are the join key across locales; the text and the links are not. Note also that the result count differed between the two locales for the same phrase — the market a locale represents does not sell exactly the same catalogue.

A search row carries the discount, which is the number that moves

Alongside the price sits the price before discount and the percentage between them, so you can see the depth of a promotion rather than only its result. Rating and review count are on essentially every row, and duration on most; the next available start time is a real timestamp rather than a word like 'today', which is what makes it usable for availability tracking.

A query that matches nothing returns recommendations, not zero rows

An invented phrase came back with a full grid of real activities in a country nobody asked about, and the site reported a large result count for it. That is GetYourGuide padding an empty search, not a parsing failure on our side, and the count it reports is its own. It is the single easiest way to convince yourself a query worked when it did not, so check that the rows resemble what you asked for. A destination that does not exist behaves differently and correctly: it comes back as a clean not-found.

The operator is a real company, and reviews stop at what the page shows

The supplier on an activity is the tour company actually running it rather than the marketplace, which is the field you need if you are tracking who operates what. Reviews return the newest ten, which is what the activity page itself publishes; the total review count beside them is the full figure and it will be vastly larger. Use the count for scale and the ten for tone — this is not a review archive.

What people build with GetYourGuide

The jobs this data is most often used for.

5

endpoints

1/2

credits per call

01

Travel apps call search to list tours and activities for a destination.

02

Aggregators use browse and detail to build an activity catalog.

03

Reputation tools use reviews to surface top-rated experiences.

What GetYourGuide data costs

The cheapest call here is 1 credit, so $15/mo (Pro) buys 10,000 of them — $1.50 per 1,000 credits. Credits roll over and never expire, and failed or blocked calls are not charged.

Full pricing →
$0.67–$1.50 / 1,000 credits
  • 1,000 free credits on signup, no card
  • One key, all 184 APIs, one credit pool
  • Failed and blocked calls are never charged
  • Credits roll over and never expire

Call it in two lines

Sign up, get 1,000 credits and one key that works on every engine. Then this is the whole protocol.

curl
curl -X POST https://api.reefapi.com/getyourguide/v1/search \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"query":"Rome colosseum","currency":"EUR"}'
python
import requests

r = requests.post(
    "https://api.reefapi.com/getyourguide/v1/search",
    headers={"x-api-key": REEF_KEY},
    json={
  "query": "Rome colosseum",
  "currency": "EUR"
},
)
print(r.json()["data"])
FAQ

Have a question? We got answers.

The questions people actually ask before wiring up GetYourGuide.

Get a free key →
Where do activity_id and location_id come from?

Both are readable straight out of a GetYourGuide URL. In https://www.getyourguide.com/rome-l33/colosseum-roman-forum-palatine-hill-guided-tour-t195566/ the -l33 makes location_id 33 (Rome) and the -t195566 makes activity_id 195566. Verified location ids include rome-l33, paris-l16 and barcelona-l45. browse and destinations take the whole slug, "rome-l33", or location_id plus city. The city half of the slug is cosmetic; the number is what resolves.

Why does search return no prices?

The keyword search surface returns discovery cards, activity_id, title, url, images and a category such as guidedTour or entryTicket, and no commercial fields at all. Prices, ratings, review counts and next start times only appear on browse, which lists a destination's top activities. A common pattern is search to find the activity_id, then browse the destination and match on activity_id, or go straight to browse when you already know the city.

Is price the total cost or a from-price?

It is the lowest advertised per-person price for that activity, the same "from" figure the site shows on a listing card, not a total for your party and not tied to a date. A Colosseum guided tour returned 57.2 and a Paris evening cruise 19.85 on 2026-08-27. There is no participants or date parameter, so treat these as headline prices for comparison and ranking rather than as a quote.

Does the currency parameter actually change the prices?

Not reliably, so read activities[].currency on every row instead of assuming it matches what you sent. Measured on 2026-08-27: rome-l33 returned USD for currency EUR, GBP, AUD and USD alike; paris-l16 returned USD for EUR, USD and AUD but EUR for GBP; barcelona-l45 returned EUR when currency was unset, GBP or TRY, and USD when it was USD. Mixing rows from different destinations without checking the currency field will silently compare dollars against euros.

Why are rating and review_count null on some activities?

Because that activity has no public reviews yet, which is different from a rating of zero. On a live Rome browse, an established Colosseum tour returned rating 4.77 with review_count 89083 while a newly listed gallery entry returned null for both. Newly listed experiences are exactly the rows most likely to be null, so filter on review_count being non-null before you rank or average anything.

What does start_date mean on a browse result?

It is a timestamp for an offer on the destination page, returned with the local UTC offset, for example "2026-08-29T15:00:00+02:00" for Rome and "2026-08-27T10:00:00+02:00" for Paris. It is not an availability calendar and it is not filtered to the future: in a 2026-08-27 call one Rome row carried a start_date of 2026-08-25. Use it as a hint about the next advertised departure, and check the date before showing it to a user.

Do I need a GetYourGuide partner account for this?

No. GetYourGuide's own affiliate and partner APIs require an account, a partner id and approval before you can read anything. This engine reads the public destination and activity pages, so a ReefAPI key and a slug or URL is the whole setup, and the response arrives in the same { ok, data, meta, error } envelope as every other engine here.

What is the GetYourGuide API?

GetYourGuide API is a ReefAPI endpoint group for getyourguide It returns live JSON through POST requests under /getyourguide/v1.

Is the GetYourGuide API free to try?

Yes. ReefAPI starts with 1,000 free credits, no card required. GetYourGuide calls use the same shared credit balance as every other ReefAPI engine.

Do I need a GetYourGuide login or account?

No login to GetYourGuide is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.

How fresh is the GetYourGuide data?

The page example is captured from a live search call, and production requests fetch live data through ReefAPI rather than a static sample.

How many credits does the GetYourGuide API use?

GetYourGuide actions currently cost 1-2 credits per successful call. Failed or blocked calls are free, and all APIs draw from one credit pool.

Can I call GetYourGuide from an AI assistant or MCP client?

Yes. Connect ReefAPI once through MCP and your assistant can call getyourguide actions with the same key, credit pool and JSON envelope used by normal REST requests.

Is the GetYourGuide API a GetYourGuide scraper?

It is the managed alternative to a DIY GetYourGuide scraper. Instead of building and maintaining your own scraper — proxies, headless browsers, captcha and constant breakage — you call one ReefAPI endpoint and get the same getyourguide back as clean JSON.

8 Travel & Lodging APIs on the same key

One key, one credit pool, one response envelope. If you are pulling GetYourGuide, you are one call away from the rest of the category — no second contract, no second integration.

Need something this API does not do?

Name the endpoint, the field, or a source we do not carry yet. We ship new APIs every week and you would be first to get the key. Real people read every message and reply the same day.

0/4000

No account needed · we reply from [email protected]

Try it on your own data before you pay anything

The call above is the real endpoint, not a recording. A free key gives you 1,000 credits, the other 183 APIs, and the same envelope everywhere.

Endpoints, parameters and credit costs on this page are read from the live catalog and cannot drift from what the API accepts. Field notes were captured on 2026-08-30.