JobPosting Schema Markup (JSON-LD Blueprint)
Standard recruitment structured data required for inclusion in Google for Jobs search portal and career cards.
Displayed below main page header or above the tool container. • Zero CLS Container
Production JSON-LD Code Block
Embed this structured data block directly into your HTML <head> or framework layout template.
{
"@context": "https://schema.org",
"@type": "JobPosting",
"title": "Senior Technical SEO Architect",
"description": "<p>OmniSEO Tools is hiring a Staff Technical SEO Architect to build high-scale programmatic infrastructure and client-side web tools.</p><h3>Requirements:</h3><ul><li>5+ years Next.js App Router experience</li><li>Deep mastery of Schema.org JSON-LD</li><li>Expertise in Core Web Vitals optimization</li></ul>",
"datePosted": "2026-10-01",
"validThrough": "2026-12-31T23:59:59+00:00",
"employmentType": "FULL_TIME",
"hiringOrganization": {
"@type": "Organization",
"name": "OmniSEO Technologies Inc.",
"sameAs": "https://omniseotools.com",
"logo": "https://omniseotools.com/images/logo.png"
},
"jobLocation": {
"@type": "Place",
"address": {
"@type": "PostalAddress",
"streetAddress": "Sheikh Zayed Road",
"addressLocality": "Dubai",
"addressRegion": "Dubai",
"postalCode": "9292",
"addressCountry": "AE"
}
},
"jobLocationType": "TELECOMMUTE",
"applicantLocationRequirements": {
"@type": "Country",
"name": "Worldwide"
},
"baseSalary": {
"@type": "MonetaryAmount",
"currency": "USD",
"value": {
"@type": "QuantitativeValue",
"minValue": 140000,
"maxValue": 180000,
"unitText": "YEAR"
}
}
}Typed Properties Specification (8 Fields)
Key Schema.org properties and sub-objects required to qualify for rich snippet treatment in Google Search.
| Property | Expected Type | Status | Description & Example |
|---|---|---|---|
| title | Text | Required | Job position title without marketing fluff. e.g. Senior Technical SEO Architect |
| description | HTML / Text | Required | Full HTML formatted job description with responsibilities and qualifications. e.g. <p>OmniSEO Tools is hiring...</p> |
| datePosted | Date (ISO 8601) | Required | Date the job opening was published. e.g. 2026-10-01 |
| validThrough | DateTime (ISO 8601) | Required | Expiration deadline for job applications. e.g. 2026-12-31T23:59:59+00:00 |
| employmentType | Text | Required | FULL_TIME, PART_TIME, CONTRACT, TEMPORARY, INTERN. e.g. FULL_TIME |
| hiringOrganization | Organization | Required | The employing company entity. e.g. { "@type": "Organization", "name": "..." } |
| baseSalary | MonetaryAmount | Recommended | Salary compensation range with currency and unitText. e.g. { "@type": "MonetaryAmount", ... } |
| jobLocationType | Text | Recommended | Set to TELECOMMUTE for 100% remote positions. e.g. TELECOMMUTE |
Google Search Console Pitfalls & Critical Warnings
Avoid these 3 common validation traps, parser errors, and algorithmic policy penalties when deploying JobPosting schema.
Expired validThrough Timestamps Causing Silent Delisting
Leaving job postings live when validThrough is in the past causes Google for Jobs to drop the listing automatically.
Keep validThrough refreshed or remove expired job listings immediately.
Omitting jobLocationType on Remote Positions
Advertising a remote role without jobLocationType: 'TELECOMMUTE' forces Google to categorize it as local to the headquarter city.
Add jobLocationType: 'TELECOMMUTE' and applicantLocationRequirements.
Stuffing Job Titles with Hiring Tags ('Hiring Now!')
Using clickbait titles like 'Senior Engineer (HIRING URGENTLY)' violates Google recruitment guidelines.
Use clean, industry-standard professional titles.
Recommended Implementation Scenarios
Related Schema Blueprints
Explore complementary structured data blueprints across the Organization & Identity cluster.
Displayed below main page header or above the tool container. • Zero CLS Container