Schnittstelle (API)

Die Termine und Vereine des Fasnettrackers zum Weiterverwenden — kostenlos, ohne Schlüssel und ohne Anmeldung.

Es gibt drei Wege, die Termine auf eine andere Seite zu bringen, nach Aufwand geordnet. Das Widget ist ein fertiges Fenster zum Einfügen per <iframe>. Der Kalender lässt sich in Google, Apple oder Outlook abonnieren. Und die Schnittstelle liefert die Daten als JSON, für alle, die sie im eigenen Design zeigen oder in ein anderes System übernehmen wollen. Den fertigen Code für die ersten beiden gibt es auf jeder Vereins- und Stadtseite unter „Einbinden“; diese Seite beschreibt den dritten.

Grundsätzliches

Alle Adressen beginnen mit https://www.fasnettracker.de/api/v1 und antworten auf GET mit JSON in UTF-8. Abrufen darf jede Seite, auch direkt aus dem Browser (Access-Control-Allow-Origin: *). Die Daten werden einmal täglich von den Seiten der Vereine gesammelt; die Antworten werden sechs Stunden zwischengespeichert. Öfter abzurufen bringt also nichts Neues — einmal je Seitenaufruf oder einmal in der Stunde auf eurem Server ist reichlich.

Jede Antwort trägt oben stand (wann die Daten zuletzt zusammengestellt wurden) und hinweis. Zeiten sind ISO-Zeitpunkte in UTC; für die Anzeige stehen daneben tag und uhrzeit schon in deutscher Zeit. Eine Abfrage mit Fehler antwortet mit 400 oder 404 und einem Feld fehler. Die Form ist unter v1 festgeschrieben: was sich daran ändern müsste, bekommt eine neue Version, und die alte bleibt stehen.

Die Endpunkte

Zum Aufklappen: Parameter, Beispiele, die Felder der Antwort — und unten in jedem Abschnitt eine Fläche zum Ausprobieren. Wer sich Termine in der Terminliste zusammenfiltert, findet dort unter „Als API“ dieselbe Fläche, schon mit seinen Filtern.

Alle Parameter sind optional und kombinierbar.

verein

Kennung eines Vereins, wie sie in der Adresse seiner Vereinsseite steht (/vereine/narrenzunft-elzach-elzach → narrenzunft-elzach-elzach).

stadt

Eine Gemeinde, wie auf der Stadtseite geschrieben. Andere Schreibweisen („elzach“) und Ortsteile führen auf die Gemeinde; welche gemeint war, steht in der Antwort unter filter.stadt.

typ

Eine Art, siehe die Liste unten.

von

Erster Tag, JJJJ-MM-TT. Ohne Angabe beginnt die Liste heute. Zurückblicken geht bis etwa vierhundert Tage.

bis

Letzter Tag, JJJJ-MM-TT. Für einen einzelnen Tag von und bis gleich setzen.

anzahl

Höchstens so viele Termine. Vorgabe 100, höchstens 1000. gesamt in der Antwort sagt, wie viele es insgesamt wären.

format

json (Vorgabe) oder ics — dann kommt ein Kalender zum Abonnieren (iCalendar) statt JSON, mit denselben Filtern.

Beispiele

https://www.fasnettracker.de/api/v1/termine?stadt=Elzach&anzahl=5
https://www.fasnettracker.de/api/v1/termine?verein=narrenzunft-elzach-elzach
https://www.fasnettracker.de/api/v1/termine?typ=umzug&von=2027-02-06&bis=2027-02-06
https://www.fasnettracker.de/api/v1/termine?stadt=Rottweil&format=ics

Antwort

{
  "version": 1,
  "stand": "2027-01-20T05:12:44.120Z",
  "quelle": "https://www.fasnettracker.de",
  "hinweis": "Angaben ohne Gewähr, …",
  "filter": { "verein": null, "stadt": "Elzach", "typ": null, "von": null, "bis": null },
  "gesamt": 14,
  "anzahl": 5,
  "termine": [
    {
      "id": "narrenzunft-elzach-2027-02-07-grosser-fasnetsumzug-3f9a",
      "titel": "Großer Fasnetsumzug",
      "typ": "umzug",
      "typName": "Umzug",
      "start": "2027-02-07T13:00:00.000Z",
      "tag": "2027-02-07",
      "uhrzeit": "14:00",
      "verein": { "id": "narrenzunft-elzach-elzach", "name": "Narrenzunft Elzach" },
      "ort": { "stadt": "Elzach", "plz": "79215", "lat": 48.17, "lng": 8.07 },
      "stichworte": ["umzug", "fasnetsumzug"],
      "url": "https://www.fasnettracker.de/v/narrenzunft-elzach-2027-02-07-grosser-fasnetsumzug-3f9a"
    }
  ]
}
id

Die Kennung des Termins. Sie bleibt gleich, solange Verein, Tag und Titel gleich bleiben — taugt also zum Abgleichen.

titel

Wie der Verein den Termin nennt.

typ, typName

Die Art, als Schlüssel und als Anzeigetext.

start

Beginn als ISO-Zeitpunkt in UTC.

tag

Der Tag in deutscher Zeit, JJJJ-MM-TT.

uhrzeit

