Siegessaeule APIsiegessaeule.de ↗
Access queer Berlin event listings from siegessaeule.de. Filter by date and section, retrieve venue details, geolocation, tags, and editor picks via 2 endpoints.
What is the Siegessaeule API?
The Siegessäule Events API exposes queer Berlin event data from siegessaeule.de across 2 endpoints, returning structured listings with venue addresses, geolocation, tags, images, and editor picks. The list_events endpoint lets you pull all events active on a given date — or narrow results to a specific section like clubs, kultur, or bars — while get_event_details returns the full event record including an HTML description, image copyright metadata, and upcoming recurrences.
curl -X GET 'https://api.parse.bot/scraper/60d893b4-a186-4abf-99ac-87600be52620/list_events?date=2026-10-16' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace siegessaeule-de-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: Siegessäule Berlin Events – browse today's queer events and drill into details."""
from parse_apis.siegessaeule_de_api import Siegessaeule, Section, EventNotFound
client = Siegessaeule()
# List today's events across all sections, capped at 5 items.
for summary in client.event_summaries.list(limit=5):
print(summary.title, "|", summary.section_title, "|", summary.venue_name)
# Get the full calendar for today to see the editor's pick and section list.
calendar = client.calendar.get()
print(f"{calendar.total_events} events on {calendar.date}")
if calendar.editors_pick is not None:
print("Editor's pick:", calendar.editors_pick.title, "@", calendar.editors_pick.venue_name)
for sec in calendar.available_sections:
print(" section:", sec.title, f"({sec.slug})")
# Filter to culture events, take the first hit, and drill into full details.
culture_hit = client.event_summaries.list(section=Section.CULTURE, limit=1).first()
if culture_hit is not None:
event = culture_hit.details()
print(event.title)
print(" venue:", event.venue.title, "-", event.venue.address)
print(" location:", event.venue.location.lat, event.venue.location.lng)
if event.upcoming_dates:
print(f" {len(event.upcoming_dates)} upcoming recurrence(s)")
# Direct point-lookup using identifiers read from the summary.
if culture_hit is not None:
try:
detail = client.events.get(
slug=culture_hit.slug,
section=culture_hit.section,
start_date=culture_hit.start_date,
start_time=culture_hit.start_time,
)
print("Direct lookup:", detail.title)
except EventNotFound:
print("Event was removed before lookup")
print("exercised: event_summaries.list / calendar.get / EventSummary.details / events.get")
List queer Berlin events for a given date, optionally filtered by section (category). Returns all events active on that date across all sections, or filtered to a single section. When date is omitted, the site defaults to today's date. Each event includes identifying fields (id, slug, section, start_date, start_time) that compose into get_event_details for full information. Also returns the editor's pick highlight and available section slugs. One GraphQL round-trip; no pagination — the site returns all events for the requested date in a single response.
| Param | Type | Description |
|---|---|---|
| date | string | Date to list events for in ISO format YYYY-MM-DD. When omitted, defaults to today's date. |
| section | string | Filter events by section. When omitted, events from all sections are returned. |
{
"type": "object",
"fields": {
"date": "string — the effective date of the listing in YYYY-MM-DD format",
"events": "array of event summary objects, each with id, title, slug, section, start_date, start_time, starts_at, ends_at, teaser, info, tags, venue_name, venue_id, image_url, siegessaeule_presents, section_title",
"editors_pick": "object or null — featured event chosen by editors for that date",
"total_events": "integer — total number of events returned",
"available_sections": "array of objects with title and slug for all navigable event sections"
},
"sample": {
"data": {
"date": "2026-08-30",
"events": [
{
"id": "en:108173",
"info": "",
"slug": "club-of-bitches",
"tags": [
"Böse Buben",
"gay",
"sex"
],
"title": "Club of Bitches",
"teaser": "Sex-Party, Rudelbums",
"ends_at": "2026-08-30T00:00:00+00:00",
"section": "sex",
"venue_id": "en:2120",
"image_url": null,
"starts_at": "2026-08-29T18:00:00+00:00",
"start_date": "2026-08-29",
"start_time": "20:00:00",
"venue_name": "Böse Buben",
"section_title": "Sex",
"siegessaeule_presents": false
}
],
"editors_pick": {
"slug": "claire-waldoff-ich-will-aber-gerade-vom-leben-singen-24",
"title": "Claire Waldoff – Ich will aber gerade vom Leben singen ...",
"section": "kultur",
"image_url": "https://cdn.siegessaeule.de/images/Sigrid_Grajek_Claire_Waldoff_Abend.049111cc.fill-680x238.jpg",
"starts_at": "2026-08-30T17:00:00+00:00",
"start_date": "2026-08-30",
"start_time": "19:00:00",
"venue_name": "BKA-Theater"
},
"total_events": 35,
"available_sections": [
{
"slug": "mix",
"title": "Mix"
},
{
"slug": "kultur",
"title": "Culture"
},
{
"slug": "bars",
"title": "Bars"
}
]
},
"status": "success"
}
}About the Siegessaeule API
What the API Returns
The list_events endpoint accepts an optional date parameter in YYYY-MM-DD format and an optional section slug. When called without a date, it defaults to today. The response includes an events array where each object carries id, title, slug, section, start_date, start_time, starts_at, ends_at, teaser, info, and tags. Alongside the event list, the response exposes an editors_pick object (or null) for that date and an available_sections array listing all navigable section titles and slugs — useful for building section-filter UIs without hardcoding values.
Event Detail Fields
The get_event_details endpoint requires four parameters sourced from list_events results: slug, section, start_date, and start_time. It returns the full event record, including a venue object with id, title, address, location (latitude/longitude), phone, email, categories, tags, and social_links. The image field, when present, includes url, copyright, source, attribution, and license. Events also carry an ends_at ISO 8601 datetime and an info field for performer or DJ line-up notes.
Sections and Coverage
Siegesssäule organizes its listings into sections such as mix, kultur, bars, clubs, and sex. The available_sections field in list_events responses always reflects the current set of navigable sections, so callers can stay in sync if sections are added or renamed. Coverage is specific to Berlin's queer scene as listed on siegessaeule.de — events outside that editorial scope are not present.
The Siegessaeule API is a managed, monitored endpoint for siegessaeule.de — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when siegessaeule.de changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official siegessaeule.de API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a queer Berlin event calendar app filtered by section (clubs, bars, kultur) using
list_eventsdate and section params - Map venue locations for queer Berlin events using the
locationlat/lng field fromget_event_details - Surface editor-picked featured events each day using the
editors_pickobject fromlist_events - Display DJ and performer line-up info from the
infofield returned byget_event_details - Aggregate image credits and licensing for event artwork using the
image.copyright,attribution, andlicensefields - Generate tag-based event discovery by collecting
tagsarrays across multiplelist_eventsdate queries - Pull complete venue contact data — address, phone, email, social links — from
get_event_detailsfor venue directory features
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Siegessäule offer an official developer API?+
What does `list_events` return beyond basic event titles?+
events array includes id, title, slug, section, start_date, start_time, starts_at, ends_at, teaser, info, and tags. The response also includes editors_pick (the featured event for that date, or null), total_events, and available_sections listing all current section slugs and titles.Can I retrieve events for multiple dates or date ranges in a single call?+
list_events endpoint accepts one date per request. There is no batch or range parameter. Retrieving events across a date range requires one call per date. You can fork this API on Parse and revise it to add a date-range endpoint that aggregates results across multiple dates.Is venue data available without fetching each event individually?+
list_events returns summary-level fields only — venue details such as address, geolocation, phone, email, and social links are only present in the venue object returned by get_event_details. A full venue record requires a separate call per event using the slug, section, start_date, and start_time from the listing.Does the API cover past events or only upcoming ones?+
list_events endpoint accepts any date in YYYY-MM-DD format, so querying past dates is supported where the source has retained those listings. However, availability of historical event data depends on what Siegessäule retains on their site — there is no guaranteed archive depth. The API does not expose a dedicated historical archive endpoint. You can fork it on Parse and revise to add pagination or archive scanning if the source supports it.