Wie unsere Jobdaten entstehen

Diese Seite beschreibt, wie eine Stellenanzeige bei uns zu Daten wird: woher sie kommt, wer welche Angabe behauptet, und wo wir schlicht nichts wissen. Sie ist bewusst prüfbar geschrieben. Jede Regel hier entspricht dem ausgelieferten Code, nicht einer Absicht.

Worum es hier geht

Beschrieben ist der aggregierte Stellenindex, der das Jobboard, die öffentlichen Schnittstellen und die Datensätze speist. Zwei Dinge stehen bewusst nicht hier: Rankings und Suchrelevanz, die eine Produktentscheidung sind, und die Coworking-Daten, die aus einer eigenen Quelle stammen.

Ein Hinweis zur Verfügbarkeit, damit diese Seite nicht mehr verspricht, als offen ist: Die feldweise Herkunftsangabe, um die es weiter unten geht, gehört zum Datenmodell und wird von der zweiten Fassung der Jobs-API ausgeliefert. Diese Fassung ist noch nicht allgemein verfügbar. Die Regeln gelten dennoch für die Daten selbst, also auch für das, was das Jobboard und die heute offenen Schnittstellen zeigen.

Woher die Anzeigen kommen

Es gibt zwei Wege in den Index. Aggregierte Anzeigen holen wir aus öffentlichen Feeds: aus Bewerbermanagementsystemen von Arbeitgebern, aus Jobboards und aus Meta-Aggregatoren. Direkte Anzeigen stellen Arbeitgeber selbst bei uns ein. Der Unterschied ist keine Formalie, sondern entscheidet, was wir behaupten dürfen: bei einer eigenen Anzeige sprechen wir mit dem Arbeitgeber, bei einer aggregierten nur mit der Quelle. Wie viel Abstand zwischen Anzeige und Unternehmen liegt, sagt jede Anzeige über die Art ihrer Quelle mit.

Art der QuelleWas das bedeutet
atsBewerbermanagementsystem des Arbeitgebers. Der kürzeste Weg: die Anzeige steht dort, wo das Unternehmen sie selbst pflegt.
job_boardJobboard. Die Anzeige wurde dort veröffentlicht, die Angaben stammen aus dem Board, nicht direkt aus dem Unternehmen.
aggregatorMeta-Aggregator. Die Anzeige hat vor uns bereits eine Sammelstelle durchlaufen, also mindestens eine Umschreibung mehr.
governmentBehördliche Quelle. Derzeit ist keine aktiv, siehe den Abschnitt zur Bundesagentur.
unknownDie Art der Quelle ist nicht eingeordnet. Wir raten sie nicht.

Die Bundesagentur für Arbeit ist im August 2026 entfallen

Am 21. August 2026 haben wir die Bundesagentur für Arbeit als Quelle entfernt, aus rechtlichen Gründen und nicht wegen der Datenqualität. Der zuständige Fachbereich hat uns schriftlich bestätigt, dass die Jobsuche-Schnittstelle eine interne Schnittstelle ihrer eigenen App ist und das Auslesen von Anzeigen darüber nicht gestattet ist. Unabhängig davon räumen ihre Nutzungsbedingungen Nutzungsrechte an einer Anzeige nur der Bundesagentur selbst und den vom Arbeitgeber ausgewählten Kooperationspartnern ein. Wir waren nie ausgewählt, hielten also nie ein Recht, den Anzeigentext weiterzuveröffentlichen. Deshalb wurde die Quelle entfernt und nicht bloß aus dem Index genommen.

Das war ein Eingriff in die Menge, nicht in die Qualität. Wie groß der Bestand heute ist, steht weiter unten mit Stichtag. Eine Vorher-Nachher-Differenz nennen wir hier bewusst nicht, weil sie auf dieser Seite nicht nachprüfbar wäre. Geblieben sind vor allem Bewerbermanagementsysteme von Arbeitgebern und Jobboards, deren Bedingungen die Weitergabe tatsächlich decken. Ein späterer Kooperationsvertrag könnte die Quelle wieder öffnen, dann über eine dafür vorgesehene Schnittstelle.

Was wir nicht weitergeben dürfen

