Thursday API Dokumentation
Zugriff auf Schweizer Event-Daten für deine Applikation. Filtere nach Datum, Stadt, Kategorie, Wochentag und mehr. Erforderlich: Organisation / Space.
Authentifizierung
Alle Anfragen benötigen einen Bearer-Token im Authorization-Header.
Authorization: Bearer cx_live_YOUR_API_KEYAPI-Keys beginnen mit cx_live_. Teile deinen Key nie öffentlich. Bei Verlust: sofort in den Einstellungen rotieren.
Rate Limit je Key und Endpunkt, pro Minute: /api/v1/events 60 · /api/v1/projects 60 · /api/v1/projects/{id} 120 · /api/v1/stats 30. Ein Monatskontingent gibt es nicht.
Änderungen am Vertrag
meta.version nennt die Version der Antwort. Die Adresse bleibt /api/v1.
Beschreibungen kommen als Anriss von höchstens 300 Zeichen, den vollen Text hat die verlinkte Quelle. /api/v1/events gibt keine Events von Ticketmaster und Bandsintown heraus. Grund: Thursday gibt fremde Inhalte nur eingeschränkt weiter.
Erste Fassung.
GET /api/v1/events
Gibt gefilterte Events zurück. Bis zu 5000 pro Anfrage, paginiert mit offset.
fromISO dateneinStart-Datum (default: heute)toISO dateneinEnd-Datum (default: +90 Tage, max +365)citystringneinStadt(e), kommagetrennt (z.B. Zürich,Bern)cantonstringneinKanton(e), kommagetrennt (z.B. ZH,BE)categorystringneinKategorie(n): musik|kultur|business|bildung|gastro|community|sport|sonstigesweekdaynumberneinWochentag(e): 0=So, 1=Mo, …, 4=Do, 6=SasourcestringneinQuelle(n): petzi|ticketino|meetup-ch|eth-ics|rss-feeds|…. Die Schnittstelle führt nicht alle Quellen: wo die Nutzungsbedingungen der Quelle die Weitergabe an Dritte verbieten, geben wir die Events nicht heraus (lib/seo/source-content.ts). Auf der Website sind sie sichtbar.bboxstringneinGeo-Bounding-Box: lon1,lat1,lon2,lat2limitnumberneinMax. Ergebnisse (default: 1000, max: 5000)offsetnumberneinPagination-Offset (default: 0)GET /api/v1/events?from=2026-06-01&to=2026-06-30&city=Zürich&category=musik&weekday=4&limit=50
Authorization: Bearer cx_live_YOUR_KEY{
"meta": {
"version": "v1.1",
"total": 127,
"returned": 50,
"limit": 50,
"offset": 0,
"hasMore": true
},
"filters": { "from": "2026-06-01T00:00:00.000Z", ... },
"data": [
{
"id": "evt_abc123",
"title": "Zürich Jazz Night",
"category": "musik",
"startsAt": "2026-06-05T19:00:00.000Z",
"city": "Zürich",
"venueName": "Moods",
"isFree": false,
"priceMin": 25,
"ticketUrl": "https://...",
...
}
]
}GET /api/v1/stats
Aggregierte Statistiken: Verteilung nach Kategorie, Wochentag, Stadt und Quelle.
fromISO dateneinStart-Datum (default: Monatsanfang)toISO dateneinEnd-Datum (default: +90 Tage)citystringneinStadt(e) für EinschränkungGET /api/v1/stats?from=2026-06-01&to=2026-06-30
Authorization: Bearer cx_live_YOUR_KEY{
"meta": { "version": "v1.1", "from": "...", "to": "..." },
"data": {
"totalEvents": 1842,
"thursdayShare": 62.4,
"freeShare": 31.7,
"byCategory": { "musik": 412, "business": 287, ... },
"byWeekday": { "0": 43, "4": 1148, ... },
"byCity": [{ "city": "Zürich", "count": 891 }, ...],
"bySource": { "eventfrog": 643, ... }
}
}Fehlercodes
200OKErfolgreiche Anfrage400Bad RequestUngültige Parameter401UnauthorizedFehlender oder ungültiger API-Key403ForbiddenKey hat nicht die nötige Berechtigung (Organisation / Space erforderlich)429Too Many RequestsRate Limit überschritten. Warte kurz und versuche es erneut.500Internal Server ErrorServer-Fehler. Bitte über das Formular auf /kontakt melden.