Loading page
Free JobPosting tool
Marks up job listings for Google for Jobs — the prominent carousel that appears above organic results for hiring queries. Rich result eligible. No signup. No credit card.
Marks up job listings for Google for Jobs — the prominent carousel that appears above organic results for hiring queries.
{
"@context": "https://schema.org",
"@type": "JobPosting"
}Validation
★ Rich result eligible — validate at Google Rich Results Test
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "JobPosting",
"title": "Senior Shopify Developer",
"hiringOrganization": {
"@type": "Organization",
"name": "SterlingWeb",
"sameAs": "https://www.sterling-web.com"
},
"datePosted": "2026-05-01",
"description": "We are looking for a...",
"jobLocation": {
"@type": "Place",
"address": { "@type": "PostalAddress", "addressCountry": "IN" }
}
}
</script>Understanding the format
JobPosting schema feeds Google for Jobs, the prominent job search carousel that appears at the top of SERPs for 'hiring' and job-title queries. It also feeds job aggregators like LinkedIn, Indeed, and Glassdoor when they crawl your site. The required fields are title, hiringOrganization, jobLocation, datePosted, and description. For remote jobs, use 'TELECOMMUTE' in jobLocationType. Including baseSalary with a salary range dramatically increases candidate application rate as salary appears in the card. Roles that become filled should set 'validThrough' to a past date so Google stops surfacing them.
Appearing in Google for Jobs — the carousel block that gets 5× more clicks than organic job listings
Syndicating job listings to LinkedIn, Indeed, and Glassdoor via structured data
Attracting targeted candidates by surfacing salary range and employment type in search
Omitting datePosted — it is required and Google uses it to sort recent listings
Using plain text for jobLocation instead of a Place with PostalAddress
Not setting 'validThrough' for filled roles — stale listings harm employer trust signals
Putting HTML in 'description' — the description must be plain text or entities-encoded
Omitting employmentType — always specify FULL_TIME, PART_TIME, CONTRACTOR, or TEMPORARY
Need expert implementation?
Our team audits your existing schema, fixes errors, and deploys a complete structured data strategy — Organisation, Service, FAQ, Article, and BreadcrumbList — for Google Rich Results and AI Overviews.
FAQ
JobPosting schema feeds Google for Jobs, the prominent job search carousel that appears at the top of SERPs for 'hiring' and job-title queries. It also feeds job aggregators like LinkedIn, Indeed, and Glassdoor when they crawl your site. The required fields are title, hiringOrganization, jobLocation, datePosted, and description. For remote jobs, use 'TELECOMMUTE' in jobLocationType. Including baseSalary with a salary range dramatically increases candidate application rate as salary appears in the card. Roles that become filled should set 'validThrough' to a past date so Google stops surfacing them.
Appearing in Google for Jobs — the carousel block that gets 5× more clicks than organic job listings Syndicating job listings to LinkedIn, Indeed, and Glassdoor via structured data Attracting targeted candidates by surfacing salary range and employment type in search
Yes — JobPosting schema is eligible for rich results. You can validate your generated JSON-LD using Google's Rich Results Test at search.google.com/test/rich-results.
Omitting datePosted — it is required and Google uses it to sort recent listings Using plain text for jobLocation instead of a Place with PostalAddress Not setting 'validThrough' for filled roles — stale listings harm employer trust signals Putting HTML in 'description' — the description must be plain text or entities-encoded Omitting employmentType — always specify FULL_TIME, PART_TIME, CONTRACTOR, or TEMPORARY
In WordPress, you can add JSON-LD schema by inserting a Custom HTML block at the top of your page containing a <script type="application/ld+json"> tag, or by using Yoast SEO's Schema tab to add custom schema. You can also paste the script into your theme's header.php file.
In Shopify, paste the JSON-LD script block inside the <head> section of your theme.liquid file. For Online Store 2.0 themes, you can also add it via a JSON section or App Block if your theme supports it.
In Next.js (App Router), add the schema directly in your page.tsx server component using: <script type="application/ld+json" dangerouslySetInnerHTML={{ __html: JSON.stringify(schemaObject) }} />. Place it at the top of the returned JSX alongside other metadata.
This tool was built by Sterlingweb Growth Labs Private Limited, an India-based Shopify, WordPress, and SEO/AEO/GEO agency headquartered in Nashik. Learn more at /about or see our technical SEO services at /services/technical-seo-aeo-geo-services.