Speziell für Forschungsprojekte, Statistiker, Tageszeitungen, aber auch für privat Interessierte gibt es neben den aktuellen Spritpreisen auch die seit Juni 2014 archivierten Spritpreise als Datenbank-Dumps.
Die Daten werden täglich aktualisiert und werden als Datenbank-Dump bereitgestellt.
Diese Preisdaten können Grundlage für statistische Auswertungen sein. Regionale Unterschiede,
Unterschiede im Tages- und Wochenverlauf, Korrelationen mit dem Ölpreis und anderen
Faktoren, Gegenüberstellung von Marken und freien Tankstellen und so weiter.
Auch wenn größeres geplant ist, das mit der freien API nicht umgesetzt werden kann, ist Tankerkönig der Partner der Wahl. Wir finden eine individuelle Lösung, die die speziellen Anforderungen des Projektes abdeckt. Wenn beispielsweise
Bitte beachten Sie, dass Tankerkönig keine Lösungen zur Nutzung der MTS-K-Daten durch Mineralölunternehmen und Tankstellenbetreiber einschließlich verbundener Unternehmen und durch für die Minerlölbranche tätiger IT-Dienstleister zur Verfügung stellt.
Die Tankerkönig-API besteht aus drei HTTP-GET-Methoden, um Tankstellen-Informationen und Preise zu holen, sowie einer HTTP-POST-Methode, mit der fehlerhafte Daten an die MTS-K gemeldet werden können.
Die API kann von einem Server (z.B. über PHP), vom Browser (via JavaScript/AJAX) oder auch per Direktaufruf der URL (ideal zum Testen) abgefragt werden. Als Datenformat wird JSON zurückgeliefert.
Die Beispielaufrufe hier werden mit dem Demo-Key gemacht. Im Unterschied zu echten Keys werden keine echten Preise ausgeliefert. Außerdem sind die Daten zur besseren Lesbarkeit formatiert.
ok
flag, dessen Status abgefragt werden sollte. Im
Fehlerfall (ok == false) enthält die Antwort einen Text mit der Fehlerursache, bspw:
{ "ok":false, "message":"parameter error" }Es ist sinnvoll und dringend empfohlen, immer das ok-Flag abzufragen um zu testen, ob der Aufruf erfolgreich war.
Die Umkreissuche erfolgt über die API-Methode list.php
. Damit können um einen
gegebenen Standort die Tankstellen-Informationen und Preise der im angegebenen Radius
befindlichen Tankstellen abgerufen werden.
Die Parameter dieses Request sind:
Parameter | Bedeutung | Format |
---|---|---|
lat | geographische Breite des Standortes | Floatingpoint-Zahl |
lng | geographische Länge | Floatingpoint-Zahl |
rad | Suchradius in km | Floatingpoint-Zahl, max: 25 |
type | Spritsorte | 'e5', 'e10', 'diesel' oder 'all' |
sort | Sortierung | price, dist (1) |
apikey | Der persönliche API-Key | UUID |
(1) Bei type=all wird immer nach Entfernung sortiert - die Angabe der Sortierung ist dann optional
https://creativecommons.tankerkoenig.de/json/list.php?lat=52.521&lng=13.438&rad=1.5&sort=dist&type=all&apikey=00000000-0000-0000-0000-000000000002
{ "ok": true, "license": "CC BY 4.0 - https:\/\/creativecommons.tankerkoenig.de", "data": "MTS-K", "status": "ok", "stations": [ { Datentyp, Bedeutung "id": "474e5046-deaf-4f9b-9a32-9797b778f047", - UUID, eindeutige Tankstellen-ID "name": "TOTAL BERLIN", - String, Name "brand": "TOTAL", - String, Marke "street": "MARGARETE-SOMMER-STR.", - String, Straße "place": "BERLIN", - String, Ort "lat": 52.53083, - float, geographische Breite "lng": 13.440946, - float, geographische Länge "dist": 1.1, - float, Entfernung zum Suchstandort in km "diesel": 1.109, \ "e5": 1.339, - float, Spritpreise in Euro "e10": 1.319, / "isOpen": true, - boolean, true, wenn die Tanke zum Zeitpunkt der Abfrage offen hat, sonst false "houseNumber": "2", - String, Hausnummer "postCode": 10407 - integer, PLZ }, ... weitere Tankstellen ] }
Alle Tankstelleninformation wie vom Betreiber angegeben.
Wenn nur eine Spritsorte abgefragt wird ist im JSON statt Name der Sorte 'price' angegeben.
Die Preisabfrage erfolgt über die API-Methode prices.php
. Damit können die Preise
von bis zu 10 bekannten Tankstellen gleichzeitig abgefragt werden.
Die Parameter dieses Request sind die IDs der entsprechenden Tankstellen:
Parameter | Bedeutung | Format |
---|---|---|
ids | IDs der Tankstellen | UUIDs, durch Komma getrennt |
apikey | Der persönliche API-Key | UUID |
https://creativecommons.tankerkoenig.de/json/prices.php?ids=4429a7d9-fb2d-4c29-8cfe-2ca90323f9f8,446bdcf5-9f75-47fc-9cfa-2c3d6fda1c3b,60c0eefa-d2a8-4f5c-82cc-b5244ecae955,44444444-4444-4444-4444-444444444444&apikey=00000000-0000-0000-0000-000000000002
{ "ok": true, "license": "CC BY 4.0 - https:\/\/creativecommons.tankerkoenig.de", "data": "MTS-K", "prices": { "60c0eefa-d2a8-4f5c-82cc-b5244ecae955": { "status": "open", - Tankstelle ist offen "e5": false, - kein Super "e10": false, - kein E10 "diesel": 1.189 - Tankstelle führt nur Diesel }, "446bdcf5-9f75-47fc-9cfa-2c3d6fda1c3b": { "status": "closed" - Tankstelle ist zu }, "4429a7d9-fb2d-4c29-8cfe-2ca90323f9f8": { "status": "open", "e5": 1.409, "e10": 1.389, "diesel": 1.129 }, "44444444-4444-4444-4444-444444444444": { "status": "no prices" - keine Preise für Tankstelle verfügbar } } }
Mit der Detail-Abfrage werden einige wenige Informationen geliefert, die in der Antwort der
Umkreissuche nicht enthalten sind:
detail.php
.
Parameter-Name | Bedeutung | Werte |
---|---|---|
openingTimes | Öffnungszeiten | Array mit Objekten, in denen der Text und die Zeiten stehen |
overrides | erweiterte Öffnungszeiten | Änderungen der regulären ÖZ - bspw. eine temporäre Schliessung |
wholeDay | ganztägig geöffnet | true, false |
state | Bundesland | Ein Kürzel für das Bundesland - ist meist nicht angegeben |
Ein Aufruf dieser Funktion ist für Apps sinnvoll, wenn dem User Details einer ausgewählten
Tankstelle angezeigt werden sollen.
Zur regelmäßigen Preisabfragen ist diese Methode nicht gedacht. Statt dessen sollte hier die
Umkreissuche, oder die Preisabfrage verwendet werden.
Die Parameter dieses Request sind neben dem API-Key die ID der Tankstelle:
Parameter | Bedeutung | Format |
---|---|---|
id | ID der Tankstelle | UUID |
apikey | Der persönliche API-Key | UUID |
https://creativecommons.tankerkoenig.de/json/detail.php?id=24a381e3-0d72-416d-bfd8-b2f65f6e5802&apikey=00000000-0000-0000-0000-000000000002
{ "ok": true, "license": "CC BY 4.0 - https:\/\/creativecommons.tankerkoenig.de", "data": "MTS-K", "status": "ok", "station": { "id": "24a381e3-0d72-416d-bfd8-b2f65f6e5802", "name": "Esso Tankstelle", "brand": "ESSO", "street": "HAUPTSTR. 7", "houseNumber": " ", "postCode": 84152, "place": "MENGKOFEN", "openingTimes": [ - Array mit regulären Öffnungszeiten { "text": "Mo-Fr", "start": "06:00:00", "end": "22:30:00" }, { "text": "Samstag", "start": "07:00:00", "end": "22:00:00" }, { "text": "Sonntag", "start": "08:00:00", "end": "22:00:00" } ], "overrides": [ - Array mit geänderten Öffnungszeiten "13.04.2017, 15:00:00 - 13.11.2017, 15:00:00: geschlossen" - im angegebenen Zeitraum geschlossen ], "wholeDay": false, - nicht ganztägig geöffnet "isOpen": false, "e5": 1.379, "e10": 1.359, "diesel": 1.169, "lat": 48.72210601, "lng": 12.44438439, "state": null - Bundesland nicht angegeben } }
Über die API können mit complaint.php
auch fehlerhafte Daten über uns an die MTS-K weitergeleitet werden.
Die Parameter dieses Request sind wie folgt:
Parameter | Bedeutung | Format |
---|---|---|
id | ID der Tankstelle | UUID |
apikey | Der persönliche API-Key | UUID |
type | Fehlertyp | (2) |
correction | korrigierter Wert | |
ts | Timestamp |
Unix-Sekunden Optionale Angabe, wird die Timestamp nicht gesetzt wird die aktuelle Zeit genommen |
(2) Liste der Fehlertypen
Fehlertyp | Bedeutung |
---|---|
wrongPetrolStationName | Der Name entspricht nicht der Angabe. Korrektur: richtiger Name. |
wrongStatusOpen |
Die Tankstelle ist offen, obwohl sie laut Öffnungszeitenangabe zu sein sollte. correction wird nicht angegeben. |
wrongStatusClosed |
Die Tankstelle ist zu, obwohl sie laut Öffnungszeitenangabe offen sein sollte. correction wird nicht angegeben. |
wrongPriceE5 | Falscher Super-Preis. Korrektur: Gleitpunktzahl mit korrektem Wert. |
wrongPriceE10 | Falscher E10-Preis. Korrektur: Gleitpunktzahl mit korrektem Wert. |
wrongPriceDiesel | Falscher Diesel-Preis. Korrektur: Gleitpunktzahl mit korrektem Wert. |
wrongPetrolStationBrand | Marke stimmt nicht. Korrektur: Angabe des richtigen Namens. |
wrongPetrolStationStreet | Straßenname stimmt nicht. Korrektur: Angabe des richtigen Namens. |
wrongPetrolStationHouseNumber | Hausnummer stimmt nicht. Korrektur: Angabe der richtigen Hausnummer. |
wrongPetrolStationPostcode | PLZ stimmt nicht. Korrektur: Angabe der richtigen PLZ. |
wrongPetrolStationPlace | Ortsname stimmt nicht. Korrektur: Angabe der richtiger Ortsname. |
wrongPetrolStationLocation | Geokoordinaten stimmen nicht. Korrektur: Angabe der richtigen Koordinaten. Format: 2 mit Komma getrennte Gleitpunktzahlen für geographische Breite und Länge. |
function sendComplaint(stationId, complaintType, correction){ var apikey = '00000000-0000-0000-0000-000000000002'; // Demo-Key nur zum Testen, diese Requests werden nicht weitergegeben var data = { apikey: apikey, id: stationId, type: complaintType }; if (correction) { data.correction = correction; } $.ajax({ url: "https://creativecommons.tankerkoenig.de/json/complaint.php", method: 'POST', data: data, success: function( response ) { if (!response.ok) { alert(response.message); } else { alert('Meldung erfolgreich übertragen'); } } }); } var stationId = 'd3f68a43-e249-4a1f-bd34-0023677cdcc9'; // Test 1 sendComplaint(stationId, 'wrongStatusClosed', null); // keine Korrekturangabe erlaubt // Test 2 sendComplaint(stationId, 'wrongPriceDiesel', 1.234); // Test 3 sendComplaint(stationId, 'wrongPetrolStationLocation', '52.29162,10.06117'); // Test 4 sendComplaint(stationId, 'illegal token', '52.29162,10.06117');
Die ersten 3 Aufrufe sind korrekt, die Antwort ist:
{ "ok": true }
Der letzte Aufruf ist fehlerhaft, die Antwort ist:
{ "ok": false, "message": "Meldungstyp 'illegal token' nicht erlaubt" }
Das API darf von Mineralölunternehmen, Tankstellen und damit verbundenen Unternehmen nicht genutzt werden. Wir sperren API-Keys, welche solchen Firmen zugeordnet sind.
Die Erfahrung zeigt, dass bei der Verwendung der API Probleme auftreten können. Um solche Probleme zu klären, aber auch um etwaige Änderungen, oder Erweiterungen der API zu kommunizieren ist es nötig, dass wir auf einer Anmeldung mit funktionierender E-Mail-Adresse bestehen.
Diese Daten werden - genauso wie sonstige persönliche Nutzungsdaten - niemals an Dritte weitergegeben.
Grundsätzlich gilt: Unnötige Belastungen des Tankerkönig-Servers sind zu vermeiden.
Home-Automation-, Smart-Mirror- und ähnliche Systeme sollten Abfragen nicht öfter als einmal
in 5 Minuten durchführen.
Abfragezeiten sollten, um Lastspitzen zu vermeiden, nicht an runden Zeiten stattfinden - besser ist es,
eine zufällige Anzahl Sekunden Verzögerung einzubauen.
Wenn regelmäßig Preise geholt werden sollen, die prices.php
, oder die list.php
Methoden verwenden, um den Update aller Spritpreise mit nur einem Aufruf duchzuführen.
Apps, Websites und andere Systeme: Requests on Demand - auf Useraktion - durchführen. Regelmäßige, nicht explizit vom User initiierte Requests sind zu vermeiden
Für bestimmte Anwendungen ist es sinnvoll Spritpreise vieler Tankstellen aktuell zur Verfügung
zu haben.
Die API ist dazu allerdings nicht geeignet und Versuche, das durchzuführen werden geblockt (und API-Keys deaktiviert).
Falls Bedarf besteht, die kompletten Tankstellendaten auf eigenen Servern zur Verbraucherinformation oder Forschungszwecken zu
spiegeln, oder regelmäßig für viele Tankstellen Informationen zu holen: bitte mit uns in Kontakt treten, wir werden zusammen eine Lösung finden.
Bei Problemen mit dem Key, insbesondere wenn der Key gesperrt wurde: bitte mit uns in Kontakt treten. Niemals einen weiteren Key beantragen, ohne uns vorher zu kontaktieren.
Die Daten stehen unter der Creative-Commons-Lizenz “CC BY 4.0”, siehe https://creativecommons.org/licenses/by/4.0/deed.de, insbesondere ist eine Namensnennung nötig (z.B. ein Link auf www.tankerkoenig.de) Für Apps ist diese Namensnennung auch im Info-Text im Store zu erfolgen.
Die Bedingungen der MTS-K müssen eingehalten werden. Insbesondere darf eine App, Website, oder sonstiger öffentlich verfügbarer Dienst keine Filterung der Ergebnisse vornehmen, die nicht vom User explizit so gewünscht wird.
API-Keys - auch der Demo-Key - dürfen nicht in Foren, auf GitHub oder auf ähnlichen Platformen
veröffentlicht werden.
Code oder Code-Snippets in Veröffentlichungen bitte immer kommentieren, so dass klar ist, dass
ein persönlicher API-Key verwendet werden muss.
Ein Hinweis kann so aussehen:
// Key für den Zugriff auf die freie Tankerkönig-Spritpreis-API // Für eigenen Key bitte hier https://creativecommons.tankerkoenig.de // registrieren. var tankerkoenig_api_key = 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'; // TODO: Key ersetzen
Hier neu zuschicken lassen
Wegen Wartungsarbeiten sind momentan keine Registrierungen möglich.
Bitte später nochmals versuchen.
Um den Umgang mit den Daten zu erleichtern, stellen wir nun die historischen Daten als CSV-Dateien zur Verfügung. Die Daten werden in einem git-Repository abgelegt, das bei Microsoft Azure gehostet wird. Die URL ist
Für jeden Tag wird eine neue Datei angelegt, einzelne Dateien können über die Oberfläche als .zip heruntergelden werden. Man kann sich auch das gesamte Repository clonen und jeden Tag per git clone update, weiteres im README dort. Diese Datensammlung steht unter BY-NC-SA-4.0-Lizenz, d.h. nichtkommerzielle Nutzung ist frei.Neben dem Download als CSV-Dateien gibt es auch die Möglichkeit historische Daten in Form eines Postgres-Datenbank-Dumps von zu beziehen. Falls möglich, nutzen Sie den Download von unserem git-Repository, das ist einfacher zu handhaben.
Vom Server werden alle vier Minuten sämtliche Preise der Tankstellen (knapp 15000) von der Markttransparenzstelle für Kraftstoffe (MTS-K) importiert. Wir erfassen dabei die Preisänderungen und speichern sie.
Neben diesen Preisänderungsdaten enthält der Dump auch noch den aktuellen Stand der Tankstellen-Infos. (Name, Marke, Geoposition, etc).
Interessant ist es natürlich, auszuwerten, was mit den Spritpreisen im Laufe des Tages/der Woche oder in den Ferien so passiert. Wo ist Sprit besonders teuer oder billig? Gilt das für Super und Diesel oder nicht? Oder gibt es vielleicht neue Erkenntnisse, die noch verborgen sind? Neue Ideen, auf die noch keiner gekommen ist? Lassen wir uns überraschen!
Drei PostgreSQL-Dump-Files sind verfügbar:
Wir sind bemüht die Preis- und Grunddaten lückenlos zu archivieren, können aber keine Garantien über die Vollständigkeit und Korrektheit der Daten abgeben.
Infos zum Format hier.
Der aktuelle Dump wird einmal täglich erzeugt.
Diesen Datenbankdump stellt Tankerkönig allen Interessenten unter einer Creative-Commons-Lizenz (CC BY 4.0) zur Verfügung, d.h. er kann auch für kommerzielle Zwecke (mit Namensnennung) genutzt werden.
Bei Nutzung der historischen Preisdaten, würden wir uns über eine kurze Info zur geplanten Verwendung freuen.
Unser CC-Server kann täglich viele hunderttausend Abfragen beantworten. Damit alle User und deren Klienten (App-, Websites-User) möglichst ohne Verzögerung und Serverausfälle an aktuelle Daten kommen, sind auf der Seite unseres Servers einige Maßnahmen umgesetzt, die sicherstellen, dass einzelne Datennehmer andere nicht beeinträchtigen. Das heißt, dass ein User, der eine zu hohe Last erzeugt, temporär oder dauerhaft vom Service ausgeschlossen werden kann.
Wenn klar ist, das der geplante Service nicht mit dieser Einschränkung umgesetzt werden kann, können wir gegen eine monatliche Gebühr einen dedizierten Server aufsetzen, auf dem diese Limitierungen nicht existieren.
Auch Einschränkungen beim Radius der Umkreissuche und Begrenzung bei der Anzahl abgefragter Tankstellen beim Preisabruf, die ebenfalls der Lastbegrenzung des CC-Server dienen, können bei einem dedizierten Server entfernt werden.
Weitere API-Methoden können freigeschaltet werden, z.B.:
Falls die verfügbaren Daten auf eigenen Servern gehostet werden sollen, stehen diese Alternativen zur Verfügung:
Die frei verfügbaren historischen Preisdaten liegen in Form von PostgreSQL Datenbank-Dumps vor.
Andere Formate wie JSON, MySQL, XML und CSV können gegen Gebühr erstellt werden.
Eigene Queries der historischen Preisdaten stehen demnächst interessierten Usern per Web-Interface zur Verfügung.
Wir übernehmen auch gerne individuelle Aufbereitungen der Daten.
Hier einige existierende Apps, Websites, Home-Automation-Systeme und sonstige Clients, die die Tankerkönig-Spritpreis-API verwenden.
Bitte informiert uns, wenn euer Projekt hier gelistet werden soll.
Kein Problem. Einfach E-Mail-Adresse eingeben und Button drücken.
Hier könnt Ihr die Logeinträge des aktuellen Logs einsehen - gefiltert mit eurem API-Key.
Das ist dazu gedacht, dass Ihr auf unserem Server nachsehen könnt welche Requests tatsächlich für euren Key ankommen. Bei einigen Home-Automation-Systemen ist das offenbar nicht anders zu überprüfen, da man im System an diese Information nicht, oder nur schwer rankommt.
Auch Entwickler anderer System profitieren davon: wenn die Requests nicht über einen eigenen Server laufen, sondern von den Installationen direkt an unseren Server geschickt werden, ist das eine einfache Möglichkeit die tatsächlich anfallenden Requests zu sehen.
Die Liste wird an die E-Mail-Adresse die bei der Anmeldung angegeben wurde verschickt.
Diese Funktionalität ist ausschliesslich dazu gedacht, Probleme möglichst frühzeitig
aufzuspüren.
Am besten, immer vor dem Launch und bei Änderungen der App/Website/sonstigen System einsetzen.
Also nicht dauerhaft und regelmäßig solche Daten abholen.
Hier findet sich ein Tankstellenfinder, mit dem man sehr einfach in einer Karte seine Lieblingstanken finden kann.
Diese Tankstellen-Informationen sind im JSON-Format und können als Grundlage für Home-Automation-, Magic Mirror-Systeme und andere Clients dienen.
Formatspezifikation einer solchen JSON-Datei hier.
list.php
$lat = $_GET["lat"]; $lng = $_GET["lng"]; $radius = $_GET["radius"]; $sort = $_GET["sort"]; $type = $_GET["type"]; $json = file_get_contents('https://creativecommons.tankerkoenig.de/json/list.php' ."?lat=$lat" // geographische Breite ."&lng=$lng" // Länge ."&rad=$radius" // Suchradius in km ."&sort=$sort" // Sortierung: 'price' oder 'dist' - bei type=all diesen Parameter weglassen ."&type=$type" // Spritsorte: 'e5', 'e10', 'diesel' oder 'all' ."&apikey=00000000-0000-0000-0000-000000000002"); // Demo-Key ersetzen! $data = json_decode($json); display($data);
list.php
$.ajax({ url: "https://creativecommons.tankerkoenig.de/json/list.php", data: { lat: position.coords.latitude, lng: position.coords.longitude, rad: 2, sort: "price", type: "diesel", apikey: "00000000-0000-0000-0000-000000000002" }, success: function(response) { if (!response.ok) { // TODO: Fehlerbehandlung console.error(response.message); } else { // TODO: Anzeige der Informationen console.log(response); } }, error: function(p){ that.showError('AJAX-Problem', 'status: ' + p.status + ' statusText: ' + p.statusText); } });
$.ajax({ url: "https://creativecommons.tankerkoenig.de/json/list.php", data: { lat: position.coords.latitude, lng: position.coords.longitude, rad: 2, type: "all", apikey: "00000000-0000-0000-0000-000000000002" }, success: function(response) { if (!response.ok) { // TODO: Fehlerbehandlung console.error(response.message); } else { // TODO: Anzeige der Informationen console.log(response); } }, error: function(p){ that.showError('AJAX-Problem', 'status: ' + p.status + ' statusText: ' + p.statusText); } });
prices.php
prices.php
var station_ids = []; // Liste $.each(stations, function(){ station_ids.push(this.id); // nur die IDs // Füllen der Liste mit IDs der Tankstellen aus list.php Aufruf }); station_ids_string = station_ids.join(','); // IDs ohne Hochkommas mit Kommas getrennt verbunden $.ajax({ // jQuery für Server-Request - kann natürlich auch mit eigenem Code, // oder anderen Libs gemacht werden. url: "https://creativecommons.tankerkoenig.de/json/prices.php", data: { ids: station_ids_string, // stringifiziertes Array mit Tankstellen-Ids apikey: '00000000-0000-0000-0000-000000000002' }, success: function( response ) { // Antwort vom Server wird hier verarbeitet if (response.ok) { // Daten in Ordnung? successHandler(response.prices); // TODO: eigene Funktion um Preise anzuzeigen und/oder zu speichern } else { errorHandler(response.message); // TODO: Fehlermeldung anzeigen } }, error: function(p){ // Behandlung technischer Probleme errorHandler('AJAX-Problem, status: ' + p.status + ' statusText: ' + p.statusText); } });
detail.php
detail.php
id = stationList[0].id; $.ajax({ url: "https://creativecommons.tankerkoenig.de/json/detail.php", data: { id: id, // Tankstellen-Id apikey: '00000000-0000-0000-0000-000000000002' }, success: function( response ) { if (!response.ok) { // TODO: Fehlerbehandlung console.error(response.message); } else { // TODO: Anzeige der Informationen console.log(response); } } });
complaint.php
function sendComplaint(stationId, complaintType, correction){ var apikey = '00000000-0000-0000-0000-000000000002'; // Demo-Key nur zum Testen, diese Requests werden nicht weitergegeben var data = { apikey: apikey, id: stationId, type: complaintType }; if (correction) { data.correction = correction; } $.ajax({ url: "https://creativecommons.tankerkoenig.de/json/complaint.php", method: 'POST', data: data, success: function( response ) { if (!response.ok) { alert(response.message); } else { alert('Meldung erfolgreich übertragen'); } } }); } var stationId = 'd3f68a43-e249-4a1f-bd34-0023677cdcc9'; // Test 1 sendComplaint(stationId, 'wrongStatusClosed', null); // keine Korrekturangabe erlaubt // Test 2 sendComplaint(stationId, 'wrongPriceDiesel', 1.234); // Test 3 sendComplaint(stationId, 'wrongPetrolStationLocation', '52.29162,10.06117'); // Test 4 sendComplaint(stationId, 'illegal token', '52.29162,10.06117');
{ "005056ba-7cb6-1ed2-bceb-8a39e78c8d33": { ID der ersten Tankstelle "label": "STAR | star Tankstelle", generierte Bezeichnung "coords": { Geo-Koordinaten "lat": 53.10815, "lng": 8.77395 }, "address": [ Adresszeilen "Waller Heerstraße 294", "28219 Bremen" ], "openingTimes": { Öffnungszeiten "Mo, Di, Mi, Do": [ erste Öffnungszeit "06:00 - 23:00" ], "Fr, Sa": [ zweite Öffnungszeit "06:00 - 00:00" ], "So": [ dritte Öffnungszeit "07:00 - 23:00" ] }, "overrides": [ geänderte Öffnungszeiten { "startp": "2016-10-17 06:00", von "endp": "2016-10-17 10:00", bis "is_close": false hat - anders als in den normalen ÖZ angegeben - zu }, ... weitere Overrides ] }, "e854dc9b-18b1-4f48-cb94-c3125f9ca47d": { ID der zweiten Tankstelle "label": "Bremer Mineralölhandel GmbH | BMÖ Tankstelle Hötzer", "address": [ "Plantage 17", ... } }, ... weitere Tankstellen-Infos }label, coords und address sind immer angegeben, openingTimes und overrides nur dann wenn diese Zeiten auch vorhanden sind (openingTimes: fast immer, overrides: selten).
Mit den Informationen aus der erzeugten Datei ('stations.json') kann je nach eingesetzter Technik per PHP, Javascript oder anderen Sprachen ein Layout erzeugt werden, in das nur noch die aktuellen Preise eingefügt werden müssen, die mit prices.php von Tankerkönig bezogen werden.
Unser CC-Server kann täglich viele hunderttausend Abfragen beantworten. Damit alle User und deren Klienten (App-, Websites-User) möglichst ohne Verzögerung und Serverausfälle an aktuelle Daten kommen, sind auf der Seite unseres Servers einige Maßnahmen umgesetzt, die sicherstellen, dass einzelne Datennehmer andere nicht beeinträchtigen. Das heißt, dass ein User, der eine zu hohe Last erzeugt, temporär oder dauerhaft vom Service ausgeschlossen werden kann.
Wenn klar ist, das der geplante Service nicht mit dieser Einschränkung umgesetzt werden kann, können wir gegen eine monatliche Gebühr einen dedizierten Server aufsetzen, auf dem diese Limitierungen nicht existieren.
Auch Einschränkungen beim Radius der Umkreissuche und Begrenzung bei der Anzahl abgefragter Tankstellen beim Preisabruf, die ebenfalls der Lastbegrenzung des CC-Server dienen, können bei einem dedizierten Server entfernt werden.
Weitere API-Methoden können freigeschaltet werden, z.B.:
Falls die verfügbaren Daten auf eigenen Servern gehostet werden sollen, stehen mehrere Alternativen zur Verfügung:
Die frei verfügbaren historischen Preisdaten liegen in Form von PostgreSQL Datenbank-Dumps vor.
Andere Formate wie JSON, MySQL, XML und CSV können gegen Gebühr erstellt werden.
Eigene Queries der historischen Preisdaten stehen demnächst interessierten Usern per Web-Interface zur Verfügung.
Wir übernehmen auch gerne individuelle Aufbereitungen der Daten.
Angaben gemäß § 5 TMG:
Martin Kurz
Mimosenweg 66
70374 Stuttgart
Kontakt:
Telefon:
0711 51882513
E-Mail:
martinkurz@tankerkoenig.de
Quelle: https://www.e-recht24.de
Datenschutz
Die Betreiber dieser Seiten nehmen den Schutz Ihrer persönlichen Daten sehr ernst. Wir behandeln Ihre personenbezogenen Daten vertraulich und entsprechend der gesetzlichen Datenschutzvorschriften sowie dieser Datenschutzerklärung.
Die Nutzung unserer Webseite ist in der Regel ohne Angabe personenbezogener Daten möglich. Soweit auf unseren Seiten personenbezogene Daten (beispielsweise Name, Anschrift oder E-Mail-Adressen) erhoben werden, erfolgt dies, soweit möglich, stets auf freiwilliger Basis. Diese Daten werden ohne Ihre ausdrückliche Zustimmung nicht an Dritte weitergegeben.
Wir weisen darauf hin, dass die Datenübertragung im Internet (z.B. bei der Kommunikation per E-Mail) Sicherheitslücken aufweisen kann. Ein lückenloser Schutz der Daten vor dem Zugriff durch Dritte ist nicht möglich.
Cookies
Die Internetseiten verwenden teilweise so genannte Cookies. Cookies richten auf Ihrem Rechner keinen Schaden an und enthalten keine Viren. Cookies dienen dazu, unser Angebot nutzerfreundlicher, effektiver und sicherer zu machen. Cookies sind kleine Textdateien, die auf Ihrem Rechner abgelegt werden und die Ihr Browser speichert.
Die meisten der von uns verwendeten Cookies sind so genannte „Session-Cookies“. Sie werden nach Ende Ihres Besuchs automatisch gelöscht. Andere Cookies bleiben auf Ihrem Endgerät gespeichert, bis Sie diese löschen. Diese Cookies ermöglichen es uns, Ihren Browser beim nächsten Besuch wiederzuerkennen.
Sie können Ihren Browser so einstellen, dass Sie über das Setzen von Cookies informiert werden und Cookies nur im Einzelfall erlauben, die Annahme von Cookies für bestimmte Fälle oder generell ausschließen sowie das automatische Löschen der Cookies beim Schließen des Browser aktivieren. Bei der Deaktivierung von Cookies kann die Funktionalität dieser Website eingeschränkt sein.
Server-Log-Files
Der Provider der Seiten erhebt und speichert automatisch Informationen in so genannten Server-Log Files, die Ihr Browser automatisch an uns übermittelt. Dies sind:
Diese Daten sind nicht bestimmten Personen zuordenbar. Eine Zusammenführung dieser Daten mit anderen Datenquellen wird nicht vorgenommen. Wir behalten uns vor, diese Daten nachträglich zu prüfen, wenn uns konkrete Anhaltspunkte für eine rechtswidrige Nutzung bekannt werden.
Kontaktformular
Wenn Sie uns per Kontaktformular Anfragen zukommen lassen, werden Ihre Angaben aus dem Anfrageformular inklusive der von Ihnen dort angegebenen Kontaktdaten zwecks Bearbeitung der Anfrage und für den Fall von Anschlussfragen bei uns gespeichert. Diese Daten geben wir nicht ohne Ihre Einwilligung weiter.
Auskunft, Löschung, Sperrung
Sie haben jederzeit das Recht auf unentgeltliche Auskunft über Ihre gespeicherten personenbezogenen Daten, deren Herkunft und Empfänger und den Zweck der Datenverarbeitung sowie ein Recht auf Berichtigung, Sperrung oder Löschung dieser Daten. Hierzu sowie zu weiteren Fragen zum Thema personenbezogene Daten können Sie sich jederzeit unter der im Impressum angegebenen Adresse an uns wenden.
Widerspruch Werbe-Mails
Der Nutzung von im Rahmen der Impressumspflicht veröffentlichten Kontaktdaten zur übersendung von nicht ausdrücklich angeforderter Werbung und Informationsmaterialien wird hiermit widersprochen. Die Betreiber der Seiten behalten sich ausdrücklich rechtliche Schritte im Falle der unverlangten Zusendung von Werbeinformationen, etwa durch Spam-E-Mails, vor.
Quelle: https://www.e-recht24.de
Einbindung von Diensten und Inhalten Dritter
Es kann vorkommen, dass innerhalb dieses Onlineangebotes Inhalte Dritter, wie zum Beispiel Videos von YouTube, Kartenmaterial von Google-Maps, RSS-Feeds oder Grafiken von anderen Webseiten eingebunden werden. Dies setzt immer voraus, dass die Anbieter dieser Inhalte (nachfolgend bezeichnet als "Dritt-Anbieter") die IP-Adresse der Nutzer wahr nehmen. Denn ohne die IP-Adresse, könnten sie die Inhalte nicht an den Browser des jeweiligen Nutzers senden. Die IP-Adresse ist damit für die Darstellung dieser Inhalte erforderlich. Wir bemühen uns nur solche Inhalte zu verwenden, deren jeweilige Anbieter die IP-Adresse lediglich zur Auslieferung der Inhalte verwenden. Jedoch haben wir keinen Einfluss darauf, falls die Dritt-Anbieter die IP-Adresse z.B. für statistische Zwecke speichern. Soweit dies uns bekannt ist, klären wir die Nutzer darüber auf.
Quelle: Datenschutz-Muster von Rechtsanwalt Thomas Schwenke - I LAW it
Column | Type | Modifiers ---------------------------+-----------------------------+----------- id | uuid | not null version | character varying(10) | not null version_time | timestamp without time zone | not null name | text | not null brand | text | street | text | house_number | text | post_code | text | place | text | public_holiday_identifier | text | lat | double precision | not null lng | double precision | not null ot_json | text | not null
Das sind im wesentlichen die Daten, die die MTS-K liefert.
Column | Bedeutung | Bemerkungen |
---|---|---|
id | eindeutige, unveränderliche ID der Tankstelle | |
version | Versions-Nummer, vom Betreiber vergeben | Ist wenig aussagekräftig, Format und Verwendung ist dem Betreiber überlassen |
version_time | Angabe zur letzten Änderung der Versions-Nummer, vom Betreiber vergeben. | |
name | Name der Tankstelle | Kann leer sein, es gibt keine klaren Vorgaben was hier zu stehen hat |
brand | Marke | |
street | Straße | Name der Straße, oft wird hier die Hausnummer mit angegeben |
house_number | Hausnummer | Kann auch leer sein |
post_code | PLZ | Ist verlässlich |
place | Ortsangabe | Name der Ortschaft, gelegentlich mit Ortsteil |
public_holiday_identifier | Kürzel für Bundesland | Ist meist nicht angegeben |
lat | geographische Breite des Standortes | |
lng | geographische Länge des Standortes | |
ot_json | JSON-String mit den Öffnungszeiten | siehe unten |
Eine Tankstelle kann beliebig viele einzelne Öffnungszeiten haben. Ist keine angegeben ist die Tankstelle immer geöffnet. In diesem Fall steht in dem Feld '{}' - ein leeres Objekt.
{ "openingTimes": [ { "applicable_days": 31, "periods": [ { "startp": "05:00", "endp": "22:00" } ] }, { "applicable_days": 96, "periods": [ { "startp": "07:00", "endp": "22:00" } ] } ] }
Diese Tanke hat 2 einzelne Öffnungszeiten. Gültig jeweils an den in applicable_days
angegebenen Tagen.
Die Angabe in diesem Feld ist ein Bitfeld, einzelne Bits stehen für einzelne Tage:
Bit | Zahlenwert | Bedeutung |
---|---|---|
0 | 1 | Montag |
1 | 2 | Dienstag |
2 | 4 | Mittwoch |
3 | 8 | Donnerstag |
4 | 16 | Freitag |
5 | 32 | Samstag |
6 | 64 | Sonntag |
7 | 128 | Feiertag |
Im Beispiel ist die erste Öffnungszeit also Montag bis Freitag gültig. (1+2+4+8+16 = 31)
Die zweite Öffnungszeit gilt Samstag und Sonntag (32+64 = 96).
Da für die Tankstelle keine spezielle Feiertagsregelung angegeben ist, gilt dort ebenfalls die
Öffnungszeit des Sonntags. Falls eine Öffnungszeit für Feiertag angegeben ist, ist auschließlich
diese an Feiertagen gültig.
Neben den 'openingTimes' können auch 'overrides' gesetzt sein - Angaben zu geänderten Öffnungszeiten.
"overrides": [ { "startp": "2017-06-05 05:00", "endp": "2017-06-05 23:00", "is_close": false }, { "startp": "2017-08-01 00:00", "endp": "2017-09-01 00:00", "is_close": true } ]
Hier: am 5. Juni 2017 hat diese Tanke entgegen den Angaben in den regulären ÖZ zwischen 05:00 und 23:00 geöffnet. Im August hat die Tankstelle geschlossen. Angaben der regulären ÖZ werden innerhalb der Zeiträume der overrides ignoriert.
Öffnungszeiten können sich ändern. Im Moment ist eine History der Öffnungszeiten allerding im Rahmen der CC-Daten nicht verfügbar.
Column | Type | Modifiers ---------+-----------------------------+----------- id | integer | not null stid | uuid | not null e5 | smallint | e10 | smallint | diesel | smallint | date | timestamp(0) with time zone | not null changed | smallint |
Column | Bedeutung | Bemerkungen |
---|---|---|
id | Interne Id | Kann sich ändern - besser nicht verwenden |
stid | Referenz zur Tankstelle-ID | |
e5 | Preis für einen Liter Super E5 | Angabe in Zehntel-Cent |
e10 | Preis für einen Liter Super E10 | Angabe in Zehntel-Cent |
diesel | Preis für einen Liter Diesel | Angabe in Zehntel-Cent |
date | Zeitpunkt dieser Änderung | siehe unten |
changed | Bitmaske für die Änderung | siehe unten |
Bitmaske für die Änderung
Diesel | E5 | E10 | |
---|---|---|---|
new | 3 | 12 | 48 |
removed | 2 | 8 | 32 |
changed | 1 | 4 | 16 |
Wenn z.B. Diesel- und E10-Preis geändert wurden, steht in changed 17 (1+16).
Ein Preis ist neu, wenn a) der Sprittyp bisher nicht von der Tankstelle geführt wurde, b) die Tankstelle neu ist, oder c) nachdem die MTS-K wegen Wartungsarbeiten eine Zeitlang keine Preise geliefert hat.