Eventim Scraper | CTS Eventim Events & Tickets - 40+ Countries avatar

Eventim Scraper | CTS Eventim Events & Tickets - 40+ Countries

Pricing

from $2.20 / 1,000 results

Go to Apify Store
Eventim Scraper | CTS Eventim Events & Tickets - 40+ Countries

Eventim Scraper | CTS Eventim Events & Tickets - 40+ Countries

Scrape CTS Eventim public events — search, categories, cities, venues, artists, tours & eventseries across 40+ shops (eventim.de, TicketOne, FNAC). Multi-city/category batch, filters, series expand. Export Excel/CSV/JSON. Unofficial — not affiliated with CTS EVENTIM.

Pricing

from $2.20 / 1,000 results

Rating

0.0

(0)

Developer

kane liu

kane liu

Maintained by Community

Actor stats

1

Bookmarked

5

Total users

3

Monthly active users

4 days ago

Last modified

Share

Eventim Scraper — CTS Eventim Events, Tickets, Venues & Offers (40+ Countries)

Scrape CTS Eventim public events across 40+ national shops — including eventim.de (Germany), Austria, Switzerland, UK, Netherlands, TicketOne Italy, and FNAC Spectacles France — then export structured results as Excel, CSV, or JSON.

Use this Actor as a practical CTS Eventim API alternative for concert discovery, sports ticketing, theater listings, venue research, and ticket offer monitoring. Pick a mode (search, category, city, venue, artist, tour, eventseries, event detail), choose a host and city/category batch, and get clean Dataset rows with titles, dates, venues, ticket availability, artists, and prices.

  • Pay per delivered row — $0.005 Actor start + $3.00 / 1,000 results (tiered discounts for larger volumes); one parent entity, ticket offer, or inventory listing is one result and one billed unit. Platform usage is included (you do not pay separate Apify compute on top)
  • Covers 44 host keys / 38 hostnames, full DE category tree, city packs, multi-host/city/category batch with a per-target row limit, filters, series expand, detail enrich, and locale-aware query translation
  • Built for Akamai Bot Manager: managed worker with public APIs first and a browser session only for gated pages (you do not need your own proxies)

Free Apify-plan users (developer policy): 10 runs / 200 results per run.

Public-data enhancements (2026-10-03)

  • New modes: home returns promoted artist/series listings (not dated inventory), live_categories reads current navigation, and help returns public help information with platform-scoped contacts. categories and hosts still return capability catalogs.
  • acquisitionMode=auto selects the available channel per surface. http uses verified DE/AT/CH/NL public APIs and open pages, and never falls back to a browser; browser retains the existing rendering path. A gated detail is not an empty successful collection.
  • enrichVenues=true reuses matching venue information and fetches linked venue pages once per run. enrichTopN=0 disables event-detail expansion. The limit applies across the whole run, not once per page.
  • Actual next-page links drive pagination. Repeated pages stop with a warning. Requested filters reject rows whose source data cannot establish a match.
  • RUN_SUMMARY.diagnostics includes listingsExtracted, contractDropped, sessionHealth, challengeVendor, shadowBlocked, detailsEnriched, venuesEnriched, paginationStalled, and channel attempts. Partial detail results are explicitly marked; availability of a seat-map link does not mean seat inventory was collected.
  • Venue phones/emails never contain Eventim support contacts. venueWebsite is distinct from the Eventim venue URL; help-page platformContacts are kept separate. Missing contacts on an unfetched detail are unverified, not absent.

Public API and inventory additions

  • DE, AT, CH (Ticketcorner) and NL search returns native production API products. Date, price, availability and supported source ordering apply before the result limit. Series/tour requests use the native product-group scope. Category pages supply their own current category names to the API; IDs are not guessed from translated labels.
  • productId identifies the sold product. Parking, upgrades and camping products may link to another linkedEventId; they remain type=listing, not counterfeit parent events. Parent-event enrichment never replaces their own name or price.
  • includeInventory=true reads public ticket types and a seat availability snapshot. It does not select seats, reserve tickets or refresh in the background. Successful Each price category or standing-area entity becomes its own rowType=listing Dataset row with copied event identity, name, URL, date and venue fields. Parent event rows keep summary counts and totals but never embed inventory lists. Listing rows give mappedSeats and availableSeats, standing-area availability, sourceTimestamp and the observation time. Individual seats are not listed (a stadium map has tens of thousands). Counts cover the exposed primary offer only, not all sales channels. maxSelectable is a purchase limit, not remaining inventory.
  • inventory.status=ticket_tiers_only means the page exposes ticket types without a seat map. unavailable includes a reason and never implies zero seats. DE and CH seated samples succeeded; repeated CH and AT/NL inventory reads also encountered 403 responses. Do not treat market search coverage as an inventory guarantee.
  • includeOffers now defaults to false. When enabled, each public ticket tier is emitted as its own rowType=offer row with a stable offerId; parent event rows retain offerCount, minimum/maximum price and currency but never embed ticketTiers. Seat availability remains available when explicitly requested.

