Schema.org for Google Jobs: How to Structure Job Postings That Actually Get Found
Schema.org JobPosting markup is the structured data format required to get job listings indexed in Google Jobs. It must include title, hiringOrganization, jobLocation, datePosted, description, and validThrough — missing any required field causes Google to ignore the listing entirely.
Schema.org for Google Jobs: How to Structure Job Listings That Actually Get Found
Last updated: 11 September 2026
Most companies post job openings on their website and assume Google will figure out the rest. It won't. Without a correctly implemented JobPosting schema markup, your vacancy sits invisible in Google's index — while competitors with properly structured data appear directly in Google Jobs results at the top of the search page. That gap between "posted a job" and "got qualified applicants from Google" is almost always a technical one, not a content one.
Why Google Jobs Is a Recruitment Channel Worth Taking Seriously
Google Jobs is not a job board — it is a structured data aggregator built directly into Google Search. When a user searches for "marketing manager Vienna" or "software developer remote Austria," Google displays a dedicated job listing panel above organic results. Visibility in that panel depends entirely on whether your JobPosting schema is correctly implemented, complete, and crawlable.
"The difference between appearing in Google Jobs and not appearing is not the quality of your job description — it is whether Google can parse your structured data at all."
This matters especially for SMBs that cannot afford to pay LinkedIn or StepStone placement fees month after month. A well-structured careers page with correct schema markup is a permanent, cost-free channel for inbound applications — but only if the technical foundation is right.
For context: Google AI Overviews now dominate European search results in 2026, and zero-click rates are rising. Structured data — including JobPosting schema — is one of the few mechanisms that can still drive direct user engagement within a Google results page. Generative Engine Optimization (GEO) is no longer optional for companies that rely on organic search visibility.
The JobPosting Schema: What Google Actually Requires
The JobPosting schema type is defined by Schema.org and validated by Google's Rich Results Test. Google's documentation specifies a set of required and recommended properties. Getting the required fields wrong means Google will silently exclude your listing from the Jobs panel — no error notification, no fallback.
Required Properties (No Exceptions)
These fields must be present and correctly formatted:
- `title` — The job title, written as candidates search for it. Not "Join Our Awesome Team" — exactly "Senior Full Stack Developer" or "Marketing Manager (m/f/d)."
- `description` — A full HTML description of the role. Google requires substantive content here. A three-sentence teaser will not qualify.
- `datePosted` — ISO 8601 format:
2026-09-11. Incorrect date formatting is one of the most common silent failures. - `hiringOrganization` — Must include
nameand ideallysameAs(your company website URL) andlogo. - `jobLocation` — A nested
PostalAddressobject. City-only values like"Vienna"without a country code frequently fail validation. - `validThrough` — The expiry date for the listing. Google will eventually demote or remove listings without this field.
Recommended Properties That Recruiters Skip
Google's documentation labels these "recommended," but in practice they significantly affect whether your listing surfaces for relevant queries:
- `employmentType` — Use the enumerated values:
FULL_TIME,PART_TIME,CONTRACTOR,TEMPORARY,INTERN. Freeform text like "40 hours/week" is not parsed. - `baseSalary` — Austria, Germany, and Switzerland all have salary transparency expectations, and the EU Pay Transparency Directive is already shaping candidate behaviour. Listings with
baseSalarypopulated consistently outperform those without it. - `jobLocationType` — If the role is remote, use
TELECOMMUTE. Without this, your remote listing will not appear for location-independent job searches. - `applicantLocationRequirements` — Required when
jobLocationTypeisTELECOMMUTE. Specify the country or region.
The Most Frequent Implementation Errors (And Why They're Hard to Spot)
Wrong Script Type or Placement
JobPosting schema must be delivered as application/ld+json embedded in the <head> or <body> of the page containing the job listing. Microdata and RDFa implementations are technically valid but significantly harder to maintain and more error-prone. Most modern stacks — including Next.js, Nuxt, and Astro — make application/ld+json injection straightforward via a layout component or a CMS-controlled script field.
One pattern that breaks silently: delivering schema only via client-side JavaScript that renders after the initial HTML load. Googlebot's crawler handles JavaScript, but delayed rendering introduces inconsistency in when and whether the schema is indexed. Server-side rendering or static generation with schema embedded at build time is the reliable approach.
Mismatched URLs
The url property in your JobPosting object must point to the exact canonical URL of the job listing page. If your CMS generates dynamic URLs with session tokens or redirects the job detail page through a different path, Google may reject the schema because the markup URL does not match the crawled URL.
Expired Listings Left Live
This is the most common mistake SMBs make. A job listing with validThrough set to a past date that remains indexed tells Google you are publishing stale data. Over time, this signals poor data quality, which can affect how Google treats your entire domain's structured data. Remove or unpublish job postings within 24–48 hours of closing the role, or update the validThrough date immediately.
Generic hiringOrganization Entries
Writing "name": "Company" or leaving out the sameAs URL is a missed opportunity. Google uses the hiringOrganization object to cross-reference your company's Knowledge Graph entity. A correctly matched sameAs URL — pointing to your primary domain — increases the likelihood that Google associates your job listings with your verified company entity.
A Real-World Implementation: The E-TEC / TMC Schema Generator
During work with E-TEC GmbH and TMC Consulting, EA Digital Solutions built a custom Schema Markup Generator specifically for JobPosting structured data. The challenge was volume and consistency: the client was publishing multiple job listings per week across different departments, and manual schema creation introduced frequent validation errors — particularly around datePosted formatting, employmentType enum values, and incomplete PostalAddress nesting.
The solution was a form-driven generator that outputs validated application/ld+json blocks ready for direct injection into their CMS. The form enforces required fields, uses dropdown selectors for enumerated values (eliminating freeform employmentType errors), and automatically formats dates to ISO 8601. The output also includes the validThrough field pre-populated with a 60-day expiry, with a reminder system to update or remove the listing.
This kind of custom tooling solves a problem that no off-the-shelf plugin fully addresses: ensuring schema correctness at the point of content creation, not as an afterthought during a technical audit.
For context on how structured data fits into a broader technical SEO strategy, the article on SEO and Generative Engine Optimization covers the dual-channel approach that makes sense for DACH companies in 2026.
Technical Validation: Tools That Actually Tell You What's Wrong
Google's Rich Results Test
The primary validation tool. Paste your job listing URL or raw HTML and it will tell you exactly which required properties are missing, which values fail validation, and whether your listing qualifies for rich results. Run this every time you publish a new job or modify your schema template.
URL: search.google.com/test/rich-results
Google Search Console
Search Console's "Enhancements" section shows JobPosting coverage across your entire site — valid items, items with warnings, and items with errors. This is where you see patterns across all your listings, not just individual pages. If you see a spike in errors after a CMS update or template change, this is where it surfaces.
Schema.org Validator
The official Schema.org validator (validator.schema.org) checks conformance against the Schema.org specification rather than Google's specific requirements. Useful for catching issues that Google's test might not surface, particularly around nested object structures.
Structured Data and the EU AI Act: An Overlooked Angle
The EU AI Act has been in full effect since August 2026, with high-risk AI obligations now binding. Recruitment tools that use AI for candidate screening or matching are classified as high-risk AI systems under Annex III of the Act. While JobPosting schema itself is not directly regulated, there is an indirect connection: companies using AI-assisted recruitment must provide transparency about their hiring processes.
Structured data on job listings — particularly salary ranges, employment type, and clear job requirements — contributes to the transparency baseline the regulation expects. If your ATS or recruitment platform uses AI ranking of candidates, the clarity of your JobPosting data directly affects the quality of input those systems process.
This is not a compliance technicality to defer. AI integration projects that touch recruitment workflows need to account for EU AI Act obligations at the system design stage, not during a post-launch audit.
CMS Integration: How to Automate Schema Generation at Scale
For companies publishing more than five job listings per month, manual schema creation is not a sustainable workflow. The right approach depends on your tech stack:
WordPress / Yoast SEO / RankMath: Both plugins support JobPosting schema via their local business or job posting modules. The coverage is reasonable but requires manual field-by-field entry and does not enforce enum validation.
Headless CMS (Contentful, Sanity, Payload CMS): The cleanest implementation. Define a JobPosting content model with typed fields — dropdowns for employmentType, date pickers for datePosted and validThrough, nested address objects for jobLocation — and generate the application/ld+json block server-side at render time. This eliminates the class of errors caused by human formatting inconsistency.
Custom ATS Integration: If your applicant tracking system is the source of truth for job data, building an API integration that pulls job data from the ATS and generates schema-compliant output for your careers page is the highest-reliability approach. Data stays in sync automatically; no manual re-entry required.
The EA Digital Solutions own platform — built on Next.js 15 and Payload CMS — uses a server-side schema generation pattern where structured data is computed from CMS content fields and injected into the page <head> at build time. The same pattern applies cleanly to job listing pages.
If your architecture question is more fundamental — whether to build on a custom stack versus WordPress — the comparison in Next.js + Payload CMS vs WordPress is a relevant starting point. For the specific technical SEO implications of structured data across different content types, the Schema.org for Google Jobs deep-dive covers the German-language perspective in more detail.
Frequently Asked Questions
What fields are required for a valid Google Jobs JobPosting schema?▾
Google requires at minimum: title, hiringOrganization (with name and sameAs), jobLocation (with PostalAddress), datePosted, description, and validThrough. Optional but strongly recommended fields include baseSalary, employmentType, and directApply — these increase click-through rates measurably and improve ranking in Google Jobs results.
Why is my job posting not appearing in Google Jobs despite having schema markup?▾
The most common causes are: missing or malformed validThrough dates, jobLocation set to a vague region instead of a full PostalAddress, and description fields stripped of meaningful content. Google also penalizes markup that doesn't match the visible page content — if the structured data says 'Berlin' and the page says 'Remote Europe,' the listing will be suppressed.
How does the EU AI Act affect AI-generated job postings with schema markup?▾
As of August 2026, AI-generated content used in hiring processes falls under the EU AI Act's high-risk category for employment-related AI systems. This means organizations using AI to write job descriptions must maintain audit trails and ensure the content does not introduce discriminatory language. If an AI tool generates your job posting copy, you need documented oversight before publishing.
When should remote or hybrid jobs use a different jobLocation format?▾
For fully remote roles, Google supports the jobLocationType property set to 'TELECOMMUTE' combined with applicantLocationRequirements to specify geographic eligibility. Hybrid roles should still include a physical PostalAddress in jobLocation alongside the remote indicator — omitting the physical address for hybrid positions is one of the top reasons those listings fail validation in 2026.
What tools can developers use to validate JobPosting schema before going live?▾
Google's Rich Results Test and Schema.org's validator are the two primary tools. For CI/CD pipelines, Structured Data Linter and Zyte's schema testing libraries can be integrated to catch markup errors before deployment. Given the European Accessibility Act requirements now in force for B2C sites, schema validation should run alongside accessibility audits — both affect how Google indexes and surfaces your pages.
New articles delivered straight to your inbox
- ✓New articles delivered to your inbox
- ✓Digital marketing tips for SMEs
- ✓No spam, unsubscribe anytime
More articles
Next.js + Payload CMS vs WordPress: Why We Made the Switch — and When WordPress Still Wins
WordPress powers millions of sites — but for performance-critical, compliant, scalable builds in 2026, Next.js + Payload CMS is the sharper tool.

AWS Grants for Digitalization Projects: How Austrian SMEs Secure Up to 50% Funding
The AWS Digitalization Grant funds Austrian SMEs with 35–50% of costs for websites, software, AI, and automation. Amounts, process, and key pitfalls explained.
When Off-the-Shelf Shop Systems Hit Their Limits: The Case for Custom E-Commerce Development
Shopify and WooCommerce solve 80% of e-commerce problems. The other 20% can silently kill your margins, your speed, and your compliance standing.
