JobPosting Schema
JobPosting is a schema.org type that describes a job listing. Google uses it to power its job search experience, displaying structured job results with title, company, salary, location, and application details directly in search. JobPosting is one of the most implementation heavy schema types, with 4 required fields and 6 recommended fields that Google actively processes.
When to use JobPosting
Add JobPosting schema to any page that advertises an open position: career pages, individual job listings, and job board entries. Each page should contain one JobPosting object per position. If a page lists multiple jobs, each needs its own JobPosting block.
Required fields
These fields must be present for Google to display the listing in job search results.
- title — Text
- datePosted — Date
- hiringOrganization — Organization
- jobLocation — Place
Google also requires description (the full job description in HTML) for JobPosting rich results, though it is a shared schema.org field not specific to this type.
Recommended fields
These fields are not required but improve how the listing appears and performs in search.
- baseSalary — MonetaryAmount
- employmentType — Text
- validThrough — Date
- jobLocationType — Text
- applicantLocationRequirements — AdministrativeArea
- directApply — Boolean
Optional fields
These fields are valid schema.org properties but not mentioned in Google's JobPosting documentation.
Complete JSON-LD example
{
"@context": "https://schema.org",
"@type": "JobPosting",
"title": "Senior Frontend Engineer",
"datePosted": "2024-06-15",
"validThrough": "2024-08-15T00:00",
"employmentType": "FULL_TIME",
"directApply": true,
"hiringOrganization": {
"@type": "Organization",
"name": "Stripe",
"sameAs": "https://stripe.com",
"logo": "https://stripe.com/img/v3/home/social.png"
},
"jobLocation": {
"@type": "Place",
"address": {
"@type": "PostalAddress",
"streetAddress": "354 Oyster Point Blvd",
"addressLocality": "South San Francisco",
"addressRegion": "CA",
"postalCode": "94080",
"addressCountry": "US"
}
},
"baseSalary": {
"@type": "MonetaryAmount",
"currency": "USD",
"value": {
"@type": "QuantitativeValue",
"minValue": 150000,
"maxValue": 200000,
"unitText": "YEAR"
}
},
"description": "<p>Stripe is looking for a Senior Frontend Engineer to build payment interfaces used by millions of businesses worldwide.</p>"
}
Remote job example
{
"@context": "https://schema.org",
"@type": "JobPosting",
"title": "Remote Data Analyst",
"datePosted": "2024-07-01",
"validThrough": "2024-09-01",
"employmentType": "FULL_TIME",
"directApply": true,
"jobLocationType": "TELECOMMUTE",
"applicantLocationRequirements": [
{
"@type": "Country",
"name": "USA"
},
{
"@type": "Country",
"name": "Canada"
}
],
"hiringOrganization": {
"@type": "Organization",
"name": "HubSpot",
"sameAs": "https://www.hubspot.com"
},
"baseSalary": {
"@type": "MonetaryAmount",
"currency": "USD",
"value": {
"@type": "QuantitativeValue",
"minValue": 85000,
"maxValue": 110000,
"unitText": "YEAR"
}
}
}
Webflow implementation
For Webflow sites with a Jobs CMS collection, add a custom code embed in the job template page with dynamic field references. Required CMS fields: Job Title (text), Date Posted (date), Company Name (text), City (text), State (text), Country (text). Recommended CMS fields: Salary Min (number), Salary Max (number), Employment Type (option), Is Remote (switch).
Schema HQ automates this entire setup. It reads your Webflow CMS job fields, assembles the nested JSON-LD structure, handles the MonetaryAmount and PostalAddress nesting, and publishes valid markup without manual embed code.
AEO relevance
JobPosting is heavily used by AI assistants for job search queries. AI engines pull structured fields to answer questions like "What does Stripe pay frontend engineers?" (baseSalary), "Is this position remote?" (jobLocationType), and "When was this posted?" (datePosted). Complete JobPosting markup gives AI engines every data point needed to surface the listing in conversational responses.
A ZipRecruiter case study published by Google Search Central showed 4.5x higher conversion rates after implementing JobPosting structured data. Web Data Commons analysis found that title and datePosted appear in 99% of JSON-LD job postings, while baseSalary and employmentType appear in roughly 80%.