One row per billed entity

maxResults is the Dataset row limit for each input target: each host, city, category path, event ID/URL, or start URL. The default is 70, and larger values are collected in parts of 70. Within one target, every row type shares that limit; for example, an event row plus two offer rows consumes three results. The whole run stops at your maximum total charge, and free Apify-plan runs stop at 200 rows. This avoids embedding many separately useful ticket entities inside one billed event row.

The registered markets are not all verified. Production Android App authentication still requires an attested device; the public Web API is not that App channel. App staging test data and checkout remain excluded. Repeated same-day snapshots do not establish cross-day reliability. onlineOnly requires explicit attendance data; unknown attendance is rejected rather than inferred from a title.

Unofficial community Actor — not affiliated with CTS EVENTIM AG. Collects only publicly available page data. You are responsible for complying with Eventim terms and applicable law. Checkout / purchase flows are out of scope.


What does the Eventim Scraper do?

Eventim Scraper lets you extract structured event data from Eventim without building your own browser farm or fighting Akamai. Give it a mode, host, city/category, and filters, then start a run.

Under the hood, the Actor:

  1. Validates your input (mode, host, city/cities, category, filters, enrich flags)
  2. Sends the job through the control plane to a managed worker (eventim-com) that reads Eventim's public APIs (DE/AT/CH/NL) and public Eventim HTML (JSON-LD ItemList / MusicEvent / EventSeries + DOM listing-item), using a browser session only for gated pages
  3. Normalizes parent entities, ticket offers, and inventory entities into independent Dataset rows with stable IDs and copied event context
  4. Writes RUN_SUMMARY (and ERROR_SUMMARY on failure) to the key-value store

You run it like any other Apify Actor — schedule it, call it from the API, or plug it into Make, n8n, Zapier, Python, or the Apify MCP.


What Eventim data can I extract?

DataSearchCategory browseCity / VenueArtist / Tour / SeriesEvent detail
Event id / name / URL (id, url)✅✅✅✅✅
Start / end date & timezone✅✅✅✅✅
Venue name / city / street address⚠️*⚠️*✅ venue / ⚠️* city⚠️*✅
Venue phone / email⚠️*⚠️*⚠️*⚠️*⚠️*
Parent price summary + independent offer rows (lowPrice, rowType=offer)✅✅✅✅*✅
Availability (InStock / sold out)✅✅✅✅*✅
Artist slug / tour / series id✅✅✅✅✅
Category / vertical—✅—✅—
Filters (date, price, available, online, sort)✅✅✅——
Series expand → child events———✅**✅**
Host / city packs✅✅✅——

*With enrichDetails / enrichTopN on list modes. **With expandSeries.


Why scrape Eventim?

CTS Eventim is Europe's largest ticketing marketplace.event scrape Eventim to:

  • Build city or multi� event feeds for apps, newsletters, and local media (e.g. berlin-1, hamburg-7, de-top15)
  • Monitor concerts, sports, theater, comedy, festivals by category (konzerte-1/rock-pop-1, sport-2/fussball-1, …)
  • Track ticket offers, price tiers, and availability for competitive research
  • Generate venue and artist lead lists (artist pages, tour routes, series calendars)
  • Pull cross-market coverage in one run (DACH de/at/ch, Benelux nl/be, Nordics, CEE, Iberia, UK/IE, LATAM)
  • Export clean rows instead of hand-copying the Eventim UI

Compared with keyword-only or single-country scrapers, this Actor focuses on full public surface coverage: 40+ hosts, category tree, city packs, filters, series expand, detail enrich, and multi-target quota split.


Features

