Free SEO audit for new clients — claim yours
Home/Blog/Technical SEO/Job Posting Schema: How to Appear in Google for …
Technical SEO

Job Posting Schema: How to Appear in Google for Jobs

Job Posting Schema: How to Appear in Google for Jobs
Table of contents
  1. Key Takeaways
  2. Who Should Use JobPosting Schema?
  3. Content Policies: What Gets Listings Excluded
  4. Required and Recommended Properties
  5. Example: JobPosting JSON-LD
  6. Remote and Hybrid Jobs
  7. Removing Expired Jobs
  8. Getting Jobs Crawled Fast: Indexing API vs Sitemaps
  9. Step-by-Step Implementation
  10. Writing Job Descriptions That Perform
  11. Common Mistakes
  12. Reach More Candidates From Search
  13. References
  14. Related Guides

Most job searches start on a search engine. When someone types "warehouse jobs near me" or "remote marketing manager", Google can show a dedicated job search experience with filters for location, job type and date posted, and listings drawn from employer sites and job boards. If your vacancies aren't marked up properly, they're competing for those searches with one hand tied behind their back.

JobPosting structured data is how you make your vacancies eligible. It's one of the more demanding schema types: Google has strict content policies, specific rules for remote roles and salary data, and expects expired jobs to be removed promptly. Get it wrong and your listings can be excluded, or your site can receive a structured data manual action.

This guide walks through eligibility, required and recommended properties, a full JSON-LD example, how to handle remote jobs and expired listings, and how to get new jobs crawled quickly in 2026.

Key Takeaways

  • JobPosting markup makes vacancies eligible for Google's job search experience in Search.
  • Required properties: title, description, datePosted, hiringOrganization and jobLocation (or applicantLocationRequirements for fully remote jobs).
  • Only the employer should provide baseSalary, and it should be the real figure, not an estimate.
  • When a job closes, set validThrough to a past date, remove the markup, or return 404/410.
  • Google recommends the Indexing API over sitemaps for job posting URLs because it prompts faster crawling.

Who Should Use JobPosting Schema?

Any organisation publishing genuine vacancies on its own site can benefit: employers with careers pages, recruitment agencies, staffing firms and job boards. Recruitment agencies have particular opportunities here; our guide to SEO for recruitment agencies covers the wider strategy. Many applicant tracking systems output JobPosting markup automatically, so check what yours does before building anything custom.

Content Policies: What Gets Listings Excluded

Google's job posting documentation includes a list of content it won't allow. One of the clearest:

“We don't allow job postings that require payment from applicants.”

— Google Search Central, Job posting structured data

Other disallowed content includes:

  • Markup on pages that don't contain a single job (such as a search results or category page).
  • Incomplete descriptions, or descriptions identical to the title.
  • Misrepresenting the employer, job or location, including fake jobs.
  • Advertisements disguised as jobs, and job requests from people offering their own services.
  • Expired jobs left live with active markup.
  • Postings with no way to apply, or that require a login just to read the description.
  • Spammy, obstructive or grammatically poor content, or offensive language.
PropertyStatusKey rules
titleRequiredJob title only, with no codes, dates, salaries or company names
descriptionRequiredFull description in HTML; can't be the same as the title
datePostedRequiredOriginal posting date in ISO 8601
hiringOrganizationRequiredThe company name, not a specific branch; "confidential" for anonymous roles
jobLocationRequired*Where the employee physically works; *not needed for fully remote jobs using applicantLocationRequirements
applicantLocationRequirementsRecommended / required for remoteWhere remote employees may be located
jobLocationTypeRecommendedTELECOMMUTE only for fully remote jobs
baseSalaryRecommendedEmployer-provided actual salary; unitText of HOUR, DAY, WEEK, MONTH or YEAR
employmentTypeRecommendedFULL_TIME, PART_TIME, CONTRACTOR, TEMPORARY, INTERN, VOLUNTEER, PER_DIEM, OTHER
validThroughRecommendedExpiry date; omit if there isn't one
directApplyRecommendedWhether the URL offers a short, direct application process
identifierRecommendedYour internal job ID

Your hiringOrganization can mirror the details in your site-wide Organization schema, including the logo.

Example: JobPosting JSON-LD

<script type="application/ld+json">
{
  "@context": "https://schema.org/",
  "@type": "JobPosting",
  "title": "Customer Support Specialist",
  "description": "<p>Help our customers by phone and chat…</p>",
  "identifier": {"@type": "PropertyValue", "name": "Example Ltd", "value": "CS-2041"},
  "datePosted": "2026-10-10",
  "validThrough": "2026-11-30T23:59:00+00:00",
  "employmentType": "FULL_TIME",
  "hiringOrganization": {
    "@type": "Organization",
    "name": "Example Ltd",
    "sameAs": "https://www.example.com/",
    "logo": "https://www.example.com/logo.png"
  },
  "jobLocation": {
    "@type": "Place",
    "address": {
      "@type": "PostalAddress",
      "streetAddress": "5 Example Way",
      "addressLocality": "Leeds",
      "postalCode": "LS1 1AA",
      "addressCountry": "GB"
    }
  },
  "baseSalary": {
    "@type": "MonetaryAmount",
    "currency": "GBP",
    "value": {"@type": "QuantitativeValue", "minValue": 26000, "maxValue": 29000, "unitText": "YEAR"}
  },
  "directApply": true
}
</script>

