# GetYourGuide API — tours & activities scraper: search and browse things to do by city or keyword, with activity titles, prices, ratings, review counts, photos and categories, plus full activity detail (description, supplier, rating) and recent traveler reviews from GetYourGuide (getyourguide.com), worldwide, multi-currency, no API key required

> Search GetYourGuide for tours & activities by free-text keyword or destination ('Rome colosseum', 'Paris', 'wine tasting Tuscany'). Returns activity cards with title, activity_id, price and list price, rating, review count, photos, category, duration and a link to the activity. GetYourGuide answers a query it cannot match with recommended activities rather than an empty page, so compare the titles against your query when it is very specific.
> ReefAPI engine `getyourguide` · 5 endpoints · clean JSON, no scraping or browsers to manage.

## How to call
- **Endpoint:** `POST https://api.reefapi.com/getyourguide/v1/<action>` with a JSON body.
- **Auth:** header `x-api-key: <YOUR_REEFAPI_KEY>` — create one free (1,000 credits, no card): https://reefapi.com/signup
- **Response (every call):** `{ ok: boolean, data: ..., meta: { record_count, credits, ... }, error: { code, message } }` — branch on `ok`. Failed or blocked calls are free.
- **One key + one shared credit pool** across every ReefAPI API. Per-call credits are listed on each endpoint below.
- **Use it from an AI agent (MCP):** connect `https://api.reefapi.com/mcp` (remote streamable-http, `Authorization: Bearer <key>`) and your assistant can call these actions directly.

## Endpoints

### POST /getyourguide/v1/search — 1 credit
Search GetYourGuide for tours & activities by free-text keyword or destination ('Rome colosseum', 'Paris', 'wine tasting Tuscany'). Returns activity cards with title, activity_id, price and list price, rating, review count, photos, category, duration and a link to the activity. GetYourGuide answers a query it cannot match with recommended activities rather than an empty page, so compare the titles against your query when it is very specific.

**Parameters:**
- `query` (string, required) — What to look for — a city, attraction, activity type or any combination ('Barcelona', 'Eiffel Tower', 'Tuscany wine tour').
- `currency` (string, optional) — ISO code the prices should be quoted in (EUR, USD, GBP…). Every returned record carries the `currency` it was priced in. Leave it out and GetYourGuide picks one itself, so it can differ between calls — set it when you need comparable prices. [one of: AED, AUD, BRL, CAD, CHF, CLP, CNY, COP, CZK, DKK, EGP, EUR, GBP, HKD, HUF, IDR, ILS, INR, JPY, KRW, MAD, MXN, MYR, NOK, NZD, PHP, PLN, RON, SEK, SGD, THB, TRY, UAH, USD, UYU, VND, ZAR]
- `language` (string, optional) — Language of the returned titles, descriptions, categories and destination names. Ids, prices, ratings and review counts are the same in every language. Default English. [one of: en, en-GB, en-AU, ar, bg, ca, cs, da, de, de-AT, de-CH, el, es, es-MX, et, fi, fr, he, hr, hu, id, it, ja, ko, lt, lv, ms, nl, no, pl, pt, pt-BR, ro, ru, sk, sl, sr, sv, th, tr, uk, zh, zh-HK, zh-TW]

**Returns:** activities[]{activity_id, title, url, abstract, images[], category, duration, rating, review_count, price, original_price, currency, discount_percent, next_available} (up to ~24 per query) · meta.total_results = the number of matches GetYourGuide itself reports

**Example request body:**
```json
{
  "query": "Rome colosseum",
  "currency": "EUR"
}
```

### POST /getyourguide/v1/browse — 1 credit
Browse the top tours & activities for a destination's landing page. Returns activities with title, price, rating, review count, photos and a link. Identify the destination by its slug (from search/destinations) or by location_id + city.

**Parameters:**
- `slug` (string, optional) — The destination URL slug — '<city>-l<id>' (e.g. 'rome-l33', 'paris-l16'). Returned by search/destinations.
- `location_id` (string, optional) — GetYourGuide location id (the number after '-l' in the URL). Pair with city; the city slug is cosmetic.
- `city` (string, optional) — City/destination name (used with location_id to build the URL slug).
- `url` (string, optional) — Alternatively a full GetYourGuide destination URL.
- `currency` (string, optional) — ISO code the prices should be quoted in (EUR, USD, GBP…). Every returned record carries the `currency` it was priced in. Leave it out and GetYourGuide picks one itself, so it can differ between calls — set it when you need comparable prices. [one of: AED, AUD, BRL, CAD, CHF, CLP, CNY, COP, CZK, DKK, EGP, EUR, GBP, HKD, HUF, IDR, ILS, INR, JPY, KRW, MAD, MXN, MYR, NOK, NZD, PHP, PLN, RON, SEK, SGD, THB, TRY, UAH, USD, UYU, VND, ZAR]
- `language` (string, optional) — Language of the returned titles, descriptions, categories and destination names. Ids, prices, ratings and review counts are the same in every language. Default English. [one of: en, en-GB, en-AU, ar, bg, ca, cs, da, de, de-AT, de-CH, el, es, es-MX, et, fi, fr, he, hr, hu, id, it, ja, ko, lt, lv, ms, nl, no, pl, pt, pt-BR, ro, ru, sk, sl, sr, sv, th, tr, uk, zh, zh-HK, zh-TW]