CapabilityWhat it means for you
40+ national shops44 host keys (de, at, ch, nl, be, nordics, CEE, es, pt, it TicketOne, uk, ie, fr FNAC, us, jp, nz, …)
Full DE category treeKonzerte (Rock/Pop, Hard&Heavy, HipHop, Jazz…), Sport, Comedy, Musicals, Theater, Kinder, Festivals, Party, Kultur, Gutscheine — plus free-form paths
City & host packsde-top15, de-capitals, dach, benelux, nordics, cee, core-verified
Search with localizeQueryEnglish concert → Konzert on de
Multi-target batchhosts[] / cities[] / categoryPaths[] each receive their own maxResults row limit; in mode=city the limit is per city and that city's hosts are tried in order
List filtersdateFrom/dateTo, priceMin/priceMax, onlyAvailable, isFree, onlineOnly, sort
Series expandTurn an eventseries parent into dated child events (expandSeries, maxSeriesEvents, futureOnly)
Detail enrichFull LDP fetch per event or top-N only (enrichDetails, enrichTopN)
Quality signalsStructured emptyReason codes: NO_MATCH (Eventim itself reports 0 results — the run succeeds with an empty dataset), EMPTY_MARKET, WRONG_IA, PARSE_MISS, BLOCKED, NOT_FOUND, CITY_MISMATCH, NO_TARGETS
Akamai-readyCamoufox browser session with residential egress; geoip handling and Bot Manager bypass
Export & automationExcel / CSV / JSON, or connect Make, n8n, Zapier, Python, Apify API / MCP

What you can do with it

1. Build a city weekend feed (Berlin, Hamburg, München)

In plain English: pick a city and get a table of events with titles, times, venues, and ticket prices.

You give:

FieldWhat to enter
modecity
hostde
cityberlin-1
maxResults20

You get back (Excel / CSV / JSON):

NameStartVenueCityPriceURL
APACHE 207 - ZUSATZSHOWS 20262026-09-15Uber Arena BerlinBerlin70.40 EURhttps://www.eventim.de/event/...
Roland Kaiser - Das Open Air 2026!2026-08-21Waldbühne BerlinBerlin100.40 EURhttps://www.eventim.de/event/...

2. Multi-city and multi-host batch in one run

One call, many markets — each target gets its own maxResults row limit.

{
"mode": "city",
"host": "de",
"cities": ["berlin-1", "hamburg-7", "muenchen-11"],
"maxResults": 30
}
{
"mode": "search",
"hosts": ["de", "nl", "uk"],
"hostPack": "core-verified",
"query": "concert",
"maxResults": 15
}

Or use packs:

{
"mode": "city",
"host": "de",
"cityPack": "de-top15",
"maxResults": 50
}

3. Category browse — Rock & Pop, Sport, Theater…

{
"mode": "category",
"host": "de",
"category": "konzerte-1",
"subcategory": "rock-pop-1",
"maxResults": 20
}

Free-form path also works (normalizes to /events/...):

{
"mode": "category",
"host": "de",
"categoryPath": "konzerte-1/rock-pop-1",
"maxResults": 20
}

4. Filtered search (date, price, availability)

{
"mode": "search",
"host": "de",
"query": "Konzert",
"dateFrom": "2026-09-01",
"dateTo": "2026-12-31",
"priceMin": 20,
"priceMax": 120,
"onlyAvailable": true,
"maxResults": 10
}

