Eventim Scraper | CTS Eventim Events & Tickets - 40+ Countries
Pricing
from $2.20 / 1,000 results
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
Maintained by CommunityActor stats
1
Bookmarked
5
Total users
3
Monthly active users
4 days ago
Last modified
Categories
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:
homereturns promoted artist/series listings (not dated inventory),live_categoriesreads current navigation, andhelpreturns public help information with platform-scoped contacts.categoriesandhostsstill return capability catalogs. acquisitionMode=autoselects the available channel per surface.httpuses verified DE/AT/CH/NL public APIs and open pages, and never falls back to a browser;browserretains the existing rendering path. A gated detail is not an empty successful collection.enrichVenues=truereuses matching venue information and fetches linked venue pages once per run.enrichTopN=0disables 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.diagnosticsincludeslistingsExtracted,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/emailsnever contain Eventim support contacts.venueWebsiteis distinct from the Eventim venue URL; help-pageplatformContactsare 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.
productIdidentifies the sold product. Parking, upgrades and camping products may link to anotherlinkedEventId; they remaintype=listing, not counterfeit parent events. Parent-event enrichment never replaces their own name or price.includeInventory=truereads 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 ownrowType=listingDataset 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 givemappedSeatsandavailableSeats, standing-area availability,sourceTimestampand 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.maxSelectableis a purchase limit, not remaining inventory.inventory.status=ticket_tiers_onlymeans the page exposes ticket types without a seat map.unavailableincludes 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.includeOffersnow defaults tofalse. When enabled, each public ticket tier is emitted as its ownrowType=offerrow with a stableofferId; parent event rows retainofferCount, minimum/maximum price and currency but never embedticketTiers. 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:
- Validates your input (mode, host, city/cities, category, filters, enrich flags)
- 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-LDItemList/MusicEvent/EventSeries+ DOMlisting-item), using a browser session only for gated pages - Normalizes parent entities, ticket offers, and inventory entities into independent Dataset rows with stable IDs and copied event context
- Writes
RUN_SUMMARY(andERROR_SUMMARYon 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?
| Data | Search | Category browse | City / Venue | Artist / Tour / Series | Event 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, Beneluxnl/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
| Capability | What it means for you |
|---|---|
| 40+ national shops | 44 host keys (de, at, ch, nl, be, nordics, CEE, es, pt, it TicketOne, uk, ie, fr FNAC, us, jp, nz, …) |
| Full DE category tree | Konzerte (Rock/Pop, Hard&Heavy, HipHop, Jazz…), Sport, Comedy, Musicals, Theater, Kinder, Festivals, Party, Kultur, Gutscheine — plus free-form paths |
| City & host packs | de-top15, de-capitals, dach, benelux, nordics, cee, core-verified |
Search with localizeQuery | English concert → Konzert on de |
| Multi-target batch | hosts[] / 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 filters | dateFrom/dateTo, priceMin/priceMax, onlyAvailable, isFree, onlineOnly, sort |
| Series expand | Turn an eventseries parent into dated child events (expandSeries, maxSeriesEvents, futureOnly) |
| Detail enrich | Full LDP fetch per event or top-N only (enrichDetails, enrichTopN) |
| Quality signals | Structured 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-ready | Camoufox browser session with residential egress; geoip handling and Bot Manager bypass |
| Export & automation | Excel / 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:
| Field | What to enter |
|---|---|
| mode | city |
| host | de |
| city | berlin-1 |
| maxResults | 20 |
You get back (Excel / CSV / JSON):
| Name | Start | Venue | City | Price | URL |
|---|---|---|---|---|---|
| APACHE 207 - ZUSATZSHOWS 2026 | 2026-09-15 | Uber Arena Berlin | Berlin | 70.40 EUR | https://www.eventim.de/event/... |
| Roland Kaiser - Das Open Air 2026! | 2026-08-21 | Waldbühne Berlin | Berlin | 100.40 EUR | https://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
- Walmart Product Scraper
- Amazon Search Scraper
- Etsy Scraper
- Allegro Scraper
- ASOS Product Scraper
- Cdiscount Product Scraper
- Costco Product Scraper
- Coupang Product Scraper
- SHEIN Product Scraper
- Temu Product Scraper
- Target Product Scraper
- MercadoLibre Scraper
- Rakuten Japan Scraper
Real Estate
- Apartments.com Rental Scraper
- Finn.no Scraper
- Funda Scraper
- Otodom Scraper
- Idealista Scraper
- Hepsiemlak Scraper
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)
- Click "Try for Free" at the top of this page
- Choose mode (
search,category,city,venue,artist,tour,eventseries,event, orstart_urls) - Set host (
defor Germany,nl,uk,itfor TicketOne,frfor FNAC, …) and your query / city / category - (Optional) Add filters (
dateFrom,priceMin,onlyAvailable…), series expand, or detail enrich - 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.
| Field | Type | What 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 / leadReveal | enum | search / detail / entity; street and occasional tel are already visible (no show-phone XHR). |
leadAbsences | object | Per-subfield 本站无 / 未验证. |
Reveal cost
- No click-to-reveal.
enrichDetails(default true) fetches each event LDP so list rows getstreetAddressand any venuetel:/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.atis a corporate landing, not the ticket IA. Use citywien-600.
Honest limitations
| Lead | Status | Why |
|---|---|---|
| Venue street on LDP/venue | Available | JSON-LD streetAddress |
| Venue street on search/city cards | After enrich | SERP had no JSON-LD this session; city LD is locality-only |
| DE venue phone/email | 本站无 | Only Eventim CS in footer |
| Some AT venue phone/email | Available | Body tel:/mailto: (Stadthalle sample) |
| Platform CS / HQ | Filtered | 01806, 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:
| Parameter | Type | Description |
|---|---|---|
mode | string | search, category, city, venue, event, artist, tour, eventseries, start_urls, categories, hosts |
host | string | Host key (e.g. de, nl, uk, it, fr, at, ch) |
hosts / hostPack | array/string | Multi-host batch or named pack (dach, benelux, nordics, cee, core-verified…) |
query | string | Keyword for search (auto-localized with localizeQuery) |
category / subcategory / categoryPath / categoryPaths | string/array | DE tree or free-form /events/... paths |
city / cities / cityPack / cityPath | string/array | berlin-1, hamburg-7, … (the number is Eventim's city id from the /city/... URL) or de-top15 / free-form /city/... |
venuePath / artistSlug / tourPath / eventseriesPath | string | Direct entity paths |
eventIds / eventUrls / startUrls | array | Direct IDs / URLs (multi-target) |
maxResults | integer | Rows 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 / page | integer | Pagination (1–50) |
dateFrom / dateTo | string | YYYY-MM-DD |
priceMin / priceMax | number | Price range |
onlyAvailable / isFree / onlineOnly | boolean | Availability filters |
sort | string | Eventim sort key |
expandSeries / maxSeriesEvents / futureOnly | boolean/integer | Series expand |
enrichDetails / enrichTopN | boolean/integer | LDP 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 charge | Price |
|---|---|
| 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,000 | per 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:
| Volume | Estimated 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), schema2026-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:
categoryPathnormalization to/events/...(fixes 404),preferParentfor drift slugs,CITY_MISMATCHdetection (Hannover→Leipzig), tiered PPE pricing.
Related Actors
All public Actors from lentic_clockss. Click a name to open the Store detail page.
E-commerce
- Allegro Scraper
- ASOS Product Scraper
- Cdiscount Product Scraper
- Costco Product Scraper
- Coupang Product Scraper
- Dhgate Scraper
- Etsy Scraper
- Faire Wholesale Scraper
- Globalsources Scraper
- Indiamart Scraper
- MercadoLibre Scraper
- Mercari Japan Scraper
- Monotaro Scraper
- Rakuten Japan Scraper
- SHEIN Product Scraper
- Target Product Scraper
- Temu Product Scraper
- Walmart Product Scraper
- TikTok Shop Scraper
Real Estate
- Booli Scraper
- Finn.no Scraper
- Funda Scraper
- Otodom Scraper
- Idealista Scraper
- Hepsiemlak Scraper
- Ipros Scraper
- Apartments.com Rental Scraper
Travel & Stays
Food Delivery
- Deliveroo Scraper
- Foodora Scraper
- Foodpanda Scraper
- Grab Scraper
- iFood Scraper
- PedidosYa Scraper
- Rappi Scraper
- Talabat Scraper
- Uber Eats Scraper
- Wolt Scraper
- Instacart Scraper
Jobs & Freelance
- Bayt Jobs Scraper
- Glassdoor Scraper
- Freelancer.com Scraper
- SEEK Jobs Scraper
- Kompass Scraper
- Thomasnet Scraper
- Xometry Scraper
Events & Tickets
Business & B2B
Local & Maps
General Tools
→ Browse the full profile: apify.com/lentic_clockss