Skip to content

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

pip install pyventim
uv add 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:

patchright install chromium

# If needed also install system dependencies
patchright install --with-deps chromium
uv run patchright install chromium

# If needed also install system dependencies
uv run patchright install --with-deps chromium

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:

first_query.py
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)
python first_query.py

You should see concert names and start dates printed to stdout.

What you learned

  • How to install pyventim
  • How to create an EventimClient for a specific market
  • How to search for product groups by category
  • How page_limit controls 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.

Fetching event dates