Beginn in deutscher Zeit, HH:MM — oder null, wenn der Verein keine Uhrzeit nennt. Dann bitte nur den Tag zeigen und keine erfinden.

verein

Kennung und Name des ausrichtenden Vereins, oder null.

ort

Gemeinde, PLZ und Koordinaten (WGS 84). Die Koordinaten sind oft nur ortsgenau, nicht auf die Strasse.

stichworte

Suchwörter, die nicht im Titel stehen.

url

Die Terminseite beim Fasnettracker mit Ort, Quelle und allen Einzelheiten — dorthin bitte verlinken.

Arten (typ)

umzug

Umzug

zunftabend

Zunftabend

hemdglonker

Hemdglonker

narrenbaum

Narrenbaumstellen

ball

Ball und Party

brauchtumsabend

Brauchtumsabend

kinderfasnet

Kinderfasnet

verbrennung

Hexen- und Strohmannverbrennung

sonstiges

Sonstiges

Alle Vereine, alphabetisch; mit ?stadt= nur die einer Gemeinde, etwa /api/v1/vereine?stadt=Elzach. Je Verein: id, name, stadt, ortsteil, plz, lat/lng, gegruendet, art (nur wenn von Hand gepflegt), kommendeTermine, vomVereinGepflegt und url.

Ein einzelner Verein mit allem aus der Liste, dazu homepage, logo (die Adresse des Bildes), beschreibung und kanaele (Instagram, Facebook, YouTube, TikTok), auftritte (wo der Verein demnächst bei anderen zu Gast ist: start, titel, stadt, ort, ausrichter) und darunter seine kommenden Termine im selben Format wie oben. ?anzahl= begrenzt die Termine. Eine Mailadresse steht nicht darin — die gibt es nur auf der Vereinsseite.

Für alle, die eine Frage in Worten haben statt fertiger Filter, etwa ein Sprachmodell oder ein Chatbot. Die Anfrage geht in q und wird genauso verstanden wie im Suchfeld der Startseite: alle Wörter müssen passen, Tippfehler und fehlende Umlaute werden verziehen, und Zeitwörter wie heute, wochenende, samstag, februar 2027 oder 6.2.2027 werden zum Zeitraum. Ohne Zeitwort sucht sie ab jetzt.

q

Die Suchanfrage, höchstens 200 Zeichen. Pflicht.

anzahl

Höchstens so viele Termine, Vorgabe 25.

Beispiele

https://www.fasnettracker.de/api/v1/suche?q=umzug+elzach
https://www.fasnettracker.de/api/v1/suche?q=guggetreffen+februar
https://www.fasnettracker.de/api/v1/suche?q=ball+6.2.2027

Antwort

zeitraum

Was als Zeit erkannt wurde: von, bis (Tage in deutscher Zeit) und erkannt. Ohne Zeitwort null.

orte

Gemeinden, deren Name die Anfrage ist, mit url auf die Stadtseite und termineApi auf ihre Termine.

vereine

Passende Vereine, höchstens fünf, Felder wie bei /vereine.

gesamt, termine

Wie viele Termine passen und die besten davon, nach Güte sortiert, Felder wie bei /termine.

tipp

Nur wenn gar nichts gefunden wurde: was man stattdessen versuchen kann.

Weil heute nicht als Datum in der Adresse steht, wird die Antwort nur eine Stunde zwischengespeichert statt sechs.

Gedacht für den, der die Schnittstelle mit curl oder einem Skript erkundet: dieselben Angaben wie auf dieser Seite, nur kürzer, dazu je Endpunkt eine Beispieladresse, die gerade etwas liefert.

Ein Beispiel zum Einfügen

Das zeigt die nächsten zehn Termine in Elzach als Liste, in der Schrift und den Farben der Seite, in die es eingefügt wird. Die Titel stammen von fremden Seiten; darum textContent und nicht innerHTML.

<ul id="fasnet-termine"></ul>
<script>
  fetch("https://www.fasnettracker.de/api/v1/termine?stadt=Elzach&anzahl=10")
    .then((antwort) => antwort.json())
    .then(({ termine }) => {
      const liste = document.getElementById("fasnet-termine");
      for (const t of termine) {
        const zeile = document.createElement("li");
        const datum = t.tag.split("-").reverse().join(".");
        zeile.textContent = datum + (t.uhrzeit ? ", " + t.uhrzeit + " Uhr" : "") + ": ";
        const link = document.createElement("a");
        link.href = t.url;
        link.textContent = t.titel;   // textContent, nie innerHTML
        zeile.append(link);
        liste.append(zeile);
      }
    });
</script>

Bedingungen

Die Nutzung ist kostenlos. Zeigt bitte bei den Daten einen Link auf den Fasnettracker, am besten je Termin auf seine url — dort steht, woher die Angabe stammt und wie verlässlich sie ist. Alle Angaben ohne Gewähr; maßgeblich ist die Seite des Vereins. Ein Teil der Termine stammt aus dem Open Data Pool Baden-Württemberg und steht unter CC BY. Logos und Flyer gehören den Vereinen; wir geben nur die Adresse weiter, und wer sie zeigt, klärt die Rechte selbst.

Eine Maschinenübersicht gibt es unter /api/v1. Fragen, Wünsche oder ein Fehler in den Daten: über das Kontaktformular.