Schema.org for Careers Pages: The 2026 Guide to JobPosting + Employer Data
Schema.org markup is the most cost-effective AI visibility investment most employers can make. It's free, it's technical rather than creative, it propagates across every AI system simultaneously, and it's the single category where most UK employers are under-investing. 72% of the 500 employers in our 2026 dataset have no structured employer data (JSON-LD Organization schema) at all. 58% don't publish salary data in any machine-readable format. Closing this gap, for most organisations, takes 1–3 weeks of technical work.
This post is the 2026 tag-by-tag field guide. It covers the two schema types that matter most (JobPosting and Organization), the one schema type most employers overlook (FAQPage), and the extensions we expect to matter by year-end.
Why schema matters now more than before
Three things changed in the last 18 months:
- Google AI Mode explicitly weights structured data when generating employer-related summaries. The schema is no longer "a signal to crawlers"; it's the primary input to the AI summary.
- ChatGPT, Perplexity, and Claude all now parse JSON-LD when ingesting pages. Pre-2024, they leaned more on prose; current-generation RAG pipelines lean heavily on structured data.
- Candidate-agent platforms (auto-apply tools) require structured data to decide whether to submit. A role without proper JSON-LD gets ignored by several auto-apply systems.
The net effect: schema investment that would have yielded 2–3× more Google Jobs visibility three years ago now yields that plus citation across four major LLMs plus inclusion in auto-apply funnels. The compounding is significant.
JobPosting: every field, every mistake
Here's a full, production-quality JobPosting with annotations on each field.
{
"@context": "https://schema.org/",
"@type": "JobPosting",
"title": "Senior Platform Engineer",
"description": "Full HTML-allowed description of the role, including responsibilities, requirements, team, and application process. Recommended 700-2000 characters.",
"identifier": {
"@type": "PropertyValue",
"name": "Acme Corp",
"value": "req-2026-042"
},
"datePosted": "2026-04-07",
"validThrough": "2026-06-07T23:59",
"employmentType": ["FULL_TIME"],
"hiringOrganization": {
"@type": "Organization",
"name": "Acme Corp",
"sameAs": "https://acmecorp.com",
"logo": "https://acmecorp.com/logo.png"
},
"jobLocation": {
"@type": "Place",
"address": {
"@type": "PostalAddress",
"streetAddress": "12 High Street",
"addressLocality": "London",
"addressRegion": "Greater London",
"postalCode": "W1A 1AA",
"addressCountry": "GB"
}
},
"applicantLocationRequirements": {
"@type": "Country",
"name": "United Kingdom"
},
"jobLocationType": "TELECOMMUTE",
"baseSalary": {
"@type": "MonetaryAmount",
"currency": "GBP",
"value": {
"@type": "QuantitativeValue",
"minValue": 75000,
"maxValue": 95000,
"unitText": "YEAR"
}
},
"workHours": "37.5 per week, flexible",
"industry": "Software Development",
"occupationalCategory": "15-1252.00 Software Developers",
"skills": "Python, Kubernetes, PostgreSQL, AWS, distributed systems, SRE fundamentals",
"educationRequirements": "Bachelor's degree or equivalent experience",
"experienceRequirements": "5+ years software engineering experience",
"directApply": true
}
Required and recommended fields, ranked
| Field | Priority | Notes |
|---|---|---|
title | Required | Match the exact role name you use externally |
description | Required | HTML allowed; invest in quality |
datePosted | Required | ISO 8601 format |
validThrough | Recommended | Add it — Google demotes roles without it |
hiringOrganization | Required | Must match your Organization schema exactly |
jobLocation | Required unless fully remote | Full PostalAddress expected |
employmentType | Recommended | Array form; use controlled vocabulary |
baseSalary | Critical for AI | Single biggest miss in UK dataset |
applicantLocationRequirements | Required for remote | Use Country, not a string |
jobLocationType | Required for remote | Must be "TELECOMMUTE" literal |
skills | High-yield | Comma-separated string, current convention |
directApply | New in 2024 | Tells Google candidates can apply on your site |
identifier | Useful | Stable ID across your ATS and your schema |
The five most common mistakes
1. Missing baseSalary entirely. 58% of UK employers. This one field does more for your AI citation share than any other. Fix first.
2. Mismatched hiringOrganization names. The Organization schema on your careers landing page says "Acme Corporation Ltd." The JobPosting schemas say "Acme Corp." Schema parsers fail to link these; Google's Knowledge Graph treats them as separate entities.
3. validThrough missing or in the past. Google demotes job postings that appear expired. Many employers write the schema once and never update. Either add validThrough as 60–90 days from datePosted, or remove expired roles.
4. String instead of structured applicantLocationRequirements. "UK only" in a string field isn't parseable. Use the nested Country type.
5. employmentType as a free-text string. The controlled values are: FULL_TIME, PART_TIME, CONTRACTOR, TEMPORARY, INTERN, VOLUNTEER, PER_DIEM, OTHER. Use exactly these (as an array if multiple). "Full-time, hybrid" in a string loses both pieces of information.
Organization: the careers landing page schema
On your main careers page (the one at /careers or /jobs), emit an Organization schema. This is where AI systems verify you're a real company and extract your foundational data.
{
"@context": "https://schema.org/",
"@type": "Organization",
"name": "Acme Corporation Ltd",
"legalName": "Acme Corporation Limited",
"url": "https://acmecorp.com",
"logo": "https://acmecorp.com/logo-500x500.png",
"sameAs": [
"https://www.linkedin.com/company/acme-corp",
"https://en.wikipedia.org/wiki/Acme_Corporation",
"https://find-and-update.company-information.service.gov.uk/company/01234567",
"https://twitter.com/acmecorp",
"https://github.com/acmecorp"
],
"vatID": "GB123456789",
"iso6523Code": "0060:1234567890",
"taxID": "12345678",
"foundingDate": "2009-03-15",
"numberOfEmployees": {
"@type": "QuantitativeValue",
"value": 450
},
"address": {
"@type": "PostalAddress",
"streetAddress": "12 High Street",
"addressLocality": "London",
"addressRegion": "Greater London",
"postalCode": "W1A 1AA",
"addressCountry": "GB"
},
"description": "Acme Corporation builds developer tooling for distributed systems, headquartered in London with offices in Berlin and Boston. Founded 2009.",
"industry": "Software Development"
}
The sameAs array is the single highest-value field and the one most employers under-populate. Every link cross-references your identity and increases verification weight across AI systems. The Companies House link in particular is rarely included and uniquely valuable — it's a government-authoritative cross-check.
FAQPage: the hidden AI-citation engine
FAQPage is the schema most employers ignore and the one AI systems cite most eagerly. Every candidate-intent question you can anticipate should appear as a Question/Answer pair in your schema.
{
"@context": "https://schema.org/",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "What's the interview process at Acme Corp?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Our standard interview process is five stages over 3-4 weeks: (1) CV review, (2) 45-minute introductory call with the recruiter, (3) 60-minute technical screening, (4) 3-hour on-site with the hiring team, (5) reference check and offer. We aim to provide feedback within 5 working days of each stage."
}
},
{
"@type": "Question",
"name": "What's the salary range for software engineers at Acme Corp?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Software engineer base salaries at Acme Corp range from £55,000 for entry-level roles to £120,000 for principal-level roles in 2026. Senior engineers (3-5 years) typically fall in the £75,000-£95,000 band. All roles also include equity and bonus; detailed compensation breakdowns are shared at offer stage."
}
}
]
}
Scale this to 15–25 questions. Cover: compensation, interview process, remote policy, benefits, culture, day-in-the-life, parental leave, sabbatical, manager ratio, performance review frequency, and hiring timelines.
Three implementation points:
- Answers should be self-contained — they get pulled as stand-alone snippets into AI answers, so they should make sense without surrounding context.
- Keep answers under 200 words. Longer answers get truncated unpredictably across systems.
- Update quarterly. FAQ drift (answers that no longer match reality) is a trust-delta problem and AI systems will notice.
Extensions worth considering in 2026
Review schema for employee voices
If you publish employee testimonials on your careers site, wrap them in Review schema with named authors. AI systems treat attributed reviews as semi-independent content — helpful for balancing Glassdoor drift.
Event schema for careers events
Job fairs, open house events, returnship programme launches — Event schema surfaces in Google Jobs-adjacent surfaces and candidate-intent searches.
Dataset schema for transparency reports
If you publish compensation benchmarks, DEI reports, or hiring statistics, Dataset schema tells AI these are structured data sources worth extracting. Unusual but high-signal.
Custom hiring extensions (experimental)
Some employers are beginning to add custom fields for interview-process structure and company metrics that aren't in the base spec. These won't be recognised by all AI systems yet, but forward-looking employers are experimenting with proprietary extensions they expect to propose upstream in the spec.
Testing your schema
Three tools every employer should use on every page:
- Google's Rich Results Test (
search.google.com/test/rich-results). Strictest parser. Pass this or your Google Jobs visibility suffers. - Schema.org Validator (
validator.schema.org). More permissive; catches semantic errors Google's tool misses. - Your own manual AI query test — ask the four major AI systems questions that should pull from your schema. If answers are still vague, the schema isn't being picked up or the fields you care about aren't included.
The 2026 minimum-viable schema stack
If you do nothing else this quarter:
Organizationschema on the careers landing page, with fullsameAsincluding Companies HouseJobPostingschema on every live role with fullbaseSalary, correctemploymentType, andvalidThroughFAQPageschema with 15+ question-answer pairs on a canonical FAQ URLrobots.txtexplicitly allowingGPTBot,OAI-SearchBot,ClaudeBot,PerplexityBot,Google-Extended, andBytespider- An
llms.txtfile at/llms.txtas the plain-text companion
These five moves take 1–3 engineer-weeks in total and move most UK employers from the bottom quintile of agent readiness into the middle quintile. The compounding starts immediately; citation improvements typically show within 4–8 weeks.
Frequently Asked Questions
Q: Where should the JSON-LD go in the HTML?
A: In a <script type="application/ld+json"> block in the <head> or just before </body>. Both work; <head> is slightly more reliable for AI crawlers.
Q: Can we have multiple schema blocks on one page?
A: Yes. Multiple <script type="application/ld+json"> blocks are allowed and encouraged — one per schema type. Keep them logically separated.
Q: Does schema hurt page performance?
A: Negligibly. Schema JSON-LD typically adds 1–5KB per page. The performance cost is trivial; the SEO and AI-citation benefit is substantial.
Q: What about the Breadcrumb, BreadcrumbList, WebPage, and other types?
A: Useful but secondary for careers pages specifically. Focus on JobPosting + Organization + FAQPage first; add the structural types once the primary three are in place.
Q: Should we use microdata (inline HTML attributes) or JSON-LD?
A: JSON-LD. It's Google's recommendation, it's easier to maintain, and it's the format every AI crawler is best at parsing.
Q: Does dynamically-injected schema (client-side JavaScript) work?
A: Partially. Google's crawler executes JavaScript, but not all AI crawlers do. Server-side rendered schema is strictly better for AI visibility.
Generate compliant schema with OpenRole's free tool — paste your careers URL, get ready-to-deploy Organization + JobPosting + FAQPage JSON-LD.
Related reading: