Freie Datenbank für Wahlumfragen, API mit JSON-Datei (Open Data, ODbL)

Wir stellen unsere Daten­bank mit Wahl­umfragen als API über eine JSON-Datei im Rahmen von Open Data unter der ODC Open Database License (ODC-ODbL) der All­gemeinheit zur Verfügung.

Inhalt der freien Datenbank

Diese JSON-Datei beinhaltet Informationen einer jeden Wahl­umfrage über:

  • Parlament, Institut und Auftraggeber
  • Umfrageergebnisse für die einzelnen Parteien
  • Tag der Veröffentlichung
  • Befragungszeitraum
  • Anzahl der Befragten
  • Befragungsmethode [Datenfeld am 23.11.2022 hinzugefügt mit Werten ab November 2018]

Unsere API wird bei Eintragung einer neuen Wahl­umfrage in unsere Daten­bank auto­matisch aktualisiert und ist so stets auf dem gleichen Stand wie unsere SQL-Daten­bank. Die API enthält Wahl­umfragen zu Bundes- und Landtags­wahlen ab 2017.

Aufbau der JSON-Datei

Die JSON-Datei setzt sich aus sechs Blöcken zusammen:

  • Database: Informationen über die Datenbank
    • License: lange (Name) und kurze (Shortcut) Bezeichnung der Lizenz mit Adresse der Website (Link)
    • Publisher: Domain unserer Seite
    • Author: Ersteller der Datenbank
    • Last_Update: letzte Aktualisierung der Datenbank (Format DateTime::W3C) / identisch mit dem Inhalt der last_update.txt
  • Parliaments: IDs und Bezeichnungen
    • Shortcut: Bundesland / Bundestag
    • Name: Bezeichnung des Parlaments
    • Election: Bezeichnung der Wahl
  • Institutes: IDs und Bezeichnung der Institute (Name)
  • Taskers: IDs und Bezeichnungen der Auftraggeber (Name)
  • Methods: IDs und Bezeichnungen der Befragungsmethoden (Name)
  • Parties: IDs und Bezeichnungen
    • Shortcut: Abkürzung der Partei
    • Name: vollständige Bezeichnung der Partei
  • Surveys: IDs und Details zu Wahlumfragen
    • Parliament_ID, Institute_ID, Tasker_ID, Method_ID
    • Results: Partei-ID mit Umfrageergebnis
    • Date: Veröffentlichungsdatum (in ISO 8601)
    • Survey_Period: Befragungszeitraum mit Date_Start und Date_End
    • Surveyed_Persons: Anzahl der Befragten

Nutzungsbedingungen (Lizenz und Haftung)

Unsere Daten­bank mit den einzelnen Wahl­umfragen, die über unsere API verfügbar ist, kann im Rahmen der Lizenz ODC-ODbL verwendet werden. Maß­geblich für die Nutzung ist der voll­ständige Lizenz­text. Zum besseren Ver­ständnis kann zudem die Zusammen­fassung und nach­folgende Er­läuterung zur Daten­bank- und Lizenz­benennung heran­gezogen werden.

Soweit unsere Daten­bank genutzt wird, um eigene Werke (wie Texte, Grafiken oder Videos) zu erstellen und zu veröffent­lichen, so setzt dies ins­besondere die Nennung und Ver­linkung unserer Seite sowie die Nennung und Ver­linkung der Lizenz ODC-ODbL voraus. Beispiels­weise könnte der Verweis auf eine solche Verwendung unserer Daten­bank dann lauten:

  • Wenn Verlinkungen möglich sind: „Daten von dawum.de (Open Database License (ODbL))“
  • Falls Verlinkungen nicht möglich sind: „Daten von dawum.de (Open Database License: odbl.dawum.de)“

Bei Rückfragen zur Daten­bank- und Lizenz­benennnung und zu möglichen alter­nativen Formulierungen im Falle Ihrer konkreten Nutzung melden Sie sich gerne bei uns.

Soweit unsere Daten­bank für abgeleitete Daten­banken oder Sammel­daten­banken genutzt wird und diese veröffent­licht werden, so unter­liegen diese Daten­banken eben­falls der Lizenz ODC-ODbL. Dann muss der Lizenz­text oder eine Ver­linkung zu diesem in der Daten­bank und deren Dokumentation enthalten sein. Darüber hinaus ist eine Nennung und Ver­linkung unserer Seite erforderlich. Im Übrigen verweisen wir auf die voll­ständigen Lizenz­bestimmungen.

