jobpost.tech
Schema guide Checker API Admin

Referentie

Job Posting Schema Guide

Uitleg per Schema.org JobPosting-veld: wat het betekent, wat Google for Jobs vereist, en welke regels jobpost.tech hanteert in de checker en het admin-dashboard.

Test je vacature-URL Google documentatie

Inhoud

Introductie Basisvelden Werkgever (hiringOrganization) Locatie Vacature-ID (identifier) Dienstverband (employmentType) Salaris (baseSalary) Solliciteren (directApply) Beta-velden (opleiding & ervaring) Schema.org extra’s

Google-niveaus

  • Vereist — zonder dit geen Google for Jobs
  • Aanbevolen — betere kwaliteit en CTR
  • Beta — experimenteel bij Google
  • Extra — Schema.org, niet in Google-score

Introductie

Google for Jobs leest vacatures via structured data: een JSON-LD-blok met @type: JobPosting op elke vacaturepagina. jobpost.tech genereert dit automatisch vanuit het admin-dashboard en valideert het tegen dezelfde regels als deze gids.

Plaats één JobPosting per URL. Meerdere vacatures op één pagina verwarren crawlers. Gebruik de JobPosting checker om externe pagina’s te testen, of bekijk /vacatures/{slug}/schema op een jobpost.tech demo-site.

{
  "@context": "https://schema.org",
  "@type": "JobPosting",
  "title": "…",
  "description": "<p>…</p>",
  "datePosted": "2026-03-15",
  "hiringOrganization": { "@type": "Organization", "name": "…" },
  "jobLocation": {
    "@type": "Place",
    "address": { "@type": "PostalAddress", "addressCountry": "NL", "addressLocality": "…" }
  }
}

Basisvelden

De kern van elke JobPosting: type, titel, beschrijving en publicatiedata. Zonder deze velden indexeert Google for Jobs de vacature niet.

@context
Schema.org extra URL of object

JSON-LD context. Gebruik altijd https://schema.org zodat crawlers weten welk vocabulaire van toepassing is.

  • Vaste waarde: https://schema.org
  • Plaats in een <script type="application/ld+json"> blok op de vacaturepagina.
"@context": "https://schema.org"
@type
Vereist (Google) Google Text

Het Schema.org type van het object. Moet exact JobPosting zijn.

  • Verplicht voor Google for Jobs.
  • Geen array of varianten — één string JobPosting.
"@type": "JobPosting"
title
Vereist (Google) Google Text