Einige Quellen erlauben die Anzeige auf unserer Seite mit Quellenangabe, verbieten aber die Weiterveröffentlichung darüber hinaus. Für sie geben wir weder den Anzeigentext noch die Bewerbungs-URL an Dritte weiter: beide Felder gehen leer hinaus. Eine Einschränkung gehört hierher, weil sie dem Rest dieser Seite widerspricht: ein aus Rechtsgründen zurückgehaltenes Feld sieht derzeit genauso aus wie ein Feld, das wir nie hatten. Wir geben keine Markierung aus, die beides unterscheidbar macht. Ein leerer Anzeigentext aus einer dieser Quellen darf also nicht als Arbeitgeber gelesen werden, der nichts geschrieben hat. Wer die Anzeige lesen will, findet sie auf ihrer Detailseite bei uns.

Wie die Arbeitsform bestimmt wird

Bei der Aufnahme entscheidet ein regelbasierter Klassifikator anhand strukturierter Signale. Er ist präzise, aber blind für Bedeutung: eine Stelle als "Remote Operations Producer" produziert entfernte Übertragungen und ist keine Remote-Stelle, und eine Vor-Ort-Stelle, deren Text das Wort remote nur erwähnt, sieht für Muster genauso aus. Deshalb liest darüber hinaus ein kleines Sprachmodell die vollständige Anzeige und gibt remote, hybrid oder vor Ort zurück.

Liegt ein Modellurteil vor, hat es Vorrang vor der Regelstufe. Gewertet wird aber nur ein Urteil ab der eingestellten Mindestsicherheit, standardmäßig hoch. Ein unsicheres Urteil wird verworfen, und die Anzeige behält ihre regelbasierte Einordnung. Der Grund ist unangenehm konkret: eine billige Fehleinschätzung darf keine echte Remote-Stelle unsichtbar machen. Ändert eine Quelle später den Anzeigentext, wird neu geurteilt, erkannt an einer Prüfsumme des Textes, aus dem das alte Urteil stammte.

Remote und hybrid bleiben getrennt und werden nie zu "irgendwie remote" zusammengefasst. Ein Urteil "vor Ort" lässt die Anzeige nicht ablaufen: der Datensatz bleibt aktiv, wird aber bei der Ausgabe herausgefiltert, und die Detailseite antwortet mit 404. Der Unterschied ist wichtig, weil ein Ablaufdatum eine Aussage über die Stelle wäre, während dies eine Aussage über unsere Einordnung ist. Lässt sich die Arbeitsform gar nicht bestimmen, steht dort unbekannt.

Wie ein Gehalt zustande kommt

Gehälter werden bei der Ausgabe in drei Stufen aufgelöst, in dieser Reihenfolge: die bei der Aufnahme gespeicherte Angabe, ein erneutes regelbasiertes Auslesen des aktuellen Textes, eine Extraktion durch ein Sprachmodell. Findet keine Stufe etwas, bleibt das Feld leer; einzige Ausnahme ist die unten beschriebene Minijob-Rechtsableitung, die keine Gehaltsangabe ist, sondern eine gesetzliche Obergrenze. Beim Auflösen setzen wir nie eine Grenze aus einer Stufe an eine Grenze aus einer anderen: jede Stufe wird als ganzes Paar genommen, denn Mischen könnte eine Spanne umkehren, etwa mindestens 5000 bei höchstens 4000. Ein Fall ist allerdings ehrlich zu benennen. Bei der Aufnahme wird jede Grenze einzeln gefüllt, eine Quelle kann also die Untergrenze liefern und unser eigenes Lesen des Textes die Obergrenze. Dieses gemischte Paar wird gespeichert und später als eine einzige Stufe behandelt, und wir schreiben die ganze Spanne unserer eigenen Extraktion zu. Das untertreibt die Quelle, statt ihr eine Zahl in den Mund zu legen, die sie nie genannt hat.