Remote and Hybrid Jobs

For a fully remote role, set jobLocationType to TELECOMMUTE and use applicantLocationRequirements to say which countries or regions applicants may live in. Google's documentation says jobLocation isn't required for fully remote jobs that include those location requirements. Don't use TELECOMMUTE for hybrid roles; those have a physical office, so give the jobLocation and explain the hybrid arrangement in the description.

Removing Expired Jobs

Google's documentation lists three ways to show a job is no longer open:

  1. Set validThrough to a date in the past.
  2. Remove the page so it returns a 404 or 410 status code (see our HTTP status codes guide).
  3. Remove the JobPosting markup from the page.

Leaving expired jobs live with active markup breaches the content policies. Large job boards should also think about what happens to thousands of expired URLs over time; our article on index bloat covers cleanup options.

Getting Jobs Crawled Fast: Indexing API vs Sitemaps

MethodSpeedUse it for
Indexing APIPrompts Googlebot to crawl sooner, per GoogleNotifying Google when job URLs are added, updated or removed
XML sitemapSlower; a hint for discoveryFull-site coverage, including job pages
URL Inspection "Request indexing"Manual, limitedSpot-checking a handful of important jobs

Google's Indexing API can only be used for pages with JobPosting or BroadcastEvent embedded in a VideoObject. It lets you notify Google of updated URLs and of removed URLs. Google's job posting guide still recommends a sitemap for full-site coverage alongside it. For other page types, our IndexNow guide covers the protocol used by Bing and other engines.

Step-by-Step Implementation

  1. Audit your careers pages. One job per URL, full description visible, a clear way to apply.
  2. Check your ATS. If it outputs markup, validate it rather than duplicating it.
  3. Add JobPosting JSON-LD to the job template, populated from your job data.
  4. Validate with the Rich Results Test and fix all errors.
  5. Set up the Indexing API for new, updated and closed jobs, plus a sitemap.
  6. Automate expiry. When a job closes, update validThrough, remove markup or return 404/410 automatically.
  7. Monitor Search Console for structured data errors and manual actions.

Writing Job Descriptions That Perform

Markup only makes a listing eligible; the content still has to persuade a candidate to click and apply. Google's policies already demand a complete description, but going further helps. Lead with what the role involves day to day, list must-have and nice-to-have requirements separately, state the working pattern (on-site, hybrid or remote) clearly, and explain the application steps. Use the job title people actually search for rather than internal jargon, so "Customer Support Specialist" beats "Customer Happiness Ninja". Keep each vacancy on its own stable URL so links and shares keep working until the role closes.

Common Mistakes

  • Stuffing the title with salary, location, job codes or "URGENT!".
  • Marking up job listing pages (search results) instead of individual job detail pages.
  • Using estimated salaries. Only the employer should provide baseSalary.
  • Using TELECOMMUTE for hybrid jobs.
  • Forgetting to expire jobs. This is a policy violation, not just an untidy site.
  • Requiring login to read the description.

For other schema types that often appear on the same sites, see our guides to Article schema for career blogs and Event schema for in-person hiring fairs.

{FAQ}

JobPosting markup is technical but rewarding: done right, it puts your vacancies in front of active job seekers at no cost per click. If you'd like help implementing it, connecting the Indexing API or cleaning up expired listings, our team can handle it as part of our SEO services. Our schema markup guide covers other types. Request a quote to get started.

References

  1. Job posting (JobPosting) structured data – Google Search Central
  2. Indexing API quickstart – Google Search Central
  3. General structured data guidelines – Google Search Central
  4. JobPosting – Schema.org
Rohit Choudhary
Written byRohit ChoudharyCo-Founder, My SEO Experts

Rohit Choudhary is the co-founder of My SEO Experts and has more than 14 years of hands-on experience in SEO, paid advertising and digital marketing. Since starting out in 2011 he has helped hundreds of businesses grow through practical, data-driven search strategies, and he also serves as a consulting Digital Marketing Director for several US-based companies.

Keep reading

Related articles

How to Run an SEO Audit With Claude and the Semrush MCP
Technical SEO

How to Run an SEO Audit With Claude and the Semrush MCP

A practical workflow for connecting Claude to Semrush data, auditing crawl health, on-page issues, backlinks and competitors, and turning AI findings into a verified, ranked fix list.

Ready to grow your business online?

Get a free, no-obligation proposal tailored to your goals and budget.

CallFree Quote