JobPosting schema
JobPosting is the entry ticket to Google for Jobs — the dedicated job search UI that takes over the SERP for queries like "frontend jobs near me." Without valid JobPosting schema, you are not in that index, no matter how many backlinks you have.
Required fields
- title — the role title only. No location, no seniority modifier in this field.
- description — full description. HTML allowed (and recommended) for paragraph breaks and lists.
- datePosted — ISO 8601.
- hiringOrganization —
Organizationwithname.sameAs(org website) andlogoare strongly recommended. - jobLocation —
Placewith a fullPostalAddress. For remote, see below.
Recommended (and effectively required since 2024)
- validThrough — ISO 8601 timestamp. Without this, Google removes the listing after 30 days of being live, regardless of whether the job is still open. Always set this.
- employmentType —
FULL_TIME,PART_TIME,CONTRACTOR,TEMPORARY,INTERN,VOLUNTEER,PER_DIEM, orOTHER. Used as a filter chip in Google for Jobs. - baseSalary —
MonetaryAmountwithcurrency,value(orminValue/maxValue), andunitText(HOUR,DAY,WEEK,MONTH,YEAR). Strongly impacts click-through.
Remote jobs
Remote jobs need jobLocationType: "TELECOMMUTE" plus applicantLocationRequirements with a
country code. The actual jobLocation should still be the hiring company's office address; the
two together signal "this is remote, but legally based here."
Common mistakes
- Missing
validThrough. The single biggest reason job listings drop out of Google for Jobs. - Multiple roles on one page. Each role = one URL. Roundup pages are not eligible.
- HTML in
title. Plain text only. - Posting expired jobs. Listings that 404 or return "this job is no longer available" trigger manual actions.
CMS notes
- WordPress (WP Job Manager): emits JobPosting schema; check that
validThroughmatches your listing expiry rule. - ATS (Greenhouse, Lever, Workable): their public job board pages emit JobPosting schema by
default. Use their pages as canonical; if you mirror to your own site, add a
rel="canonical"back to the ATS page. - Custom careers page: build the JSON-LD from the same data the page renders to avoid drift.
Generate it below
Last verified: 2026-05-15. Found something inaccurate? Email hello@schemapreview.dev.