HerkunftWas sie besagt
source_structuredDie Quelle hat das Gehalt als strukturiertes Feld geliefert. Eine fremde Behauptung, die der Arbeitgeber bestreiten könnte, aber keine von uns.
nomado24_extractedWir haben die Zahl aus dem Anzeigentext gelesen, per Regel oder Modell. Unsere Lesart, als unsere ausgewiesen, auch wenn wir sicher sind.
legal_derivationAus einer benannten Rechtsnorm abgeleitet. Bisher genau ein Fall: bei einem deutschen Minijob ist die gesetzliche Verdienstgrenze von 603 Euro im Monat auch die Gehaltsobergrenze, selbst wenn die Anzeige keine Zahl nennt.
unknownKeine Herkunft feststellbar. Das umfasst auch alte Datensätze aus der Zeit vor der Herkunftsspalte: dass wir nicht mehr wissen, welche Stufe die Zahl gesetzt hat, ist kein Grund, sie der Quelle zuzuschreiben.

Die abgeleitete Minijob-Grenze wird mit Regel-Kennung (de.minijob.monthly_earnings_ceiling), Fassung (2026-01) und Geltungsbeginn ausgeliefert, damit sie nachgerechnet oder verworfen werden kann. Die Grenze wird fast jährlich angehoben, deshalb wäre die Zahl ohne Fassung wertlos. Sie ist ausdrücklich kein Angebot des Arbeitgebers: ein Minijob darf jeden Betrag bis zu dieser Grenze zahlen. Alle Beträge sind auf Monatswerte in Euro normalisiert; welchen Zeitraum die Anzeige selbst genannt hat, etwa einen Stundensatz, wird separat mitgeliefert.

Die wichtigste Aussage zum Gehalt ist eine Leerstelle: die große Mehrheit der Anzeigen nennt überhaupt kein Gehalt. Wir füllen diese Lücke nicht mit Schätzungen, Branchenmittelwerten oder Spannen vergleichbarer Stellen.

Wie oft welche Stufe greift

Diese Verteilung ist der eigentliche Beleg für alles Vorstehende, deshalb steht sie hier und nicht nur im Abschnitt zur Abdeckung. Gemessen an einer Stichprobe von 2000 Anzeigen am 2026-08-25, über den ausgelieferten Bestand. Anders als die Zahlen weiter unten lässt sich das heute nicht über eine öffentliche Adresse nachrechnen, deshalb stehen Stichprobengröße und Datum ausdrücklich dabei.

AnteilWas er zählt
8,1 %Es liegt überhaupt ein Gehalt an, egal aus welcher der drei Stufen.
7,5 %Die Anzeige selbst nennt eine Zahl, also strukturiertes Quellfeld oder von uns ausgelesen. Das ist der Wert für jeden Satz der Form "so viele Anzeigen nennen ein Gehalt".
0,6 %Die Quelle liefert das Gehalt als strukturiertes Feld. Zum Stichtag ein sehr kleiner Anteil, und das ist der eigentliche Befund; seit dem Personio-Mapping vom 26. August 2026 wächst er.
6,9 %Wir haben die Zahl aus dem Anzeigentext gelesen. Der weit überwiegende Teil aller Gehaltsangaben.
0,15 %Abgeleitete gesetzliche Minijob-Obergrenze. Diese Anzeigen nennen kein Gehalt und sind deshalb in der Zeile "die Anzeige nennt eine Zahl" nicht enthalten.
5,8 %Was der öffentliche Statistik-Datensatz ausweist. Niedriger, weil er nur die gespeicherten Spalten zählt und nicht das erneute Auslesen bei der Ausgabe.

Fast jede Gehaltsangabe hier ist also unsere Lesart und nicht die Angabe einer Quelle. Genau deshalb steht an jedem Gehalt, welche Stufe es gesetzt hat: ohne diese Kennzeichnung sähen ein strukturiertes Quellfeld und eine von uns aus dem Text gelesene Zahl identisch aus, obwohl sie sehr Verschiedenes wert sind.

Wie die Beschäftigungsform bestimmt wird