**Returns:** activities[]{activity_id, title, url, images[], rating, review_count, price, currency, location}

**Example request body:**
```json
{
  "slug": "paris-l16"
}
```

### POST /getyourguide/v1/detail — 2 credits
Full record for one tour/activity: title, description, the company that operates it, price and list price, rating, review count and photos. Identify it by its activity url (from search/browse).

**Parameters:**
- `url` (string, optional) — The activity's GetYourGuide URL (from a search/browse result).
- `slug` (string, optional) — Alternatively the activity path ('…-lNN/…-tNN').
- `currency` (string, optional) — ISO code the prices should be quoted in (EUR, USD, GBP…). Every returned record carries the `currency` it was priced in. Leave it out and GetYourGuide picks one itself, so it can differ between calls — set it when you need comparable prices. [one of: AED, AUD, BRL, CAD, CHF, CLP, CNY, COP, CZK, DKK, EGP, EUR, GBP, HKD, HUF, IDR, ILS, INR, JPY, KRW, MAD, MXN, MYR, NOK, NZD, PHP, PLN, RON, SEK, SGD, THB, TRY, UAH, USD, UYU, VND, ZAR]
- `language` (string, optional) — Language of the returned titles, descriptions, categories and destination names. Ids, prices, ratings and review counts are the same in every language. Default English. [one of: en, en-GB, en-AU, ar, bg, ca, cs, da, de, de-AT, de-CH, el, es, es-MX, et, fi, fr, he, hr, hu, id, it, ja, ko, lt, lv, ms, nl, no, pl, pt, pt-BR, ro, ru, sk, sl, sr, sv, th, tr, uk, zh, zh-HK, zh-TW]

**Returns:** activity{activity_id, title, url, description, supplier, images[], rating, review_count, best_rating, price, original_price, currency, availability}

**Example request body:**
```json
{
  "url": "https://www.getyourguide.com/rome-l33/colosseum-roman-forum-palatine-hill-guided-tour-t195566/",
  "currency": "EUR"
}
```

### POST /getyourguide/v1/reviews — 1 credit
The most-recent public traveler reviews for one activity (rating, text, author, date) plus the overall rating and total review count. Returns the 10 newest reviews — that is the full set GetYourGuide publishes on the activity page itself; read review_count for the total volume behind them.

**Parameters:**
- `url` (string, optional) — The activity's GetYourGuide URL (from search/browse).
- `slug` (string, optional) — Alternatively the activity path ('…-lNN/…-tNN').
- `language` (string, optional) — Language of the returned titles, descriptions, categories and destination names. Ids, prices, ratings and review counts are the same in every language. Default English. [one of: en, en-GB, en-AU, ar, bg, ca, cs, da, de, de-AT, de-CH, el, es, es-MX, et, fi, fr, he, hr, hu, id, it, ja, ko, lt, lv, ms, nl, no, pl, pt, pt-BR, ro, ru, sk, sl, sr, sv, th, tr, uk, zh, zh-HK, zh-TW]

**Returns:** reviews[]{rating, text, author, date} + summary{rating, review_count}

**Example request body:**
```json
{
  "url": "https://www.getyourguide.com/rome-l33/colosseum-roman-forum-palatine-hill-guided-tour-t195566/"
}
```

### POST /getyourguide/v1/destinations — 1 credit
Destination metadata for a GetYourGuide location: id, name, type, country, the number of bookable activities, and its parent locations (region → country). Useful to confirm a destination and discover its hierarchy before browsing.

**Parameters:**
- `slug` (string, optional) — The destination URL slug ('<city>-l<id>').
- `location_id` (string, optional) — GetYourGuide location id (number after '-l').
- `city` (string, optional) — City/destination name (used with location_id).
- `url` (string, optional) — Alternatively a full destination URL.
- `language` (string, optional) — Language of the returned titles, descriptions, categories and destination names. Ids, prices, ratings and review counts are the same in every language. Default English. [one of: en, en-GB, en-AU, ar, bg, ca, cs, da, de, de-AT, de-CH, el, es, es-MX, et, fi, fr, he, hr, hu, id, it, ja, ko, lt, lv, ms, nl, no, pl, pt, pt-BR, ro, ru, sk, sl, sr, sv, th, tr, uk, zh, zh-HK, zh-TW]

**Returns:** destination{location_id, name, type, url, abstract, country_id, activity_count, parent_locations[]{id, name, type, url}}

**Example request body:**
```json
{
  "slug": "paris-l16"
}
```

## More
- Try it live, no code: https://reefapi.com/playground?engine=getyourguide
- Human docs page: https://reefapi.com/docs/getyourguide
- Overview page: https://reefapi.com/getyourguide-api
- Every ReefAPI API in one file (for your AI): https://reefapi.com/llms-full.txt
