Wer Stellen auf seiner Website ausschreibt, kann mit dem richtigen Schema Markup erheblich mehr Sichtbarkeit in Google gewinnen. JobPosting Schema Markup ermöglicht es, Stellenanzeigen direkt in der Google-Suche mit Zusatzinformationen anzuzeigen: Jobtitel, Unternehmen, Standort, Gehalt und Bewerbungsfrist — alles auf einen Blick, noch bevor der Nutzer klickt.
Google Jobs ist dabei besonders relevant: Das spezielle Job-Suchergebnis-Widget erscheint bei Suchanfragen wie "IT-Projektmanager Berlin" oder "Stellen Pflegefachkraft München" prominent über den regulären Suchergebnissen. Wer dort erscheint, hat einen erheblichen Wettbewerbsvorteil gegenüber Unternehmen ohne Markup.
In diesem Leitfaden lernst du alles über JobPosting Schema Markup: Welche Properties Google verlangt, welche empfohlen werden, wie du Gehalt, Arbeitsort und Bewerbungsfrist korrekt angibst, und welche Fehler zur Ablehnung durch Google führen.
Was ist JobPosting Schema Markup?
JobPosting ist ein Schema.org-Typ, der maschinenlesbare Informationen über eine Stellenausschreibung enthält. Google liest dieses Markup aus und kann es für folgende Darstellungen nutzen:
- Google Jobs Widget — hervorgehobenes Suchergebnis-Panel speziell für Stellenanzeigen
- Rich Results in der regulären Suche — Zusatzinformationen wie Standort, Gehalt und Jobtitel direkt im Snippet
- Google for Jobs-Index — Aufnahme in den spezialisierten Job-Suchindex
Die Voraussetzung: Das Markup muss auf der direkten Stellenanzeigen-Seite eingebettet sein (nicht auf einer Übersichtsseite), und die Seite muss öffentlich zugänglich sein — kein Login erforderlich.
Pflicht-Properties: Was Google verlangt
Google definiert für JobPosting-Rich-Results folgende Pflichtfelder. Ohne sie kann deine Stellenanzeige nicht in Google Jobs erscheinen:
title
Der offizielle Jobtitel der ausgeschriebenen Stelle. Nutze den genauen, marktüblichen Titel — keine kreativen Eigennamen wie "Growth Ninja" oder "Rockstar Developer". Google bevorzugt klare, verständliche Jobtitel.
description
Eine vollständige Beschreibung der Stelle in HTML-Format. Diese wird von Google direkt aus dem Markup gelesen. Sie sollte alle relevanten Informationen enthalten: Aufgaben, Anforderungen, Benefits. Mindestlänge: ca. 200 Zeichen. Empfohlen: 500–2.000 Zeichen.
datePosted
Datum der Veröffentlichung im ISO-8601-Format: "2026-05-01". Google bevorzugt frische Stellenanzeigen — halte das Datum aktuell, wenn die Stelle weiterhin offen ist.
hiringOrganization
Informationen über das einstellende Unternehmen. Pflichtfelder innerhalb: name und sameAs (URL der Unternehmenswebsite).
jobLocation oder jobLocationType
Entweder der physische Standort (jobLocation als Place-Objekt) oder für Remote-Stellen jobLocationType mit dem Wert "TELECOMMUTE". Mindestens eines der beiden ist Pflicht.
Empfohlene Properties für maximale Sichtbarkeit
Diese Properties sind optional, aber Google empfiehlt sie stark — und sie erhöhen die Chancen auf ein Rich Result deutlich:
- validThrough — Ablaufdatum der Stelle (ISO 8601). Stellen mit abgelaufenem Datum werden aus Google Jobs entfernt.
- employmentType — Beschäftigungsart. Gültige Werte:
FULL_TIME,PART_TIME,CONTRACTOR,TEMPORARY,INTERN,VOLUNTEER,PER_DIEM,OTHER. Mehrere Werte als Array möglich. - baseSalary — Gehaltsangabe als
MonetaryAmount-Objekt - experienceRequirements — Erfahrungsanforderungen (z.B. "3–5 Jahre Berufserfahrung")
- educationRequirements — Bildungsvoraussetzungen
- skills — Gewünschte Fähigkeiten und Kenntnisse
- qualifications — Formale Qualifikationen
- jobBenefits — Mitarbeitervorteile und Benefits
- responsibilities — Aufgaben und Verantwortlichkeiten
- workHours — Arbeitszeiten (z.B. "Montag–Freitag, 9–17 Uhr")
- applicationContact — Kontaktdaten für Bewerbungen
- directApply —
true, wenn direkt über die Seite beworben werden kann (boolescher Wert) - industry — Branche (z.B. "Informationstechnologie")
- occupationalCategory — Berufsfeld nach O*NET-Klassifikation
Gehalt korrekt angeben: baseSalary
Das Gehalt ist eines der meistgesuchten Informationen bei Stellenanzeigen. Wenn du es angibst, werden deine Anzeigen in Google Jobs deutlich öfter geklickt. Das baseSalary-Objekt hat eine spezifische Struktur:
"baseSalary": {
"@type": "MonetaryAmount",
"currency": "EUR",
"value": {
"@type": "QuantitativeValue",
"value": 55000,
"unitText": "YEAR"
}
}
Für Gehaltsrahmen (min/max):
"baseSalary": {
"@type": "MonetaryAmount",
"currency": "EUR",
"value": {
"@type": "QuantitativeValue",
"minValue": 50000,
"maxValue": 70000,
"unitText": "YEAR"
}
}
Gültige Werte für unitText: HOUR, DAY, WEEK, MONTH, YEAR.
Wichtig: Google zeigt Gehaltsangaben nur dann in Rich Results, wenn sie mit den tatsächlichen Angaben auf der Seite übereinstimmen. Gib keine Fantasiegehälter an.
Remote-Stellen und hybride Arbeitsmodelle
Seit 2020 unterstützt Google Jobs auch Remote-Stellen. Die korrekte Implementierung:
Vollständig Remote
"jobLocationType": "TELECOMMUTE",
"applicantLocationRequirements": {
"@type": "Country",
"name": "Deutschland"
}
Hybrid (vor Ort + Remote)
"jobLocationType": "TELECOMMUTE",
"jobLocation": {
"@type": "Place",
"address": {
"@type": "PostalAddress",
"addressLocality": "Berlin",
"addressCountry": "DE"
}
}
Für hybride Modelle kann sowohl jobLocation als auch jobLocationType angegeben werden. Das signalisiert Google, dass die Stelle ortsunabhängig ist, aber ein physischer Standort existiert.
Vollständiges JSON-LD-Beispiel: Softwareentwickler
{
"@context": "https://schema.org",
"@type": "JobPosting",
"title": "Senior Frontend-Entwickler (m/w/d)",
"description": "<p>Wir suchen einen erfahrenen <strong>Senior Frontend-Entwickler</strong> für unser Berliner Entwicklerteam.</p><p><strong>Deine Aufgaben:</strong></p><ul><li>Entwicklung moderner React-Applikationen</li><li>Code-Reviews und Mentoring von Junior-Entwicklern</li><li>Performance-Optimierung von Web-Frontends</li></ul><p><strong>Dein Profil:</strong></p><ul><li>5+ Jahre Erfahrung in der Frontend-Entwicklung</li><li>Sehr gute Kenntnisse in React, TypeScript und CSS</li></ul>",
"datePosted": "2026-05-01",
"validThrough": "2026-07-31",
"employmentType": "FULL_TIME",
"hiringOrganization": {
"@type": "Organization",
"name": "TechVision GmbH",
"sameAs": "https://techvision-gmbh.de",
"logo": "https://techvision-gmbh.de/assets/logo.png"
},
"jobLocation": {
"@type": "Place",
"address": {
"@type": "PostalAddress",
"streetAddress": "Unter den Linden 50",
"addressLocality": "Berlin",
"postalCode": "10117",
"addressRegion": "Berlin",
"addressCountry": "DE"
}
},
"jobLocationType": "TELECOMMUTE",
"applicantLocationRequirements": {
"@type": "Country",
"name": "Deutschland"
},
"baseSalary": {
"@type": "MonetaryAmount",
"currency": "EUR",
"value": {
"@type": "QuantitativeValue",
"minValue": 70000,
"maxValue": 90000,
"unitText": "YEAR"
}
},
"skills": "React, TypeScript, CSS, JavaScript, REST APIs, Git",
"experienceRequirements": "Mindestens 5 Jahre Berufserfahrung in der Frontend-Entwicklung",
"educationRequirements": {
"@type": "EducationalOccupationalCredential",
"credentialCategory": "bachelor degree",
"educationalLevel": "Hochschulabschluss in Informatik oder verwandtem Studiengang"
},
"jobBenefits": "30 Urlaubstage, flexibles Home-Office, betriebliche Altersvorsorge, Weiterbildungsbudget 2.000 EUR/Jahr, modernes Büro im Herzen Berlins",
"responsibilities": "Entwicklung und Wartung von React-Applikationen, Code-Reviews, Performance-Optimierung",
"workHours": "40 Stunden/Woche, flexible Arbeitszeiten",
"industry": "Informationstechnologie",
"directApply": true,
"applicationContact": {
"@type": "ContactPoint",
"email": "jobs@techvision-gmbh.de",
"contactType": "HR"
}
}
Mehrere Standorte für eine Stelle
Wenn eine Stelle an mehreren Standorten besetzt wird, kann jobLocation ein Array enthalten:
"jobLocation": [
{
"@type": "Place",
"address": {
"@type": "PostalAddress",
"addressLocality": "Berlin",
"addressCountry": "DE"
}
},
{
"@type": "Place",
"address": {
"@type": "PostalAddress",
"addressLocality": "München",
"addressCountry": "DE"
}
}
]
Google zeigt für jede Standort-Kombination einen separaten Eintrag in Google Jobs. Das erhöht die Sichtbarkeit erheblich für Suchende in verschiedenen Städten.
Praktisches Beispiel: Pflegefachkraft (Teilzeit)
{
"@context": "https://schema.org",
"@type": "JobPosting",
"title": "Pflegefachkraft / Altenpflegerin (m/w/d) Teilzeit",
"description": "<p>Das Seniorenheim St. Josef sucht eine erfahrene Pflegefachkraft zur Verstärkung unseres Teams.</p><p>Wir bieten Ihnen ein kollegiales Umfeld, geregelte Arbeitszeiten und übertarifliche Vergütung.</p>",
"datePosted": "2026-05-01",
"validThrough": "2026-08-01",
"employmentType": ["PART_TIME", "FULL_TIME"],
"hiringOrganization": {
"@type": "Organization",
"name": "Seniorenheim St. Josef gGmbH",
"sameAs": "https://seniorenheim-stjoseph.de"
},
"jobLocation": {
"@type": "Place",
"address": {
"@type": "PostalAddress",
"streetAddress": "Hauptstraße 12",
"addressLocality": "Köln",
"postalCode": "50667",
"addressCountry": "DE"
}
},
"baseSalary": {
"@type": "MonetaryAmount",
"currency": "EUR",
"value": {
"@type": "QuantitativeValue",
"minValue": 2800,
"maxValue": 3400,
"unitText": "MONTH"
}
},
"skills": "Pflegedokumentation, Grundpflege, medizinische Grundversorgung, Empathie",
"experienceRequirements": "Abgeschlossene Ausbildung als Altenpflegerin oder Pflegefachkraft",
"workHours": "20–35 Stunden/Woche, auch Wochenend- und Feiertagsdienste möglich",
"jobBenefits": "Übertarifliche Vergütung, Weihnachtsgeld, betriebliche Altersvorsorge, Jobticket",
"directApply": true
}
Abgelaufene Stellenanzeigen: Was tun?
Wenn eine Stelle besetzt wurde oder die Ausschreibung endet, ist schnelles Handeln wichtig:
- Option 1 — Seite entfernen: Leite die URL auf die Stellenübersichtsseite weiter (301-Redirect). Google entfernt das Listing aus Google Jobs innerhalb weniger Tage.
- Option 2 — Markup aktualisieren: Setze
"validThrough"auf ein vergangenes Datum. Google entfernt abgelaufene Stellen automatisch. - Option 3 — Noindex: Setze
<meta name="robots" content="noindex">auf der Seite. Google nimmt die Seite dann aus dem Index.
Abgelaufene Stellenanzeigen ohne Aktualisierung sind einer der häufigsten Gründe für Penalties bei JobPosting-Markup. Halte dein Markup stets aktuell.
Checkliste: Häufige Fehler
Fehler 1: description nur im Markup, nicht auf der Seite
Der Inhalt des description-Felds muss auch als sichtbarer Text auf der Seite vorhanden sein. Markup, das mehr Informationen enthält als die sichtbare Seite, verstößt gegen Googles Richtlinien und wird abgestraft.
Fehler 2: Stelle bereits besetzt, Markup noch aktiv
Wenn eine Stelle besetzt ist und weiterhin in Google Jobs erscheint, führt das zu Nutzerfrustrationen und kann zur manuellen Maßnahme gegen dein Markup führen. Entferne abgelaufene Anzeigen unverzüglich.
Fehler 3: employmentType als Freitext statt Vokabular
Google akzeptiert nur die definierten Werte (FULL_TIME, PART_TIME usw.). Eigene Texte wie "Festanstellung" oder "Vollzeitstelle" werden ignoriert.
Fehler 4: Markup auf Übersichtsseiten statt Detailseiten
JobPosting-Markup darf nur auf der Seite einer einzelnen Stellenanzeige stehen. Auf einer Übersichtsseite mit 20 Stellen ist es nicht erlaubt — auch wenn die Stellen als Karten dargestellt sind.
Fehler 5: hiringOrganization.sameAs fehlt
Die sameAs-URL der Organisation ist zwar technisch optional, aber Google empfiehlt sie stark. Ohne sie kann Google die Organisation nicht eindeutig identifizieren und im Knowledge Graph abgleichen.
Fehler 6: Remote-Stelle ohne jobLocationType
Wenn eine Stelle vollständig remote ist, aber kein jobLocationType: "TELECOMMUTE" gesetzt ist, wird sie in Google Jobs nicht als Remote-Stelle gelistet — ein großer Reichweitenverlust.
directApply: Direktbewerbungen aus Google Jobs
Das Property directApply: true signalisiert Google, dass Bewerber direkt auf deiner Seite eine Bewerbung einreichen können — ohne auf ein externes ATS (Applicant Tracking System) weitergeleitet zu werden. Google kann dann einen "Direkt bewerben"-Button in Google Jobs einblenden, was die Konversionsrate erhöht.
Voraussetzung: Die Seite muss tatsächlich ein Bewerbungsformular enthalten. Das Property darf nicht gesetzt werden, wenn die Bewerbung nur per E-Mail oder über externe Systeme möglich ist.
Integration in Content Management Systeme
WordPress
Nutze Plugins wie Yoast SEO (Premium), RankMath oder das kostenlose Plugin WP Job Manager. Alternativ kannst du das JSON-LD manuell über einen Custom-Code-Block im Full Site Editor einfügen.
Individuelle Systeme
Generiere das JSON-LD dynamisch aus deiner Datenbank. Jede Stelle-Detailseite bekommt ihr eigenes Markup mit dem spezifischen validThrough-Datum, der Position und dem Standort. Verwende serverseitiges Rendering oder stelle sicher, dass Google das Markup beim Crawl sieht.
Validierung und Testing
Bevor du JobPosting-Markup live schaltest:
- Google Rich Results Test — prüft, ob das Markup valide ist und ein Rich Result generiert werden kann
- Google Search Console — Jobs-Bericht zeigt nach der Indexierung alle erkannten Stellenanzeigen und mögliche Fehler
- Unser JSON-LD Structured Data Validator — sofortige Prüfung im Browser
Im Google Jobs-Bericht der Search Console findest du aufgeschlüsselt, welche Stellenanzeigen erkannt wurden, welche Fehler vorliegen (z.B. "validThrough in der Vergangenheit") und wie viele Klicks über Google Jobs kommen.
Kombination mit anderen Schema-Typen
JobPosting kann sinnvoll mit anderen Typen kombiniert werden:
- JobPosting + Organization — vollständige Unternehmensinformationen für die
hiringOrganizationliefern - JobPosting + BreadcrumbList — Navigationspfad in der SERP anzeigen (z.B. Karriere > Entwicklung > Frontend)
- JobPosting + Person — Ansprechpartner für die Stelle strukturiert einbinden
Mehr zu strukturierten Daten allgemein findest du in unserem Artikel Strukturierte Daten für SEO: Schema Markup einfach erklärt. Für die Verbindung von Unternehmensinformationen mit dem Stellenangebot eignet sich unser Organization Schema Generator.
Zusammenfassung: Was du mitnehmen solltest
JobPosting Schema Markup ist eines der wirksamsten Mittel, um Stellenanzeigen direkt aus der Google-Suche heraus zu besetzen. Die wichtigsten Punkte auf einen Blick:
- Pflichtfelder:
title,description,datePosted,hiringOrganization,jobLocationoderjobLocationType - Gehalt angeben, wenn möglich — es verdoppelt in vielen Fällen die Klickrate in Google Jobs
- Remote-Stellen als
jobLocationType: "TELECOMMUTE"kennzeichnen - Abgelaufene Stellen sofort aus dem Markup entfernen oder
validThroughaktualisieren - Markup nur auf Detailseiten, niemals auf Übersichtsseiten
- Regelmäßig in der Search Console prüfen, ob Fehler vorliegen