Wir führen zwei Vokabulare gleichzeitig. Das eine ist das grobe von schema.org, auf das Suchmaschinen filtern: Vollzeit, Teilzeit, Auftrag, Praktikum, befristet. Das andere ist das feinere, das Minijob, Werkstudent, Ausbildung, Praktikum, freie Mitarbeit, Auftrag, befristet, Teilzeit und Vollzeit unterscheidet. Seit dem 26. August 2026 fließen zuerst die strukturierten Angaben der Quelle selbst ein (etwa bei Personio), vereinigt mit unserer eigenen Ableitung. Die Herkunft wird für die Liste als Ganzes ausgewiesen, bewusst bescheiden: Nur wenn jede Form von der Quelle stammt, gilt sie als Quellen-Aussage, sonst als unsere Einordnung.

Beide werden vereinigt, nicht ersetzt; die feineren Formen stehen zuerst (quellengenannte vor unseren abgeleiteten), dann schema.org. Der Grund ist der Teilzeit-Eimer von schema.org: er kann einen Minijob nicht von einer Werkstudentenstelle und nicht von gewöhnlicher Teilzeit unterscheiden. Würden wir ihn durch unsere Form ersetzen, verlöre jeder, der auf Teilzeit filtert, genau diese Anzeigen. Weil beide Werte anliegen, findet ein Filter auf Teilzeit sie weiterhin, und wer Minijob meint, kann Minijob sagen. Umgekehrt fasst schema.org Auftrag und freie Mitarbeit zu einem Wert zusammen; diese Unterscheidung erfinden wir dort nicht hinein, wo sie nie getroffen wurde.

Eine leere Liste heißt: nicht bestimmt. Sie heißt nicht, dass keine Beschäftigungsform zutrifft.

Aktualität und Prüfung

Fünf Zeitangaben, die gern verwechselt werden. Sie sagen bewusst Verschiedenes, und nur eine davon ist eine Angabe des Arbeitgebers.

FeldWas es bedeutet
publishedAtVeröffentlichungsdatum, wie es die Quelle nennt. Nennt sie keines, fehlt das Feld. Wir setzen dann nicht das Datum ein, an dem wir die Anzeige gefunden haben.
firstSeenAtWann wir die Anzeige zum ersten Mal gesehen haben. Eine Beobachtung von uns, keine Angabe des Arbeitgebers.
lastVerifiedAtWann wir sie zuletzt geprüft haben, immer zusammen mit der Methode: entweder haben wir die Original-URL abgerufen und eine Antwort bekommen, oder die Anzeige stand noch im Feed. Beide sind echte Belege, und der schwächere wird nie als der stärkere ausgegeben. Ein Abruf, der ins Leere lief, also eine Zeitüberschreitung, ein Serverfehler, eine Sperre oder eine Bot-Schranke, zählt nicht als Abruf: Die Anzeige fällt dann auf die Feed-Präsenz zurück, mitsamt deren Zeitstempel. Wo hier der Abruf genannt wird, hat also tatsächlich jemand geantwortet.
updatedAtWann sich die ausgelieferte Darstellung zuletzt geändert hat, etwa Titel, Text, Firma oder Gehalt. Ein erneutes Sichten allein ist keine Änderung, sonst wäre alle vier Stunden der gesamte Bestand "geändert".
expiresAtEnde eines rollierenden Gültigkeitsfensters von 30 Tagen ab der letzten Sichtung, oder ein früheres Enddatum, wenn die Quelle eines nennt. Meist also unsere Frist und keine Bewerbungsfrist des Arbeitgebers.

Wie eine Anzeige nachgeprüft wird

Breite Aggregatoren geben eine Anzeige oft weiter, nachdem die Stelle beim Arbeitgeber längst besetzt ist. Sie bleibt dann im Feed sichtbar und würde nie veralten, während ihr Bewerbungslink schon tot ist. Deshalb rufen wir die Original-URLs aktiver Anzeigen aktiv ab, älteste Prüfung zuerst, in Portionen und mit einem Abstand von mindestens zwölf Stunden pro Anzeige. Nur 404 und 410 gelten als eindeutig weg und beenden die Anzeige. Zeitüberschreitungen, Serverfehler, Sperren und Bot-Schranken gelten als unklar, und unklar heißt behalten. Eine offene Stelle wegen einer kurzen Störung zu löschen wäre der teurere Fehler. Diese Entscheidung hat einen Preis, aber er landet nicht beim Zeitstempel oben: Ein unklarer Abruf hält die Anzeige am Leben, gilt aber nicht als Bestätigung. Wir halten zu jeder Prüfung fest, was sie ergeben hat, und nur ein Abruf mit Antwort wird oben als Abruf ausgewiesen. Alles andere fällt auf die Feed-Präsenz zurück. Eine Anzeige hinter einer Bot-Schranke sieht deshalb nicht frisch bestätigt aus. Anzeigen ohne abrufbare Original-URL nehmen an dieser Prüfung gar nicht erst teil, statt als geprüft zu gelten, ohne dass je eine Anfrage rausging.