De functietitel zoals kandidaten die verwachten. Alleen de titel — geen bedrijfsnaam, salaris, datum of call-to-action.

  • Verplicht. Mag niet leeg zijn.
  • Geen salaris (€), datums (2024-01-18), of teksten als “Solliciteer nu”.
  • Vermijd spammy tekens (!!, **, ##).
  • Goed: “Hovenier”, “Verkoopmedewerker (32–40 uur)”.
"title": "Coördinator service en onderhoud"
description
Vereist (Google) Google HTML Text

Volledige vacaturetekst in HTML. Beschrijft taken, eisen en context. Mag niet identiek zijn aan title.

  • Verplicht. Moet HTML zijn: gebruik <p>, <ul>, <li>, <br> of vergelijkbaar.
  • Platte tekst zonder HTML-tags wordt afgekeurd.
  • Mag niet letterlijk gelijk zijn aan title (Google duplicate check).
  • Schrijf de volledige vacature; geen doorverwijzing alleen naar PDF.
"description": "<p>Als coördinator service en onderhoud ben je verantwoordelijk voor...</p><ul><li>Plannen van onderhoud</li></ul>"
datePosted
Vereist (Google) Google Date (ISO 8601)

Datum waarop de vacature online is gezet. Google gebruikt dit voor versheid en expiratie-logica.

  • Verplicht. Formaat: YYYY-MM-DD of volledige ISO 8601 datetime.
  • Moet de echte publicatiedatum zijn, niet in de toekomst.
  • Bij verlenging: update datePosted niet tenzij het een nieuwe publicatieronde is.
"datePosted": "2026-03-15"
validThrough
Aanbevolen (Google) Google Date (ISO 8601)

Sluitingsdatum of vervaldatum van de vacature. Na deze datum kan Google de posting als verlopen behandelen.

  • Sterk aanbevolen — voorkomt dat oude vacatures blijven ranken.
  • ISO 8601 datum of datetime.
  • Datum in het verleden geeft een waarschuwing in jobpost.tech.
"validThrough": "2026-06-30"
url
Schema.org extra URL

Canonieke URL van deze vacaturepagina. jobpost.tech zet dit altijd op de live detail-URL.

  • Niet verplicht voor Google, wel best practice voor deduplicatie.
  • Moet de pagina zijn waar de kandidaat solliciteert of de volledige vacature leest.
  • Gebruik HTTPS en geen tracking-parameters als canonieke URL.
"url": "https://www.example.nl/vacatures/hovenier"

Werkgever (hiringOrganization)

Wie de vacature aanbiedt. Google koppelt elke posting aan één Organization-object met minimaal een naam.

hiringOrganization
Vereist (Google) Google Organization

Het bedrijf of de organisatie die wert. Bevat altijd @type Organization en name.

  • Verplicht object — geen platte string.
  • name is het enige verplichte subveld voor Google.
hiringOrganization.@type
Vereist (Google) Google Text

Type van de organisatie. Standaard Organization.

  • Waarde: Organization
"@type": "Organization"
hiringOrganization.name
Vereist (Google) Google Text

Officiële bedrijfsnaam zoals die op Google en in vacatures verschijnt.

  • Verplicht. Lege string = fout.
  • Gebruik de merknaam, niet alleen een afdeling (“HR afdeling”).
"name": "Reinier Looij Groenbeheer"
hiringOrganization.sameAs
Aanbevolen (Google) Google URL

Link naar het officiële bedrijfsprofiel: website, LinkedIn of Google Business Profile.

  • Helpt Google de juiste entiteit te koppelen.
  • Gebruik één stabiele URL (meestal de homepage).
"sameAs": "https://www.reinierlooij.nl"
hiringOrganization.logo
Aanbevolen (Google) Google URL

Logo van de werkgever. Wordt soms getoond in rich results.

  • Aanbevolen. Publiek bereikbare HTTPS-URL.
  • Vierkant of breedbeeld; minimaal ~112×112 px.
  • Geen data-URI of login-beschermde URL.
"logo": "https://www.example.nl/logo.png"

Locatie

Waar het werk plaatsvindt, of dat het remote is. Google onderscheidt fysieke locaties (jobLocation) van thuiswerk (jobLocationType TELECOMMUTE).

jobLocation
Vereist (Google) Google Place

Fysieke werklocatie als Place-object met PostalAddress. Verplicht voor on-site en hybride vacatures.

  • Verplicht wanneer jobLocationType niet TELECOMMUTE is.
  • Minimaal addressCountry verplicht als jobLocation aanwezig is.
  • addressLocality of addressRegion sterk aanbevolen voor lokale vacatures.
jobLocation.@type
Vereist (Google) Google Text

Type van de locatie.

  • Waarde: Place
"@type": "Place"
jobLocation.address
Vereist (Google) Google PostalAddress

Postadres van de werklocatie.

  • Bevat @type PostalAddress en land/regio/plaats velden.
jobLocation.address.streetAddress
Aanbevolen (Google) Google Text

Straat en huisnummer.

  • Optioneel maar verbetert lokale relevantie.
"streetAddress": "Industrieweg 12"
jobLocation.address.addressLocality
Aanbevolen (Google) Google Text

Plaatsnaam (stad of dorp).

  • Aanbevolen. Minimaal locality óf region moet gevuld zijn.
  • Voor NL: “Dirksland”, “Middelharnis”.
"addressLocality": "Dirksland"
jobLocation.address.addressRegion
Aanbevolen (Google) Google Text

Provincie of regio.

  • Aanbevolen als alternatief of aanvulling op locality.
  • Nederland: “Zuid-Holland”, “Zeeland”.
"addressRegion": "Zuid-Holland"
jobLocation.address.postalCode
Aanbevolen (Google) Google Text

Postcode.

  • Aanbevolen voor NL-vacatures (bijv. 3247 AB).
"postalCode": "3247 AB"
jobLocation.address.addressCountry
Vereist (Google) Google Text (ISO 3166-1 alpha-2)

Landcode in twee letters.

  • Verplicht wanneer jobLocation aanwezig is.
  • Nederland: NL
"addressCountry": "NL"
jobLocationType
Aanbevolen (Google) Google Text

Geeft remote werk aan. Enige waarde die Google erkent voor thuiswerk: TELECOMMUTE.

  • Zet op TELECOMMUTE voor volledig remote vacatures.
  • Bij TELECOMMUTE: jobLocation is optioneel, maar applicantLocationRequirements is verplicht.
  • Laat weg voor on-site vacatures.
"jobLocationType": "TELECOMMUTE"
applicantLocationRequirements
Aanbevolen (Google) Google Country

Land(en) waar de kandidaat mag wonen bij remote werk.

  • Verplicht wanneer jobLocationType = TELECOMMUTE.
  • Gebruik @type Country en name met ISO-landcode of landnaam.
"applicantLocationRequirements": { "@type": "Country", "name": "NL" }

Vacature-ID (identifier)

Unieke referentie per vacature. Helpt Google duplicaten te herkennen wanneer dezelfde functie op meerdere URL’s staat.

identifier
Aanbevolen (Google) Google PropertyValue

Interne vacature-ID of referentienummer.

  • Aanbevolen object met @type PropertyValue.
  • name: bron of systeem (bijv. bedrijfsslug of “ATS”).
  • value: unieke ID per posting.
"identifier": { "@type": "PropertyValue", "name": "reinier-looij", "value": "verkoop-medewerker" }

Dienstverband (employmentType)

Type contract of dienstverband. Google accepteert alleen vaste enum-waarden.

employmentType
Aanbevolen (Google) Google Text of array

Soort dienstverband.

  • Aanbevolen. Geldige waarden: FULL_TIME, PART_TIME, CONTRACTOR, TEMPORARY, INTERN, VOLUNTEER, PER_DIEM, OTHER.
  • Meerdere types mogelijk als array, bijv. [PART_TIME, CONTRACTOR].
  • Gebruik geen vrije tekst (“vast dienstverband”) — alleen de enum.
"employmentType": "FULL_TIME"
workHours
Schema.org extra Text

Beschrijving van uren per week (Schema.org, niet Google-verplicht).

  • Vrije tekst, bijv. “32–40 uur per week”.
  • jobpost.tech mapt dit vanuit het admin-veld work_hours.
"workHours": "36 uur per week"

Salaris (baseSalary)

Salarisindicatie in MonetaryAmount. Google toont salaris soms in zoekresultaten wanneer dit correct is ingevuld.

baseSalary
Aanbevolen (Google) Google MonetaryAmount

Bruto salaris of salarisrange.

  • Aanbevolen. Object met @type MonetaryAmount.
  • currency: ISO 4217 (EUR voor euro).
  • value: QuantitativeValue met bedrag en periode.
baseSalary.currency
Aanbevolen (Google) Google Text

Valutacode van drie letters.

  • Verplicht als baseSalary aanwezig is. NL: EUR.
"currency": "EUR"
baseSalary.value.unitText
Aanbevolen (Google) Google Text

Salarisperiode.

  • HOUR, DAY, WEEK, MONTH of YEAR.
  • Vast dienstverband NL: meestal MONTH of YEAR.
"unitText": "MONTH"
baseSalary.value.value | minValue / maxValue
Aanbevolen (Google) Google Number

Enkel bedrag of range.

  • Geef value voor vast bedrag, of minValue + maxValue voor range.
  • Minimaal één van deze drie is verplicht als baseSalary aanwezig is.
  • Gebruik punten als decimaalteken in JSON (2500.00).
"value": { "@type": "QuantitativeValue", "minValue": 2800, "maxValue": 3400, "unitText": "MONTH" }

Solliciteren (directApply)

Of kandidaten direct op de vacaturepagina kunnen solliciteren zonder extra tussenstappen.

directApply
Aanbevolen (Google) Google Boolean

true wanneer sollicitatie op dezelfde pagina start (formulier, e-mailknop, ATS-widget). false wanneer eerst doorgestuurd wordt.

  • Aanbevolen. Moet overeenkomen met de werkelijke sollicitatieflow.
  • false als gebruikers eerst moeten inloggen op een extern portaal zonder sollicitatieformulier.
"directApply": true
applicationContact
Schema.org extra ContactPoint

Contact voor sollicitaties (Schema.org extra). jobpost.tech vult dit vanuit tenant/job contactgegevens.

  • Optioneel ContactPoint met email, telephone of url.
  • Niet verplicht voor Google, wel nuttig voor crawlers en ATS-koppelingen.
"applicationContact": { "@type": "ContactPoint", "email": "vacatures@example.nl" }

Beta-velden (opleiding & ervaring)

Door Google als beta gemarkeerd. Ondersteuning kan wijzigen; jobpost.tech valideert ze maar telt ze niet mee in de schema-score.

educationRequirements
Beta (Google) Google EducationalOccupationalCredential

Minimaal vereist opleidingsniveau.

  • Beta. credentialCategory bevat het niveau (bijv. bachelor degree, vocational).
"educationRequirements": { "@type": "EducationalOccupationalCredential", "credentialCategory": "vocational" }
experienceRequirements
Beta (Google) Google OccupationalExperienceRequirements

Vereiste werkervaring in maanden.

  • Beta. monthsOfExperience als geheel getal.
"experienceRequirements": { "@type": "OccupationalExperienceRequirements", "monthsOfExperience": 24 }
experienceInPlaceOfEducation
Beta (Google) Google Boolean

Of ervaring in plaats van formele opleiding acceptabel is.

  • Beta. true of false.
"experienceInPlaceOfEducation": true

Schema.org extra’s

Aanvullende velden die jobpost.tech kan emittersen. Niet verplicht voor Google, wel waardevol voor rijkere vacaturedata.

qualifications
Schema.org extra Text

Korte samenvatting van kwalificaties en eisen.

  • Platte tekst of HTML-afhankelijk van implementatie.
"qualifications": "MBO niveau 2+, rijbewijs B"
skills
Schema.org extra Text

Benodigde vaardigheden.

  • Bijv. “HTML, klantcontact, heftruckcertificaat”.
"skills": "Klantgericht, teamplayer, administratief sterk"
jobBenefits
Schema.org extra Text

Arbeidsvoorwaarden en secundaire benefits.

  • Bijv. pensioen, leasefiets, opleidingsbudget.
"jobBenefits": "25 vakantiedagen, pensioenregeling, reiskostenvergoeding"

Volgende stap

Controleer een live vacaturepagina of deel een link met een werkgever die nog geen structured data heeft.

Open JobPosting checker
Zelfde veldcatalogus als in jobpost.tech validatie · Schema.org JobPosting