English queries are auto-localized per host (localizeQuery true true`---

concert →Konzert on de).


5. Expand a series and enrich details

{
"mode": "eventseries",
"host": "de",
"eventseriesPath": "philharmoniker-12345",
"expandSeries": true,
"maxSeriesEvents": 50,
"maxResults": 20
}
{
"mode": "search",
"host": "de",
"query": "Konzert",
"enrichTopN": 5,
"maxResults": 20
}

More Actors like this

Use a specialized Actor when one exists for your site — structured fields, better coverage, usually lower cost than a generic scrape. Use a general tool only when no dedicated Actor fits.

Similar events & tickets

  • Eventbrite Scraper — Global Eventbrite events, venues, organizers, categories & series (the closest alternative to Eventim for events & tickets)

Prefer a dedicated site scraper?

If your target has a specialized Actor below, use that first — usually cheaper and more structured than a generic events scrape.

E-commerce

Real Estate

Travel & Stays

Food Delivery

Jobs & Freelance

Local & Maps

General Web

  • Stealth Web Scraper — Cloudflare & JS-heavy public pages (HTML / text / CSS extraction) when no dedicated Actor exists

→ See the full catalog in Related Actors below, or browse apify.com/lentic_clockss.


How to use (no code required)

  1. Click "Try for Free" at the top of this page
  2. Choose mode (search, category, city, venue, artist, tour, eventseries, event, or start_urls)
  3. Set host (de for Germany, nl, uk, it for TicketOne, fr for FNAC, …) and your query / city / category
  4. (Optional) Add filters (dateFrom, priceMin, onlyAvailable…), series expand, or detail enrich
  5. Click Start — results appear in the Dataset tab within seconds

Download your results as CSV, Excel, or JSON. That's it.

From May 21, 2026, the free $5 monthly Apify credit gets you around 600–1,000 Eventim events in practice, depending on detail enrich and multi-target splits.


What you get back

Every successfully scraped event returns:

  • Identifiers — id (Eventim evid), url, listUrl, artistSlug, tourUrl, eventseriesPath
  • Core — name, startDate / endDate, venueName, city, addressLocality
  • Offers — lowPrice, highPrice, priceCurrency, priceText, ticketTiers, availability, offerUrl
  • Leads — phones, emails, address (street/门牌), org, leadAbsences (see below)
  • Context — host, hostName, source (json-ld-event, dom-listing), dataChannel, scrapedAt, recordType

Diagnostics on every run — targetUrls, pagesFetched, warnings, and structured emptyReason (NO_MATCH = a successful empty run, EMPTY_MARKET, WRONG_IA, PARSE_MISS, BLOCKED, NOT_FOUND, CITY_MISMATCH) so you know exactly what happened.


Lead / contact fields

Every dataset row includes these keys (empty arrays/objects plus leadAbsences when the site has no value). Samples are live public values from 2026-08-19 recon — not redacted.

FieldTypeWhat it means on Eventim
phones[{value, type}]Venue/box-office numbers from event or venue body tel: links. JSON-LD EventVenue has no telephone. German pages typically only show Eventim hotline 01806-570070 — that number is not copied onto rows ([] + leadAbsences.phones=本站无). Austria oeticket sample: Wiener Stadthalle +43 1 981 00-480.
emails[{value, type}]Venue mailbox from mailto: when present. Never info@eventim.de / DSA / Vertrieb (Impressum). Stadthalle sample: ticketservice@stadthalle.com. DE venues scanned this session: none.
address{street, unit, locality, region, postalCode, country, full}JSON-LD PostalAddress.streetAddress on venue + event LDP. unit (门牌) stays null — the building number is inside street. Search/city/category cards are city-only until enrichDetails. Samples: Uber-Platz 1 (Mühlenstraße 19), Berlin 10243; Friedrichstraße 107, 10117; Gropiusallee 38, Dessau 06846; Roland-Rainer-Platz 1, Wien 1150.
geo{lat, lng}Not present on measured EventVenue JSON-LD (本站无).
person{name, role}No named box-office agent. Impressum Vorstand is Eventim corporate — not stamped.
org{name, id?}Venue name + venue id when parsed.
web{website, socials[]}Venue URL when present. Footer Facebook/Instagram is Eventim, not the venue.
leadSource / leadRevealenumsearch / detail / entity; street and occasional tel are already visible (no show-phone XHR).
leadAbsencesobjectPer-subfield 本站无 / 未验证.

Reveal cost

  • No click-to-reveal. enrichDetails (default true) fetches each event LDP so list rows get streetAddress and any venue tel:/mailto: in the detail HTML.
  • Turning it off leaves city/search cards without street (leadAbsences.address.street=未验证).
  • /help/outlets/ has physical ticket-shop phones after a city/PLZ search — those are not merged into event rows.
  • Austria consumer shop is www.oeticket.com (host=at). www.eventim.at is a corporate landing, not the ticket IA. Use city wien-600.

Honest limitations

LeadStatusWhy
Venue street on LDP/venueAvailableJSON-LD streetAddress
Venue street on search/city cardsAfter enrichSERP had no JSON-LD this session; city LD is locality-only
DE venue phone/email本站无Only Eventim CS in footer
Some AT venue phone/emailAvailableBody tel:/mailto: (Stadthalle sample)
Platform CS / HQFiltered01806, 0421-20315511, info@eventim.de, Bremen Contrescarpe
Named person / geo / venue social本站无Not on measured schema
CH / TicketOne / FNAC lead encoding未验证Not opened 2026-08-19

Input reference

For developers who want full control:

ParameterTypeDescription
modestringsearch, category, city, venue, event, artist, tour, eventseries, start_urls, categories, hosts
hoststringHost key (e.g. de, nl, uk, it, fr, at, ch)
hosts / hostPackarray/stringMulti-host batch or named pack (dach, benelux, nordics, cee, core-verified…)
querystringKeyword for search (auto-localized with localizeQuery)
category / subcategory / categoryPath / categoryPathsstring/arrayDE tree or free-form /events/... paths
city / cities / cityPack / cityPathstring/arrayberlin-1, hamburg-7, … (the number is Eventim's city id from the /city/... URL) or de-top15 / free-form /city/...
venuePath / artistSlug / tourPath / eventseriesPathstringDirect entity paths
eventIds / eventUrls / startUrlsarrayDirect IDs / URLs (multi-target)
maxResultsintegerRows per host, city, category path, event ID/URL, or start URL; default 70, 1–500. Above 70 is collected in parts of 70; all row types count together. The run stops at your maximum total charge (free plan: 200 rows/run).
maxPages / pageintegerPagination (1–50)
dateFrom / dateTostringYYYY-MM-DD
priceMin / priceMaxnumberPrice range
onlyAvailable / isFree / onlineOnlybooleanAvailability filters
sortstringEventim sort key
expandSeries / maxSeriesEvents / futureOnlyboolean/integerSeries expand
enrichDetails / enrichTopNboolean/integerLDP detail enrich

Full JSON schema is in Input tab.


Pricing

Pay per event — Actor start + each Dataset result. Blocked pages, misrouted cities, and failed fetches are not billed as results; you pay only for rows written to the default Dataset.

User pays platform usage costs: No — platform compute/memory is included (developer pays).

What triggers a chargePrice
Actor start$0.005 per run (apify-actor-start)
Result (event / venue / artist / catalog row)$3.00 / 1,000 (apify-default-dataset-item)

Tiered pricing per 1,000 results (volume discounts):

Tier$/1,000per result
FREE*$3.00$0.003
BRONZE$3.00$0.003
SILVER$2.60$0.0026
GOLD$2.20$0.0022
PLATINUM$2.00$0.002
DIAMOND$1.60$0.0016

*Free Apify plan users are also subject to the Actor developer limit: 10 runs / 200 results per run (enforced in code as FREE_TIER_LIMIT). Runs that hit the cap finish as SUCCEEDED with RUN_SUMMARY.status=FREE_TIER_LIMIT.

Example costs:

VolumeEstimated cost
100 events~$0.305
1,000 events~$3.005
10,000 events~$30.005

Apify platform compute/memory is not billed on top of PPE (developer pays platform usage).


Architecture

This Actor (input, free-tier, dataset, Standby)
-- HTTPS job API -->
egress-control (control plane: row plan, billing cap, egress)
-- private mesh -->
VPS worker eventim-com (public APIs + browser scheduler + parse + OpenAPI)
-- control-plane egress --> eventim.*
  • Actor does not run a browser and does not mint Apify proxy by default (WORKER_PROVIDES_PROXY=1).
  • Default run memory: 1024 MB, timeout 3600s.
  • Worker region: europe-west1 (close to DE origin), schema 2026-08-07.1.

FAQ

Why browser worker? Eventim sits behind Akamai Bot Manager; plain HTTP returns Access Denied.

Which hosts are live? de (Germany) is primary 100% live. nl, uk are solid for search/city. at/ch city slugs are experimental — prefer free-form cityPath or startUrls for those.

Which category paths work? Full DE tree under /events/ (e.g. /events/konzerte-1/rock-pop-1/). theater-buehne-5/ballett-tanz-3 is known to IA-drift and now auto-falls back to parent /events/theater-buehne-5/.

City shows wrong title (e.g. Hannover → Leipzig)? That's Eventim's current 302/IA misroute. The worker now detects CITY_MISMATCH and returns an empty result with that reason instead of dirty Leipzig rows.

Is this official? No. Unofficial scraper for public pages. Not affiliated with CTS EVENTIM AG.

Seat maps / checkout? Not scraped (no cart/checkout automation).

How is this different from Eventbrite Scraper? Eventbrite covers global Eventbrite TLDs with destination API enrich; Eventim covers European Eventim shops (eventim.de, TicketOne, FNAC) via browser + JSON-LD. Use the Actor that matches your marketplace.


Changelog

  • 0.1 — Initial thin Actor + Cloud Run Camoufox worker, free-tier 10/200, multi-host coverage.
  • 0.2 — Full expansion: multi-host/city/category batch with quota split, list filters (date/price/availability/online/sort), series expand, detail enrich (top-N), locale-aware query, structured empty-reason codes, host/city packs, brand profiles, schema 2026-08-06.1.
  • 0.3 — Data-quality pass: categoryPath normalization to /events/... (fixes 404), preferParent for drift slugs, CITY_MISMATCH detection (Hannover→Leipzig), tiered PPE pricing.

All public Actors from lentic_clockss. Click a name to open the Store detail page.

E-commerce

Real Estate

Travel & Stays

Food Delivery

Jobs & Freelance

Events & Tickets

Business & B2B

Local & Maps

General Tools

→ Browse the full profile: apify.com/lentic_clockss