Die Aufnahme läuft alle vier Stunden, und jede Fahrt aktualisiert Sichtungen, prüft Links und beendet Abgelaufenes. Vier Stunden sind allerdings der Takt des Jobs, keine Zusage über das Erscheinen. Jede Quelle hat zusätzlich ihren eigenen Mindestabstand zwischen zwei Abrufen und wird übersprungen, bis dieser verstrichen ist: 6 Stunden bei Remotive, 24 Stunden bei Adzuna. Eine Anzeige, die kurz nach dem letzten Abruf ihrer Quelle online geht, wartet also auf die nächste Fahrt, in der diese Quelle fällig ist, und das kann deutlich länger sein als ein Fenster.

Der Kern: Nichtwissen wird ausgewiesen

Die Regel, aus der alles Übrige folgt, lautet: Fehlend ist besser als geraten. Wo wir eine Angabe nicht haben, bleibt das Feld leer, und die Leere ist die Aussage. Wo wir eine Angabe haben, sagen wir dazu, wer sie behauptet. Das Datenmodell führt das pro Feld, nicht pro Anzeige: zu einem nicht selbsterklärenden Feld gehört ein Herkunftseintrag mit Art, Quelle, Beobachtungszeitpunkt, Methode und Fassung der Methode. Damit kann jeder selbst entscheiden, wie viel ihm ein Wert wert ist, anstatt einer Gesamtnote von uns zu vertrauen.

Art der HerkunftBedeutung
employer_factDer Arbeitgeber hat es selbst angegeben. Vorgesehen für unsere eigenen Anzeigen. Die aggregierte Ausgabe verwendet diese Art derzeit nicht, weil dort niemand direkt mit uns gesprochen hat.
source_factDie Quelle hat es angegeben. Eine fremde Behauptung, der der Arbeitgeber widersprechen könnte.
nomado24_classificationWir haben es abgeleitet, per Regel, Heuristik oder Modell. Unsere Lesart, als unsere gekennzeichnet.
legal_derivationEs folgt aus einer benannten Rechtsnorm, die mit Kennung, Fassung und Geltungsbeginn mitgeliefert wird.

Eine Zusicherung geben wir ausdrücklich nicht: dass zu jedem Wert eine Herkunft feststellbar ist. Bei einem kleinen Teil der Anzeigen, meist aus der Zeit vor der Herkunftsspalte, liegt ein Gehalt an und die Herkunft lautet unbekannt. Wir zeigen dann beides, den Wert und das Eingeständnis. Die Alternativen wären, die Zahl zu verschweigen oder ihr eine Stufe anzudichten, die sie vielleicht nie gesetzt hat, und beide sind schlechter.

Eine Herkunft wird niemals aufgewertet. Ein Wert, den wir aus einem Text gelesen haben, bleibt unsere Einordnung, auch wenn wir sehr sicher sind. Sicherheit ist keine Herkunft, und die Verwechslung der beiden ist genau der Trick, den diese Seite verhindern soll.

