{
  "openapi": "3.0.1",
  "info": {
    "title": "Eventim Scraper - DE Events, Dates and Tickets",
    "description": "Scrape CTS Eventim Germany and EU event catalogue: concerts, festivals, comedy, sports, dates, venues, prices and availability. Search by city, keyword, category and date, or paste event links. Incremental monitoring with NEW, UPDATED, REAPPEARED, EXPIRED, resume and MCP export.",
    "version": "0.1",
    "x-build-id": "GZ2eyrdOVHqDkNSfX"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/abotapi~eventim-de-event-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-abotapi-eventim-de-event-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~eventim-de-event-scraper/runs": {
      "post": {
        "operationId": "runs-sync-abotapi-eventim-de-event-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~eventim-de-event-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-abotapi-eventim-de-event-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"
            ],
            "type": "string",
            "description": "Search reads Eventim by city, keyword, category and date. URL mode reads specific Eventim pages you paste.",
            "default": "search"
          },
          "cities": {
            "title": "Cities",
            "type": "array",
            "description": "Search mode: city names to cover, one per line, for example Berlin, Hamburg, Munich. Each city is one catalogue scope. Leave empty to search all cities.",
            "items": {
              "type": "string"
            }
          },
          "query": {
            "title": "Keyword",
            "type": "string",
            "description": "Search mode: optional keyword, for example an artist, event or venue name. Applied inside every city and category scope."
          },
          "categories": {
            "title": "Categories",
            "type": "array",
            "description": "Search mode: event categories, one per line, for example Concerts, Comedy, Classical, Sports. Each category multiplies the city scopes. Leave empty for all categories.",
            "items": {
              "type": "string"
            }
          },
          "dateFrom": {
            "title": "Events from (YYYY-MM-DD)",
            "type": "string",
            "description": "Only events on or after this date, format YYYY-MM-DD. Applies in search mode and to pasted city and venue links. Leave empty for no lower bound."
          },
          "dateTo": {
            "title": "Events until (YYYY-MM-DD)",
            "type": "string",
            "description": "Only events on or before this date, format YYYY-MM-DD. Applies in search mode and to pasted city and venue links. Leave empty for no upper bound."
          },
          "inStockOnly": {
            "title": "Available tickets only",
            "type": "boolean",
            "description": "Return only events whose tickets are currently bookable. Applies in search mode and to pasted city and venue links.",
            "default": false
          },
          "sort": {
            "title": "Sort order",
            "enum": [
              "DateAsc",
              "DateDesc",
              "NameAsc",
              "NameDesc",
              "Rating",
              "Recommendation"
            ],
            "type": "string",
            "description": "Ordering inside every scope: search mode, and pasted city or venue links.",
            "default": "DateAsc"
          },
          "postalCode": {
            "title": "Postal code",
            "type": "string",
            "description": "Search mode: events around this German postal code (PLZ), for example 10117; the catalogue applies its own fixed radius. Applied inside every city and category scope. Leave empty for no postal filter."
          },
          "artist": {
            "title": "Artist",
            "type": "string",
            "description": "Search mode: artist or performer name. It is appended to the keyword, so the catalogue keyword search runs on both together (there is no separate artist filter). Leave empty to skip."
          },
          "venue": {
            "title": "Venues",
            "type": "array",
            "description": "Search mode: exact venue names as Eventim lists them, one per line, for example Uber Arena Berlin. Names must match exactly; a partial name returns nothing. Leave empty for all venues.",
            "items": {
              "type": "string"
            }
          },
          "priceMin": {
            "title": "Minimum price (EUR)",
            "minimum": 0,
            "type": "integer",
            "description": "Search mode: from-price lower bound in euros. Leave empty for no lower bound."
          },
          "priceMax": {
            "title": "Maximum price (EUR)",
            "minimum": 0,
            "type": "integer",
            "description": "Search mode: from-price upper bound in euros. Must not be below the minimum price. Leave empty for no upper bound."
          },
          "eventSeriesIds": {
            "title": "Event series IDs",
            "type": "array",
            "description": "Search mode: event series (product group) IDs, one per line, as shown in the productGroupId output field. Each ID is its own scope, so the cities and categories fan out once per series. Leave empty for all series.",
            "items": {
              "type": "string"
            }
          },
          "urls": {
            "title": "Eventim links",
            "type": "array",
            "description": "URL mode: Eventim pages to read, one per line. Event links are read as single records; city and venue links read that city's catalogue scope. Multi-value supported. Left untouched in URL mode, the three example links below are read (one event, one city, one venue). Unsupported links (artist, series) are skipped with a warning.",
            "default": [
              "https://www.eventim.de/en/city/berlin-1/",
              "https://www.eventim.de/en/event/bsv-eintracht-mahlsdorf-nofv-oberliga-nord-sportplatz-am-rosenhag-21994953/",
              "https://www.eventim.de/en/city/berlin-1/venue/admiralspalast-berlin-702/"
            ],
            "items": {
              "type": "string"
            }
          },
          "fetchDetails": {
            "title": "Fetch event details",
            "type": "boolean",
            "description": "Read each event's own page to add the full venue address, price span and per-tier prices with availability, plus the event page's own description and image (the listing's are used otherwise). Detail pages need the slower alternate connection (about 16 seconds per event), so this is off by default. Adds a per-event surcharge (see the section caption below).",
            "default": false
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 0,
            "type": "integer",
            "description": "Stop after this many events (0 = no limit; the run then stops when the scopes run out).",
            "default": 20
          },
          "maxPages": {
            "title": "Max scopes",
            "minimum": 0,
            "type": "integer",
            "description": "Upper bound on how many city and category scopes are walked (0 = no limit). Each scope serves up to 50 events, so Max items is the cap that normally stops a run first.",
            "default": 0
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Apify Proxy settings. Apify Proxy by default; free Apify plans have no residential proxies, so some pages may be unavailable there.",
            "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 pull without returning events already collected there."
          },
          "incrementalMode": {
            "title": "Incremental changes for scheduled runs",
            "type": "boolean",
            "description": "Turn this on for daily or recurring monitoring. The first run returns every matching event as NEW. Later runs normally return only NEW, UPDATED and REAPPEARED events. Turn on Emit unchanged or Emit expired only when you also want those rows returned (and billed). State is kept separately for each search and link setup; use State key to name or deliberately share a monitoring campaign.",
            "default": false
          },
          "stateKey": {
            "title": "State key (optional, incremental mode only)",
            "type": "string",
            "description": "Optional. Name this monitoring campaign to keep its state stable, or deliberately share state across differently configured runs. Leave empty to let the actor derive a key automatically from the search and link settings."
          },
          "emitUnchanged": {
            "title": "Emit unchanged records (incremental mode only)",
            "type": "boolean",
            "description": "Off by default. Turn on to also return events 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 records (incremental mode only)",
            "type": "boolean",
            "description": "Off by default. Turn on to also return events that were present in a previous run but are no longer found, marked EXPIRED. Only produced once a run has fully scanned the tracked search.",
            "default": false
          },
          "ignoreFieldsForChanges": {
            "title": "Ignore fields when detecting changes (incremental mode only)",
            "type": "array",
            "description": "Output field names that should NOT make an event count as UPDATED. Always ignored: raw (the verbatim upstream product data) and imageUrl (a CDN address that can rotate without the picture changing). Add fields such as tags or promoterName here if changes to them are not relevant to you. Use a dotted path (for example priceTiers.availability) to ignore a field inside a nested object or list. Ignored fields are still returned in the output.",
            "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 and Integrations, then select it here. Notion gets a rich page-per-item export; other connectors get a best-effort write or digest. Leave empty to skip; never changes the dataset output.",
            "items": {
              "type": "string"
            }
          },
          "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}