Unsere Daten­bank wird mit größster Sorg­falt erstellt und gepflegt. Wir übernehmen jedoch keine Gewähr für die Verfüg­barkeit, Voll­ständig­keit, Richtig­keit und Aktualität der Inhalte der Daten­bank. Eine Haftung für jegliche Schäden, die aus der Nutzung der Daten­bank und ihrer Daten entstehen, wird mit Ausnahme des Vorsatzes (§ 276 Abs. 3 BGB), eines groben Verschuldens oder der Verletzung von Leben, Körper oder Gesund­heit (§ 309 Nr. 7 BGB) aus­geschlossen.

Kompakte Version der Datenbank

Wer nur die jeweils neuesten Wahl­umfragen jedes Instituts zu jedem Parlament benötigt, sollte besser die dafür angepasste JSON-Datei verwenden, die wesent­lich kleiner als die Datei mit allen Wahl­umfragen ist und damit auch schneller geladen werden kann.

Einbindung der Datenbank-API

Prüfung der Aktualität

Zur einfachen Über­prüfung der Aktualität der über­tragenen Daten­bank auf Ihrem Server mit der aktuellen Version bei DAWUM kann der Wert für Last_Update in Database bei Ihrer kopierten Daten­bank mit dem Inhalt der Text­datei last_update.txt abgeglichen werden.

Einbindung mit JavaScript und TypeScript

Für die Einbindung der Daten­bank für Wahl­umfragen hat der Github-Nutzer Clemens Rustemeier ein kosten­loses NPM Package für JavaScript und TypeScript mit dem Namen German Election Polls zur Verfügung gestellt. Mit diesem NPM Package kann unsere Daten­bank-API einfach in jedem JavaScript- oder TypeScript-Projekt verwendet werden. Dabei können mit einem einzigen Befehl die Daten aktualisiert und mit einem weiteren das Ergebnis gefiltert oder sortiert werden. Alles Weitere kann im Wiki nach­gelesen werden. Sollten Bugs oder ähnliches auftreten, empfiehlt der Autor, ein neues Issue zu eröffnen. Darüber hinaus bittet Clemens Rustemeier bei Fragen, Feedback, Ideen und der Mit­wirkung am NPM Package um eine Nach­richt an folgende E-Mail-Adresse:

moc.duolci@reiemetsursnemelc

Die Nutzung des NPM Package kann beispiels­weise wie folgt aussehen:

const query = polls.select([ Query.include([DataType.Surveys]), Query.Survey.Tasker.ID.isNot([4, 6]), Query.Survey.Release.isGreater(new Date('2021-11-21')), Query.Survey.Parliament.Shortcut.is(['Nordrhein-Westfalen (NRW)', 'Baden-Württemberg']), Query.Survey.Sort.byParticipants(Order.Asc), Query.Survey.Sort.allResults(Order.Desc), ]);

Das Beispiel gibt Folgendes aus: (1) Nur Wahl­umfragen, (2) deren Auftrag­geber die ID 4 oder 6 haben, (3) nach dem 21.11.2021 veröffentlicht wurden, (4) für die Land­tags­wahlen in Nordrhein-Westfalen oder Baden-Württemberg sind und hin­sicht­lich (5) der Wahl­umfragen in auf­steigender Reihen­folge und hin­sicht­lich (6) der Umfrage­werte in ab­steigender Reihen­folge sortiert werden.

Einbindung mit Python

Für die Einbindung der Daten­bank-API mit Python hat der Github-Nutzer Kevin Kennell ein Python-Skript entwickelt, mit deren Hilfe unsere JSON-Daten­bank in ein CSV-Format umge­wandelt werden kann.

Einbindung mit R

Für die Einbindung der Wahl­umfrage-Daten­bank mit der Programmier­sprache R hat der Github-Nutzer Ansgar Wolsing ein R Package ent­wickelt, mit dessen Hilfe unsere Umfrage­daten abgerufen und genutzt werden können.

Einbindung mit PHP

Um unsere Datenbank-API mit PHP einzubinden, kann beispiels­weise folgender Code verwendet werden. Mit diesem lässt sich eine Tabelle über Wahl­umfragen durch Erstellen und Aktualisieren einer eigenen JSON-Datei einfach realisieren:

