Job Posting schema generator
One open position on your careers page.
Rich result availableJobPosting · Job posting
Guide
What Google does with JobPosting markup
Jobs can appear in Google's job search experience with salary, location, and an apply button. Remove the markup, or set a closing date, once the job is filled.
When to use it
Use on individual job detail pages that are publicly indexable. Remove markup when the role closes.
Fields Google looks for
| Property | Status | In the form |
|---|---|---|
| title | Required | Job title |
| description | Required | Job description |
| datePosted | Required | Posted on |
| hiringOrganization | Required | Employer |
| jobLocation | Required | Office location |
| validThrough | Recommended | Applications close |
| employmentType | Recommended | Employment type |
| baseSalary | Recommended | Salary |
| directApply | Recommended | Apply directly on this page |
Example output
This is what the builder produces from the example data. Paste it into the page's HTML, in the <head> or the body.
{
"@context": "https://schema.org",
"@type": "JobPosting",
"title": "Senior Backend Engineer",
"description": "<p>Northwind is hiring a backend engineer to own our booking API.</p><ul><li>Go and PostgreSQL</li><li>On-call one week in six</li></ul>",
"datePosted": "2026-05-02",
"validThrough": "2026-06-30",
"employmentType": "FULL_TIME",
"hiringOrganization": {
"@type": "Organization",
"name": "Northwind Studio",
"sameAs": "https://northwind.example"
},
"jobLocation": {
"@type": "Place",
"address": {
"@type": "PostalAddress",
"streetAddress": "Friedrichstraße 68",
"addressLocality": "Berlin",
"postalCode": "10117",
"addressCountry": "DE"
}
},
"baseSalary": {
"@type": "MonetaryAmount",
"currency": "EUR",
"value": {
"@type": "QuantitativeValue",
"minValue": 70000,
"maxValue": 85000,
"unitText": "YEAR"
}
},
"directApply": true
}Common questions
- Are closed jobs still eligible?
- No. Remove JobPosting markup or set validThrough when the role is filled.
- How should remote roles specify location?
- Use jobLocationType TELECOMMUTE and applicantLocationRequirements for allowed regions when hiring remotely.