JobPosting Schema Markup
JobPosting schema enables job listings to appear in Google for Jobs, a prominent job search feature. Essential for career pages and job boards to drive qualified applicant traffic.
What is JobPosting schema markup?
JobPosting schema markup is structured data in JSON-LD format that helps search engines understand your page content. It requires properties like title, description, datePosted and enables rich results in Google Search. JobPosting schema enables job listings to appear in Google for Jobs, a prominent job search feature. Essential for career pages and job boards to drive qualified applicant traffic.
Required Properties
| Property | Type | Description |
|---|---|---|
| title | Text | The title of the job position. |
| description | Text | The full job description in HTML format. |
| datePosted | Date | The date the job was posted. |
| hiringOrganization | Organization | The company offering the job. |
| jobLocation | Place | Where the job is located (or 'remote'). |
Recommended Optional Properties
| Property | Type | Description |
|---|---|---|
| validThrough | DateTime | The expiration date of the job posting. |
| employmentType | Text | Full-time, part-time, contract, etc. |
| baseSalary | MonetaryAmount | Salary or salary range. |
| applicantLocationRequirements | AdministrativeArea | Location requirements for remote work. |
| jobLocationType | Text | Set to 'TELECOMMUTE' for remote jobs. |
Example JSON-LD Code
{
"@context": "https://schema.org",
"@type": "JobPosting",
"title": "Senior Frontend Developer",
"description": "<p>We're looking for a senior frontend developer...</p>",
"datePosted": "2025-03-01",
"validThrough": "2025-05-01",
"employmentType": "FULL_TIME",
"hiringOrganization": {
"@type": "Organization",
"name": "TechCorp Inc.",
"sameAs": "https://techcorp.example.com"
},
"jobLocation": {
"@type": "Place",
"address": {
"@type": "PostalAddress",
"addressLocality": "San Francisco",
"addressRegion": "CA"
}
},
"baseSalary": {
"@type": "MonetaryAmount",
"currency": "USD",
"value": {
"@type": "QuantitativeValue",
"minValue": 130000,
"maxValue": 180000,
"unitText": "YEAR"
}
}
}
Place this inside a <script type="application/ld+json"> tag in your page's <head>.
Common Mistakes to Avoid
- ✗ Not removing expired job postings — set validThrough and remove old listings
- ✗ Using generic titles like 'Apply Now' instead of actual job titles
- ✗ Not marking remote jobs with jobLocationType: TELECOMMUTE
- ✗ Missing salary information — Google prefers listings with salary data
- ✗ Including multiple jobs in a single JobPosting — use one per position
Generate JobPosting Schema Markup
Use our free schema generator to create valid JobPosting JSON-LD code in seconds.
Open Schema Generator