Eventim Scraper - Events, Venues & Ticket Prices
Pricing
from $2.20 / 1,000 results
Eventim Scraper - Events, Venues & Ticket Prices
Collect public Eventim events, venues, ticket prices and availability across national shops, including Germany, Austria and Switzerland. Pay per delivered row plus a start fee; offers and inventory are optional.
Pricing
from $2.20 / 1,000 results
Rating
0.0
(0)
Developer
kane liu
Maintained by CommunityActor stats
1
Bookmarked
7
Total users
3
Monthly active users
2 days ago
Last modified
Categories
Security
Limited permissionsShare
Eventim Scraper
Collect public Eventim events, venues and ticket prices as rows you can export or use through the API.
- Event names, dates, venues, cities, prices and availability.
- Search, city, category, artist, tour and direct event inputs across national shops.
- Optional ticket-offer and inventory rows, with event details attached.
- $3.00 per 1,000 delivered rows on the Free plan, plus a $0.005 start fee.
What does Eventim Scraper do?
Eventim Scraper collects public listings from Eventim shops, including Germany (de), Austria's oeticket (at), Switzerland's Ticketcorner (ch) and the Netherlands (nl). The market list also includes TicketOne (it) and FNAC Spectacles (fr); field availability differs by shop. This is an unofficial Actor, not affiliated with CTS EVENTIM AG.
- Find events: search by keyword, category, city or venue.
- Follow performers: collect artist, tour and event-series pages; optionally expand a series into dated events.
- Read selected pages: provide event IDs, event URLs or list URLs.
- Browse information: homepage promotions, current categories, help information and market/category catalogs.
- Optional rows:
includeOffersandincludeInventoryare off by default. Each offer or inventory listing is a separate row, charged at the same rate as an event row.
What data can you extract from Eventim?
Fields depend on the row type and what the page publishes. Missing values may be omitted or empty. The examples below illustrate the format, not current ticket availability.
Event rows
| Field | Description | Example |
|---|---|---|
recordType | Actor's row classification | event |
rowType | Entity represented by this row | event |
id | Entity identifier | 21548002 |
name | Event title | Example concert |
url | Public source URL | https://www.eventim.de/event/example-21548002/ |
host | Market key | de |
startDate | Published start date/time | 2027-06-12T19:30:00+02:00 |
venueName | Venue name | Example Hall |
city | Venue city | Berlin |
lowPrice | Lowest published price | 49.90 |
priceCurrency | Currency code | EUR |
availability | Published ticket status | InStock |
offerCount | Number of known ticket offers | 2 |
scrapedAt | Collection time | 2026-10-24T10:00:00+00:00 |
Offer rows
| Field | Description | Example |
|---|---|---|
rowType | One ticket offer | offer |
offerId | Offer identifier | de:21548002:offer:1 |
eventId | Associated event identifier | 21548002 |
eventName | Associated event name | Example concert |
price | This offer's price | 49.90 |
Listing rows
| Field | Description | Example |
|---|---|---|
rowType | Inventory or separately sold product | listing |
listingId | Inventory listing identifier | de:21548002:inventory:category:1 |
listingKind | Inventory grouping | seatCategory |
availableSeats | Available seats in the exposed group | 120 |
mappedSeats | Seats mapped in that group | 200 |
Venue rows
| Field | Description | Example |
|---|---|---|
venueName | Venue name | Example Hall |
venueWebsite | Venue's own website, when published | https://example.com |
address | Structured venue address | {"locality":"Berlin"} |
Artist rows
| Field | Description | Example |
|---|---|---|
artistSlug | Artist's URL identifier | remode |
name | Artist name | Example artist |
Tour rows
| Field | Description | Example |
|---|---|---|
productGroupId | Related event-group identifier | 864624 |
url | Tour page | https://www.eventim.de/artist/remode/remode-864624/ |
Event-series rows
| Field | Description | Example |
|---|---|---|
productGroupId | Related event-group identifier | 864624 |
url | Series page | https://www.eventim.de/eventseries/remode-864624/ |
Category rows
| Field | Description | Example |
|---|---|---|
name | Navigation category name | Konzerte |
url | Category page | https://www.eventim.de/events/konzerte-1/ |
Catalog rows
| Field | Description | Example |
|---|---|---|
recordType | Reference information rather than an event | catalog |
rowType | Catalog entity | catalog |
Help rows
| Field | Description | Example |
|---|---|---|
platformContacts | Platform support contacts, not venue contacts | [] |
url | Public help page | https://www.eventim.de/help/ |
How to scrape Eventim
- Open Eventim Scraper in Apify Console.
- Fill one target field, such as
query, and select the market withhost. - Set
maxResultsto3for a small first run. - Click Start and wait for completion.
- Download the dataset or read its rows through the API.
Empty input starts an example search for Konzert on de, limited to 3 rows. Normal start and row charges apply. With mode: "auto", filling one target field selects its mode automatically. When combining targets, URL inputs take priority over IDs, then keywords, artist/tour/series, categories, venues and cities. Remove unrelated targets to avoid ambiguity.
Search
Fill query. Common English terms can be localized, such as concert to Konzert on de.
Category
Fill category, optionally subcategory, or copy categoryPath from the shop. Use categoryPaths for several inputs.
City
Use the city slug from its URL, such as berlin-1. cities and cityPack accept batches. City fields are not keyword-search filters: combining query with city fields is rejected.
Venue
Use venuePath, or venue with city to identify the venue page.
Event
Supply eventUrls or numeric strings in eventIds. Use the matching host for IDs.
Artist
Fill artistSlug or artist with the page's artist identifier.
Tour
Fill tourPath with the tour's path under the artist page; set mode: "tour" explicitly when also supplying an artist.
Event series
Fill eventseriesPath. Set expandSeries to true for child events; maxSeriesEvents defaults to 20 and futureOnly to true.
Start URLs
Supply public list or detail pages in startUrls. Copy URLs from the appropriate shop rather than translating paths.
Home
Set mode: "home" for promoted artists and series, not a complete calendar of dated events.
Live categories
Set mode: "live_categories" for current navigation links.
Help
Set mode: "help" for public help information and platform contacts.
Categories
Set mode: "categories" for reference category information, not event listings.
Hosts
Set mode: "hosts" for registered shops and market information. Registration is not a guarantee that every page works.
What to fill in
| Field | What to enter | Default |
|---|---|---|
mode | Collection mode; automatic selection is usually enough | auto |
host / hosts / hostPack | One market, several markets, or a pack such as dach | de / empty / empty |
query | One search keyword | Empty; example Konzert |
startUrls / eventUrls / eventIds | Lists of URLs or event IDs | Empty |
category / subcategory / categoryPath / categoryPaths | Category identifiers or paths | Empty |
city / cities / cityPath / cityPack | City slug, list, path, or de-top15 / de-capitals | Empty |
venue / venuePath | Venue slug or path | Empty |
artist / artistSlug / tourPath / eventseriesPath | Performer or series target | Empty |
maxResults | Rows per input; 1–500, counting all row types | 70; form prefill 3 |
page / maxPages | Starting page / page limit per list input | 1 / 1 |
dateFrom / dateTo | Date boundaries, YYYY-MM-DD | Empty |
priceMin / priceMax | Ticket price boundaries | Empty |
onlyAvailable / isFree / onlineOnly | Availability, free admission or online attendance | false |
sort | DateAsc, DateDesc, NameAsc, NameDesc, Rating, Recommendation | Unset |
includeOffers / includeInventory | Add separately billed offer or inventory rows | false |
expandSeries / maxSeriesEvents / futureOnly | Expand series / child-event cap / future children only | false / 20 / true |
enrichDetails / enrichVenues / enrichTopN | Add detail fields / venue details / limit detail expansion | true / true / unset |
localizeQuery | Localize recognized English search terms | true |
fields | Optional list of output field names | All available fields |
Examples use small limits. Replace illustrative event IDs and tour/series paths with current targets.
Automatic example:
{"mode":"auto","maxResults":3}
Search:
{"query":"Konzert","host":"de","maxResults":3}
Category:
{"category":"konzerte-1","subcategory":"rock-pop-1","maxResults":3}
City:
{"cities":["berlin-1","hamburg-7"],"maxResults":3}
Venue:
{"venuePath":"/city/berlin-1/venue/uber-arena-berlin-2/","maxResults":3}
Event:
{"eventIds":["21548002"],"host":"de","maxResults":3}
Artist:
{"artistSlug":"remode","maxResults":3}
Tour:
{"mode":"tour","tourPath":"/artist/remode/remode-864624/","maxResults":3}
Event series:
{"eventseriesPath":"/eventseries/remode-864624/","expandSeries":true,"maxResults":3}
Start URLs:
{"startUrls":["https://www.eventim.de/city/berlin-1/"],"maxResults":3}
Home:
{"mode":"home","host":"de","maxResults":3}
Live categories:
{"mode":"live_categories","host":"de","maxResults":3}
Help:
{"mode":"help","host":"de","maxResults":3}
Categories:
{"mode":"categories","maxResults":3}
Hosts:
{"mode":"hosts","maxResults":3}
maxItems and limit are aliases for maxResults. Close misspellings are corrected; other unknown fields are ignored with a note. Invalid targets can stop before any row charge with INVALID_INPUT: <field> — <how to fix>; incompatible combinations also produce specific errors. Invalid optional filters may be ignored with a warning. Check INPUT_REPORT in the default key-value store for corrections and ignored fields.
Dates are never filled or advanced automatically. Localization covers recognized terms, not arbitrary translation. enrichTopN: 0 disables event-detail expansion.
Output example
Illustrative event row:
{"recordType": "event","rowType": "event","id": "21548002","name": "Example concert","url": "https://www.eventim.de/event/example-21548002/","host": "de","startDate": "2027-06-12T19:30:00+02:00","venueName": "Example Hall","city": "Berlin","lowPrice": 49.9,"priceCurrency": "EUR","offerCount": 2,"scrapedAt": "2026-10-24T10:00:00+00:00"}
Export the dataset as JSON, CSV, Excel, XML, RSS or an HTML table. Parent rows contain price and inventory summaries; offers and inventory groups are separate rows, not embedded lists.
Why use this Eventim scraper?
- Pay per delivered row: failed page reads do not count as rows; the start fee still applies.
- Useful partial results: available partial results can be delivered with warnings. Rows already written remain available; abrupt termination is not a guarantee of undelivered rows being saved.
- Clear input feedback: inspect
INPUT_REPORT,RUN_SUMMARYand, on failure,ERROR_SUMMARY. - No invented fields: missing prices, contacts or dates are not filled with guesses.
- Several inputs: batch cities, categories, markets or event URLs.
- No proxy setup: you do not need to set up proxies.
How much does it cost to scrape Eventim?
Pay-per-event pricing includes a $0.005 start event and a charge for each delivered row. The start event is charged per GB of memory, with a minimum of one; the default 512 MB run incurs one start event.
| Apify plan | Price per row | Price per 1,000 rows |
|---|---|---|
| Free | $0.003 | $3.00 |
| Starter | $0.003 | $3.00 |
| Scale | $0.0026 | $2.60 |
| Business | $0.0022 | $2.20 |
Platinum and Diamond have the same row price as Business.
maxResults applies per input: host, city, category path, event ID/URL or start URL. Default 70; larger requests are collected in parts of 70, up to the input maximum of 500. Event, offer and inventory rows count together: one event plus two offers uses three rows.
In city mode with several hosts, each city's hosts are tried in order until that city's limit is reached. Later hosts may contribute nothing. Packs count their individual cities or hosts.
Free-plan runs stop at 200 rows, with a developer-set limit of 10 runs of this Actor. The whole run also stops at Maximum cost per run (maxTotalChargeUsd in the API).
Example: two cities × three delivered rows = six rows. On the Free plan, 6 × $0.003 + $0.005 = $0.023 at default memory.
What happens when the run timeout is too short
A run can pause automatically when results need more time. It displays ABORTED and the message “Queued on the collection backend; this run will resume automatically when results are ready (about N s).” When ready, the same run resumes, reports “Resumed: delivering N rows.”, writes to the same dataset and finishes as SUCCEEDED. Already delivered rows are not delivered or charged twice; no manual restart is needed for this pause.
Automatic pauses are limited to 3 per run. Keep the default timeout of 3600 seconds to reduce them. Other failures or manual aborts do not imply automatic resumption.
The synchronous API endpoints run-sync and run-sync-get-dataset-items wait at most 300 seconds and can return an empty dataset during a pause. For longer runs, start asynchronously and read results after SUCCEEDED, or use a succeeded-event webhook.
Use with AI agents and the API
Apify MCP server (Claude, ChatGPT, Cursor, VS Code)
Add this remote MCP server:
https://mcp.apify.com?tools=lentic_clockss/eventim-scraper
Sign in with Apify using OAuth, or send Authorization: Bearer <YOUR_APIFY_TOKEN>. The tool starts a run and returns run and dataset IDs; the agent can read rows with get-dataset-items.
Without remote MCP support, use npx @apify/actors-mcp-server --tools lentic_clockss/eventim-scraper with APIFY_TOKEN set.
Example prompt: “Find three Eventim events in Berlin using city: berlin-1, host: de and maxResults: 3.”
Apify API
Python:
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("lentic_clockss/eventim-scraper").call(run_input={"query": "Konzert", "host": "de", "maxResults": 3})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item)
JavaScript:
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });const run = await client.actor('lentic_clockss/eventim-scraper').call({query: 'Konzert', host: 'de', maxResults: 3});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Over HTTP, send input JSON to POST https://api.apify.com/v2/acts/lentic_clockss~eventim-scraper/runs with the bearer token header. After completion, read GET https://api.apify.com/v2/datasets/<datasetId>/items?format=json.
Integrations
Use the Integrations tab to connect results to Google Sheets, Make, Zapier, n8n, Slack, Airtable or a webhook. Apify Schedules can start recurring runs.
Auf Deutsch
Mit dem Eventim Scraper erfassen Sie öffentlich sichtbare Veranstaltungen, Spielstätten und Ticketpreise. Für eine Suche tragen Sie einen Begriff in query ein; für Berlin verwenden Sie stattdessen city: "berlin-1". Über host wählen Sie den Shop: de für Deutschland, at für oeticket oder ch für Ticketcorner. Beginnen Sie mit maxResults: 3 und prüfen Sie die ausgegebenen Zeilen. Angebote und Bestandsgruppen werden nur auf Wunsch als zusätzliche, einzeln berechnete Zeilen ausgegeben. Fehlende Kontaktdaten werden nicht ergänzt. Sie zahlen pro gelieferter Zeile zuzüglich einer Startgebühr. Die Ergebnisse lassen sich als CSV, Excel oder JSON herunterladen. Bestandsangaben sind Momentaufnahmen und keine Reservierung; Umfang und Felder unterscheiden sich je nach Shop.
FAQ
Is it legal to scrape Eventim?
The Actor collects public data. You are responsible for checking Eventim's terms and applicable data-protection law; processing personal data needs a lawful basis. Public visibility is not permission for every use.
Why did my run end as ABORTED?
An automatic timeout pause can temporarily show ABORTED. Look for the queued/resume message above. A manual abort or a different error should not be assumed to resume.
How many results can I get?
Request 1–500 rows per input. Page limits, available matches, the run's maximum cost and free-plan restrictions can reduce delivery. A limit is not a promise of that many matches.
Why are some fields empty?
Not every page publishes dates, venue contacts or availability. Detail expansion can add fields, but cannot supply unpublished information. Venue contacts exclude platform support contacts.
Can I filter keyword searches by city?
Not with the city input fields. Use city mode for city pages; use a keyword alone for search. In venue mode, city and cityPath can provide venue context.
Does inventory mean I can buy those seats?
No. Inventory is a snapshot of exposed ticket groups, not all sales channels. No seats are selected or reserved, and individual seats are not enumerated. Unavailable inventory does not mean zero seats.
Why are no rows returned?
A confirmed NO_MATCH is a successful empty run. Collection errors are separate failures. Check the status and summaries rather than treating every empty dataset as proof that no events exist.
Limitations
- Registered markets are not all verified, and search coverage does not guarantee inventory coverage. Retired Serbia and Australia shops are rejected.
onlineOnlyis rejected forde,at,chandnl; elsewhere it requires explicit attendance data.- Filtering can exclude rows with insufficient date, price or availability information. Price sorting is not supported.
- Page limits and repeated-page detection can end collection before the requested row count.
- Parking and upgrades can be listing rows rather than events. Checkout, ticket purchases and private account data are excluded.
Related scrapers
More event and ticketing scrapers from the same publisher:
Browse all of our scrapers at apify.com/lentic_clockss.
Support
Report problems or request another field through the Issues tab of this Actor's page. Include the run ID and the input you used.