Structured dataIntermediate

JobPosting Schema

JobPosting schema describes a job opening with title, description, location, dates and pay, making careers pages eligible for Google's job search experience.

Also called: Job posting structured data, Google for Jobs markup

JobPosting is the Schema.org type for a job opening. Google uses it to include listings in its job search experience, often called Google for Jobs, where candidates can filter by location, date and pay. Google requires title, description, datePosted, hiringOrganization and jobLocation, or remote-work details for fully remote roles.

Remote roles

For a role with no office location, set jobLocationType to TELECOMMUTE and use applicantLocationRequirements to state the countries or regions candidates must be in. Hybrid roles should list the office in jobLocation. Accurate location data matters, since it decides where the job appears.

{
  "@context": "https://schema.org",
  "@type": "JobPosting",
  "title": "Senior Backend Engineer",
  "description": "<p>Build the ingestion pipeline...</p>",
  "datePosted": "2026-10-01",
  "validThrough": "2026-12-01T00:00:00Z",
  "hiringOrganization": { "@type": "Organization", "name": "Marlpit" },
  "jobLocationType": "TELECOMMUTE",
  "applicantLocationRequirements": { "@type": "Country", "name": "US" },
  "baseSalary": { "@type": "MonetaryAmount", "currency": "USD",
    "value": { "@type": "QuantitativeValue", "minValue": 150000,
      "maxValue": 185000, "unitText": "YEAR" } }
}

Keeping listings fresh

Set validThrough when a posting has an end date, and remove the markup or the page when a job is filled. Google supports its Indexing API for JobPosting pages so sites can notify it when postings are added or removed. Applicant tracking systems often output JobPosting markup on hosted job boards, so check whether yours does before adding your own.

Content guidelines

Google's job posting policies require that the page shows the full job description, that the markup matches it, and that the listing is a real opening. Expired listings left live, or listings that require payment to apply, can lead to manual actions.

Example

A careers page on an ATS

Marlpit, a logistics SaaS, hosts jobs on a subdomain run by its applicant tracking system. The ATS already emits JobPosting markup, so the team checks it in the Rich Results Test, adds salary ranges in the ATS fields, and makes sure closed roles are unpublished.

Common mistakes

Expired roles left online

Stale postings frustrate candidates and breach Google's guidelines.

Duplicate markup from ATS and site

If the same job appears on two URLs, both with markup, decide which is the canonical listing.

Questions

No, but it helps Google pick up new and removed postings faster. Regular crawling and sitemaps also work.

Know the terms. Now win the searches.

We find the searches your buyers make, then build, publish and improve the pages that win them.