{
  "openapi": "3.0.1",
  "info": {
    "title": "GetYourGuide Scraper - Tours, Activities, Prices & Reviews",
    "description": "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.",
    "version": "0.1",
    "x-build-id": "2EdESguroJSrNJc9S"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/abotapi~getyourguide-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-abotapi-getyourguide-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/abotapi~getyourguide-scraper/runs": {
      "post": {
        "operationId": "runs-sync-abotapi-getyourguide-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/abotapi~getyourguide-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-abotapi-getyourguide-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "required": [
          "mode"
        ],
        "properties": {
          "mode": {
            "title": "Mode",
            "enum": [
              "search",
              "url",
              "reviews"
            ],
            "type": "string",
            "description": "Choose 'search' to find activities by keyword, city or place with filters, 'url' to paste activity, search or destination links, or 'reviews' to collect traveler reviews.",
            "default": "search"
          },
          "queries": {
            "title": "Search queries",
            "type": "array",
            "description": "Cities, places or activity keywords, for example 'paris', 'colosseum tickets' or 'food tour rome'. Each query is searched separately. Used in search mode, and in reviews mode to pick the top activities.",
            "default": [
              "paris"
            ],
            "items": {
              "type": "string"
            }
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "popularity",
              "price_asc",
              "price_desc",
              "rating_desc"
            ],
            "type": "string",
            "description": "Order of results.",
            "default": "popularity"
          },
          "minRating": {
            "title": "Minimum rating",
            "enum": [
              "0",
              "3.0",
              "3.5",
              "4.0",
              "4.5"
            ],
            "type": "string",
            "description": "Only activities rated at least this many stars.",
            "default": "0"
          },
          "minPrice": {
            "title": "Minimum price",
            "minimum": 0,
            "type": "integer",
            "description": "Lowest 'from' price per person, in the selected currency. Leave empty for no minimum."
          },
          "maxPrice": {
            "title": "Maximum price",
            "minimum": 0,
            "type": "integer",
            "description": "Highest 'from' price per person, in the selected currency. Leave empty for no maximum."
          },
          "languages": {
            "title": "Tour languages",
            "type": "array",
            "description": "Only activities offered in at least one of these languages. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "en",
                "de",
                "fr",
                "es",
                "it",
                "pt",
                "zh",
                "ja",
                "ar"
              ],
              "enumTitles": [
                "English",
                "German",
                "French",
                "Spanish",
                "Italian",
                "Portuguese",
                "Chinese",
                "Japanese",
                "Arabic"
              ]
            }
          },
          "durations": {
            "title": "Duration",
            "type": "array",
            "description": "Only activities with one of these durations. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "0",
                "1",
                "2",
                "3",
                "4",
                "5",
                "6",
                "7"
              ],
              "enumTitles": [
                "0-3 hours",
                "3-5 hours",
                "5-7 hours",
                "Full day (7+ hours)",
                "2 days",
                "3 days",
                "4 days",
                "5+ days"
              ]
            }
          },
          "freeCancellationOnly": {
            "title": "Free cancellation only",
            "type": "boolean",
            "description": "Keep only activities with free cancellation.",
            "default": false
          },
          "skipTheLineOnly": {
            "title": "Skip-the-line only",
            "type": "boolean",
            "description": "Keep only activities with skip-the-line or fast-track entry.",
            "default": false
          },
          "urls": {
            "title": "Links",
            "type": "array",
            "description": "Used when mode is url (and in reviews mode). Paste any GetYourGuide link: an activity link (full record), a search link with a q parameter, a destination link (city, area, country or attraction page) or a category link. Links in other languages or on country domains work too, and a bare activity id is accepted. Destination and category links are walked like a search. Other pages (home, help, partner pages) are skipped with a note. Filter fields are ignored for links.",
            "default": [
              "https://www.getyourguide.com/paris-l16/disneyland-paris-2-parks-ticket-1-2-3-4-5-day-t395320/",
              "https://www.getyourguide.com/s/?q=paris",
              "https://www.getyourguide.com/rome-l33/",
              "https://www.getyourguide.com/amsterdam-l36/cruises-boat-tours-tc48/"
            ],
            "items": {
              "type": "string"
            }
          },
          "fetchDetails": {
            "title": "Fetch full activity details",
            "type": "boolean",
            "description": "Adds the provider, languages, highlights, inclusions, meeting point, itinerary, full description and image gallery to every activity. Turn off for a lighter run with list fields only.",
            "default": true
          },
          "maxPages": {
            "title": "Max pages per search",
            "minimum": 0,
            "type": "integer",
            "description": "Optional page limit per search. Leave empty (or 0) for no page limit. This is not the run's cap and has no finite default: the run is capped by Max items (default 20), so raise or clear Max items to collect more."
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum number of rows returned across the whole run. This is the single default cap (20); Max pages per search does not cap and defers to this field. Use 0 for unlimited.",
            "default": 20
          },
          "maxReviewsPerActivity": {
            "title": "Max reviews per activity",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Reviews mode only: how many reviews to collect for each activity (default 20, up to 1000). Each review is one result row.",
            "default": 20
          },
          "minReviewRating": {
            "title": "Minimum review rating",
            "enum": [
              "0",
              "1",
              "2",
              "3",
              "4",
              "5"
            ],
            "type": "string",
            "description": "Reviews mode only: keep only reviews with at least this many stars. 'Any rating' keeps everything.",
            "default": "0"
          },
          "reviewLanguages": {
            "title": "Review languages",
            "type": "array",
            "description": "Reviews mode only: keep only reviews written in these languages, for example 'en', 'de' or 'fr' (two-letter codes). Leave empty for every language.",
            "items": {
              "type": "string"
            }
          },
          "reviewTravelerTypes": {
            "title": "Traveler types",
            "type": "array",
            "description": "Reviews mode only: keep only reviews from these kinds of travelers. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "couple",
                "friends",
                "solo",
                "family"
              ],
              "enumTitles": [
                "Couples",
                "Groups of friends",
                "Solo travelers",
                "Families"
              ]
            }
          },
          "reviewsWithTextOnly": {
            "title": "Only reviews with written text",
            "type": "boolean",
            "description": "Reviews mode only: skip star-only reviews that have no comment.",
            "default": false
          },
          "currency": {
            "title": "Currency",
            "enum": [
              "USD",
              "EUR",
              "GBP",
              "AUD",
              "CAD",
              "CHF",
              "JPY",
              "SEK",
              "NOK",
              "DKK",
              "PLN",
              "MXN",
              "BRL",
              "NZD",
              "SGD",
              "HKD",
              "AED",
              "INR"
            ],
            "type": "string",
            "description": "Currency for prices.",
            "default": "USD"
          },
          "language": {
            "title": "Site language",
            "enum": [
              "en-US",
              "en-GB",
              "en-AU",
              "de-DE",
              "fr-FR",
              "es-ES",
              "it-IT",
              "nl-NL",
              "pt-PT"
            ],
            "type": "string",
            "description": "Language of titles and descriptions.",
            "default": "en-US"
          },
          "proxy": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Standard Apify Proxy by default. A residential connection is recommended for the most reliable results. If the selected connection is refused, the run falls back to other connections automatically.",
            "default": {
              "useApifyProxy": true
            }
          },
          "resumeFromRunId": {
            "title": "Resume from a previous run",
            "type": "string",
            "description": "Paste a previous run ID or dataset ID to continue a large collection without returning or charging for items already collected there. Use this after an interrupted run. For recurring monitoring of the same search, use Incremental mode instead."
          },
          "incrementalMode": {
            "title": "Incremental changes for scheduled runs",
            "type": "boolean",
            "description": "Turn this on for recurring monitoring. The first run returns everything as NEW. Later runs return only NEW, UPDATED and REAPPEARED items. Change detection compares price, discount, title, provider, languages and the other fields; it ignores scrape time, list position, duration and highlight wording, availability messages, rating and review counters and image links, so those alone never mark an item UPDATED. State is kept separately for each search or link set; use State key to name or share a campaign. Use 'What counts as a change' to narrow detection to prices.",
            "default": false
          },
          "stateKey": {
            "title": "State key (optional, incremental mode only)",
            "type": "string",
            "description": "Optional. Name this monitoring campaign to keep its state stable, or to deliberately share state across differently-configured runs. Leave empty to derive a key automatically from the search or links and the filter settings."
          },
          "emitUnchanged": {
            "title": "Emit unchanged items (incremental mode only)",
            "type": "boolean",
            "description": "Off by default. Turn on to also return items that have not changed since the last run, marked UNCHANGED. This returns, and bills, extra rows you already have.",
            "default": false
          },
          "emitExpired": {
            "title": "Emit expired items (incremental mode only)",
            "type": "boolean",
            "description": "On by default. Also returns items that were present in a previous run but are no longer found, marked EXPIRED. EXPIRED means the activity dropped out of the search results; it does not prove the activity is unavailable. Only produced once a run has fully scanned the tracked search, not when Max items capped it or when Resume was used. Turn off to skip these rows.",
            "default": true
          },
          "changeScope": {
            "title": "What counts as a change (incremental mode only)",
            "enum": [
              "all",
              "priceAndStock"
            ],
            "type": "string",
            "description": "'All fields' marks an item UPDATED when any tracked field changes. 'Price and discount only' marks it UPDATED only when its from-price, original price, discount, currency or price unit moves, so wording or provider edits never create a billable row.",
            "default": "all"
          },
          "compactUpdates": {
            "title": "Slim UPDATED and EXPIRED rows (incremental mode only)",
            "type": "boolean",
            "description": "Off by default. When on, UPDATED and EXPIRED rows carry only the identity, link, current price and a priceChanges object with the old and new values, not the full record. NEW rows stay complete. A slim row does not include the detail fields, so it is not charged the detail enrichment.",
            "default": false
          },
          "expireAfterMissedScans": {
            "title": "Missed scans before EXPIRED (incremental mode only)",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "An item is marked EXPIRED only after it was missing from this many consecutive complete scans (default 1). Raise it to ride out results that rotate in and out of a search.",
            "default": 1
          },
          "ignoreFieldsForChanges": {
            "title": "Ignore fields when detecting changes (incremental mode only)",
            "type": "array",
            "description": "Optional. Top-level field names to exclude from UPDATED change detection, in addition to the built-in handling. The fields stay in the output; they just do not count as a change.",
            "items": {
              "type": "string"
            }
          },
          "mcpConnectors": {
            "title": "Pipe results into your apps (optional)",
            "type": "array",
            "description": "Optionally send results into the apps you already use, via Model Context Protocol (MCP) connectors. Authorize one under Apify, Settings, API & Integrations, then select it here. Notion gets a rich page-per-item export; other connectors get a best-effort write/digest. Leave empty to skip; never changes the dataset output."
          },
          "notionParentPageUrl": {
            "title": "Notion parent page (Notion connector only)",
            "type": "string",
            "description": "URL or id of the Notion page under which item pages are created. Required to enable the Notion export; ignored by other connectors."
          },
          "maxNotifyListings": {
            "title": "Max items to export per connector",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Cap on items written to each connector per run. Does not affect the dataset.",
            "default": 50
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}