// Auslesen und Aktualisierung der eigenen JSON-Datei $API_File_Last_Update = file_get_contents('https://api.dawum.de/last_update.txt'); $MyFile = 'myfile.json'; // Auslesen der eigenen JSON-Datei if (file_exists($MyFile)) { $MyFile_Content = file_get_contents($MyFile); $PHP_Array = json_decode($MyFile_Content, true); } // Aktualisieren / Neuschreiben sowie (Neu)Auslesen der eigenen JSON-Datei if (!file_exists($MyFile) OR ($PHP_Array['Database']['Last_Update'] != $API_File_Last_Update)) { $API_File_Content = file_get_contents('https://api.dawum.de/'); file_put_contents($MyFile, $API_File_Content); $MyFile_Content = file_get_contents($MyFile); $PHP_Array = json_decode($MyFile_Content, true); } // Sortierung der Parteien (ID) nach den Umfragewerten foreach ($PHP_Array['Surveys'] AS $Surveys) { foreach ($Surveys['Results'] AS $Party_ID => $Result) { $Parties_Sum[$Party_ID] += $Result; $Parties_Count[$Party_ID] += 1; } } // Bildung des Durchschnitts je Partei foreach ($Parties_Sum AS $Party_ID => $Party_Sum) { $Parties_Average[$Party_ID] = ($Party_Sum/$Parties_Count[$Party_ID]); } arsort($Parties_Average); // Ausgabe des Tabellenkopfes echo '<table><thead><td>Datum</td><td>Parlament</td><td>Institut</td><td>Auftraggeber</td>'; foreach ($Parties_Average AS $Party_ID => $Party_Average) { echo '<td title="'.$PHP_Array['Parties'][$Party_ID]['Name'].'">'.$PHP_Array['Parties'][$Party_ID]['Shortcut'].'</td>'; } echo '</thead>'; // Ausgabe des Tabellenkörpers foreach ($PHP_Array['Surveys'] AS $Content) { echo '<tr><td>'.$Content['Date'].'</td><td>'.$PHP_Array['Parliaments'][$Content['Parliament_ID']]['Name'].'</td><td>'.$PHP_Array['Institutes'][$Content['Institute_ID']]['Name'].'</td><td>'.$PHP_Array['Taskers'][$Content['Tasker_ID']]['Name'].'</td>'; // Ausgabe der Parteien/Umfragewerte in der Reihenfolge des Tabellenkopfes foreach ($Parties_Average AS $Party_ID => $Party_Average) { echo '<td>'.$Content['Results'][$Party_ID].'</td>'; } echo '</tr>'; } echo '</table>';

Die Ausgabe dieses Codes kann man sich hier anschauen.

Fragen zur Einbindung

Bei Fragen zur Einbindung unserer Datenbank-API zu Wahlumfragen können Sie sich gerne an uns wenden.

API-nutzende Projekte und Apps

Mithilfe unserer Daten­bank-API hat bisher insbesondere Manuel Gutsche mit PolitPro eine Website und Apps für Android und iOS realisiert, die aus den Daten von DAWUM täglich aktuelle Wahl­trends berechnet und visualisiert sowie Wahl­umfragen analysiert und bewertet.

Darüber hinaus erstellte Henning Tillmann mithilfe unserer Daten­bank 2018 einen iOS-Kurz­befehl, mit welchem man sich von Siri die aktuellen Umfrage­werte ausgeben lassen kann, sowie 2020 ein iOS-Widget, das auf dem Home­screen des iPhone oder iPad die aktuellen Wahl­umfragen und einen Durch­schnitt zur Bundestags­wahl anzeigen kann.

Ab Dezember 2024 verwendet Sebastian Mitte die API für ein in der Ent­wicklung befindliches Website-Projekt für Sonntags­fragen, bei dem auch die Mandate und möglichen Koalitionen aus­gerechnet und simuliert werden.

Seit November 2019 nutzt auch Polittalk, ein Discord-Server zum Diskutieren, Aus­tauschen und Debattieren über aktuelle Ereignisse mit Diskussions­räumen und einem News­feed, unsere API zum Abrufen und zur Ausgabe der jeweils neuesten Wahl­umfrage zur Bundestags­wahl, zu den Landtags­wahlen und zur Europa­wahl.