Your first Eventim query¶
This tutorial walks you through installing pyventim and running your first search against the Eventim catalogue. By the end you will have a working script that prints upcoming concerts from a market of your choice.
Prerequisites¶
- Python 3.14 or later
- pip or uv
Step 1 — Install pyventim¶
Step 2 — Install the Chromium browser¶
pyventim uses patchright to scrape Eventim pages that are not available via the JSON API. patchright requires a Chromium browser binary, which must be installed separately after the package:
Step 3 — Choose a market¶
pyventim supports Eventim markets across Europe, Brazil, and Israel. Each market has its own catalogue, currency, and language. You select a market using the EventimMarket enum.
Here are a few examples:
| Enum member | web_id |
Domain |
|---|---|---|
EventimMarket.GERMANY |
web__eventim-de |
eventim.de |
EventimMarket.SWEDEN |
web__eventim-se |
eventim.se |
EventimMarket.FINLAND |
web__lippu-fi |
lippu.fi |
EventimMarket.NORWAY |
web__eventim-no |
eventim.no |
EventimMarket.DENMARK |
web__billetlugen-dk |
billetlugen.dk |
See Markets for the full list. For this tutorial we will use EventimMarket.GERMANY.
Step 4 — Create a client¶
from pyventim import EventimClient, EventimMarket, EventimCategory
client = EventimClient(EventimMarket.GERMANY)
The client is lightweight — it holds no session state and makes no network requests until you call a method.
Step 5 — Fetch product groups¶
A product group is Eventim's term for a top-level event or tour (e.g. "Taylor Swift World Tour"). Individual dates and venues are products nested inside a product group.
for product_group in client.product_groups(categories=[EventimCategory.CONCERTS], page_limit=2):
print(product_group.name, product_group.start_date)
product_groups() returns an iterator — pyventim fetches pages lazily as you iterate. Setting page_limit=2 caps the request at two pages so you don't accidentally fetch the entire catalogue.
Pagination
Omitting page_limit fetches all available pages. Always set a limit when exploring or prototyping.
Step 6 — Run it¶
Save the code below as first_query.py and run it:
from pyventim import EventimClient, EventimMarket, EventimCategory
client = EventimClient(EventimMarket.GERMANY)
for product_group in client.product_groups(categories=[EventimCategory.CONCERTS], page_limit=2):
print(product_group.name, product_group.start_date)
You should see concert names and start dates printed to stdout.
What you learned¶
- How to install pyventim
- How to create an
EventimClientfor a specific market - How to search for product groups by category
- How
page_limitcontrols pagination
Next steps¶
The events you see each have a product_group_id. In the next tutorial you will use that ID to fetch the individual event dates, including ticket availability.