Konkret heißt das eine Reihe von Dingen, die wir bewusst nicht tun:

  • Wir ordnen keine Berufskategorie zu, auch dort nicht, wo eine Quelle eine eigene nennt (Personio liefert eine): ohne quellenübergreifendes Vokabular wäre jede Zuordnung erfunden. Eine leere Kategorienliste ist ehrlicher.
  • Wir leiten aus "Deutschland" keine Region wie DACH oder EWR ab. Dass eine Stelle in Deutschland sitzt, sagt nicht, dass der Arbeitgeber eine Bewerbung aus Österreich annimmt. Eine leere Regionsliste heißt nicht bestimmt, nie nicht zugelassen.
  • Wir lesen keine Stadt und keine Region aus dem Ortshinweis heraus, und bei einem mehrländrigen Geltungsbereich nennen wir kein stellvertretendes Land.
  • Wir behaupten nicht, ob ein Gehalt brutto oder netto gemeint ist. In Deutschland ist brutto üblich, aber keine unserer Quellen sagt es maschinenlesbar.
  • Wir liefern zu einem gefundenen Gehalt keine Textstelle mit. Wir behalten sie nicht, und eine zu rekonstruieren wäre erfundener Beleg.
  • Wir veröffentlichen keine Modell-Zusammenfassung, deren Text sich seither geändert hat. Sie wäre eine Aussage über eine Anzeige, die es so nicht mehr gibt.
  • Wir behandeln ein Unternehmen als Namen, nicht als geprüfte Rechtsperson. Wer über zwei Systeme unter zwei Schreibweisen ausschreibt, erscheint zweimal, und wir behaupten nichts anderes.

Abdeckung, mit Stichtag

Eine Methodik ohne Zahlen ist eine Behauptung. Die folgenden Werte beschreiben, wie vollständig der Index tatsächlich ist, inklusive der unangenehmen Anteile. Grundgesamtheit sind alle zum Erhebungszeitpunkt aktiven Anzeigen.

Stand:

KennzahlWert
Aktive Anzeigen im Index3.588
mit gespeichertem Gehalt (öffentlicher Datensatz)5,8 %
vollständig remote (Spalte aus der Aufnahme)48,8 %
hybrid (Spalte aus der Aufnahme)51,2 %
mit Geltungsbereich Deutschland57,8 %
in den letzten sieben Tagen erstmals gesehen14,9 %

Wie diese Zahlen zu lesen sind

  • Die Zahlen stammen aus dem öffentlichen Statistik-Datensatz und lassen sich dort nachrechnen. Sie sind hier eingefroren, damit ein Zitat auch später überprüfbar bleibt. Tagesaktuelle Werte stehen im Datensatz selbst, mit eigenem Erhebungszeitpunkt.
  • Die Aufteilung remote gegen hybrid ist die bei der Aufnahme gesetzte Spalte, gezählt über den gesamten aktiven Bestand, also vor dem Modellurteil. Auf dem Jobboard liegt das Modellurteil darüber: es verschiebt einzelne Anzeigen von remote nach hybrid und entfernt Vor-Ort-Anzeigen. Der ausgelieferte Remote-Anteil ist daher niedriger als der hier genannte.
  • Gezählt werden Anzeigen, nicht Arbeitgeber. Ein Unternehmen mit zwanzig Stellen erscheint zwanzigmal.
  • Zur Beschäftigungsform weisen wir hier absichtlich keine Quote aus. Der öffentliche Datensatz berechnet keine, und eine Zahl, die niemand nachrechnen kann, gehört nicht auf diese Seite. Pro Anzeige liegt die Angabe samt Herkunft am Datensatz selbst.
  • Der Gehaltsanteil in dieser Tabelle ist der des öffentlichen Datensatzes, der nur die gespeicherten Spalten zählt. Die vollständige Verteilung über alle drei Stufen steht im Abschnitt zum Gehalt und liegt höher, weil bei der Ausgabe erneut aus dem Text gelesen wird. Die abgeleitete Minijob-Obergrenze gilt in keiner der beiden Zahlen als genanntes Gehalt.

Datensatz zum Nachrechnen: www.nomado24.de/remote-jobs-statistik.json

Zur Statistikseite mit tagesaktuellen Zahlen

Wenn etwas falsch ist

Wenn eine Anzeige eine Angabe trägt, die nicht stimmt, wollen wir das wissen, und zwar mit der Adresse der Detailseite. Bei einer aggregierten Anzeige können wir die Quelle nicht korrigieren, aber wir können die Anzeige beenden oder unsere Einordnung berichtigen. Fehler in der Einordnung sind uns lieber gemeldet als unentdeckt: eine Methodik ist nur so gut wie ihre Korrekturschleife.

Kontakt: anton.petuchow@nomado24.de

Weiter