JobPosting Schema Markup Guide

Complete guide to implementing JobPosting schema for job listings. Learn how to get your jobs listed in Google for Jobs, increase candidate visibility, and optimize your careers page for search engines.

💼 Career Impact

Companies implementing JobPosting schema see 40-60% increase in job applications through organic search. Structured job data appears in Google for Jobs, LinkedIn, Indeed, and specialized job boards, reaching millions of qualified candidates.

What is JobPosting Schema?

JobPosting schema is structured data that describes job opportunities, helping search engines understand and display your job listings in specialized job search results. When properly implemented, your jobs appear in:

🔍 Google for Jobs

Primary job search interface appearing in Google Search results for job-related queries

💼 LinkedIn Jobs

Automatically syncs your job listings for broader candidate reach

📋 Job Boards

Indeed, Glassdoor, and other specialized job platforms

🔔 Job Alerts

Appears in job alert emails and subscriptions

Ready to validate your Job Posting schema? Use our interactive validator to check your implementation.

Validate Job Posting Schema

JobPosting Schema Properties

Required Properties

title - Job title (e.g., "Senior Software Engineer")

description - Full job description with responsibilities and requirements

datePosted - ISO 8601 date when job was posted

validThrough - ISO 8601 date when job listing expires

hiringOrganization - Organization object with name and logo

jobLocation - Place object with address of job location

Recommended Properties

baseSalary - Salary range with currency (increases apply rates 15-25%)

jobLocationType - "TELECOMMUTE", "TEMPORARY", "PERMANENT", etc.

employmentType - "FULL_TIME", "PART_TIME", "CONTRACT", "TEMPORARY"

applicantLocationRequirements - Geographic restrictions for applicants

jobBenefits - Benefits like "Health Insurance", "Remote Work", "401(k)"

Complete JobPosting Schema Example

Here's a complete, production-ready JobPosting schema implementation:

<script type="application/ld+json">
{
  "@context": "https://schema.org/",
  "@type": "JobPosting",
  "title": "Senior Software Engineer - Full Stack",
  "description": "We are seeking an experienced Senior Software Engineer to join our growing team. You will work on scalable systems serving millions of users, mentor junior engineers, and contribute to architectural decisions. Requirements: 5+ years experience with React, Node.js, and AWS. Strong understanding of system design and databases.",
  "datePosted": "2026-01-21T08:00:00Z",
  "validThrough": "2026-02-21T18:00:00Z",
  "jobLocation": {
    "@type": "Place",
    "address": {
      "@type": "PostalAddress",
      "streetAddress": "123 Tech Boulevard, Suite 100",
      "addressLocality": "San Francisco",
      "addressRegion": "CA",
      "postalCode": "94105",
      "addressCountry": "US"
    }
  },
  "hiringOrganization": {
    "@type": "Organization",
    "name": "TechCorp Inc",
    "sameAs": "https://techcorp.example.com",
    "logo": "https://techcorp.example.com/logo.png"
  },
  "baseSalary": {
    "@type": "PriceSpecification",
    "currency": "USD",
    "priceCurrency": "USD",
    "price": "150000",
    "priceRange": "150000-200000"
  },
  "employmentType": "FULL_TIME",
  "jobLocationType": "HYBRID",
  "jobBenefits": [
    "Health Insurance",
    "401(k) Matching",
    "Remote Work Available",
    "Professional Development",
    "Flexible Schedule"
  ],
  "applicantLocationRequirements": {
    "@type": "Country",
    "name": "US"
  }
}
</script>

✓ Best Practice: Include salary information to increase applications by 15-25%. Use realistic salary ranges that match market rates for your location and experience level.

Salary & Benefits Configuration

Salary Range Format (Recommended)

"baseSalary": {
  "@type": "PriceSpecification",
  "priceCurrency": "USD",
  "price": "150000",
  "priceRange": "150000-200000",
  "priceSpecificationBase": "MONTH"
},
"jobBenefits": [
  "Health Insurance - Medical, Dental, Vision",
  "401(k) Matching - Up to 6%",
  "Stock Options",
  "Unlimited Paid Time Off",
  "Remote Work - Up to 3 days/week",
  "Professional Development Budget - $2000/year",
  "Gym Membership Reimbursement"
]

💡 Pro Tip: Salary visibility is the #1 factor job seekers filter by. Including salary increases application rate significantly. Use competitive market rates and be transparent about salary ranges.

Multiple Job Locations

For jobs available at multiple locations, use an array of jobLocation objects:

"jobLocation": [
  {
    "@type": "Place",
    "address": {
      "@type": "PostalAddress",
      "streetAddress": "123 Tech Boulevard",
      "addressLocality": "San Francisco",
      "addressRegion": "CA",
      "postalCode": "94105",
      "addressCountry": "US"
    }
  },
  {
    "@type": "Place",
    "address": {
      "@type": "PostalAddress",
      "streetAddress": "456 Innovation Drive",
      "addressLocality": "New York",
      "addressRegion": "NY",
      "postalCode": "10001",
      "addressCountry": "US"
    }
  }
],
"jobLocationType": "HYBRID"  // Can be TELECOMMUTE, HYBRID, ON_SITE

Telecommute & Remote Positions

For fully remote positions, use jobLocationType and include a representative location:

"jobLocationType": "TELECOMMUTE",
"jobLocation": {
  "@type": "Place",
  "address": {
    "@type": "PostalAddress",
    "addressCountry": "US"  // Geographic restriction if any
  }
}

Frequently Asked Questions

What is JobPosting Schema and why does it matter?

JobPosting schema is structured data that tells search engines about your job listings. It enables your jobs to appear in Google for Jobs, LinkedIn, Indeed, and other job boards. This dramatically increases your visibility to qualified candidates and can reduce hiring time by 30-50%.

What are the required properties for JobPosting schema?

Required properties include: title, description, datePosted, validThrough, jobLocation (with address), and hiringOrganization (with name and logo). Without these, search engines may not display your job listing in rich results.

How do I implement JobPosting schema on my careers page?

Add JSON-LD structured data to each job listing page with the JobPosting @type. Include all required and recommended properties. Validate using Google's Rich Results Test or our schema validator to ensure proper implementation.

Can I use JobPosting for multiple locations or roles?

Yes, use the jobLocationType property. For 'TELECOMMUTE' positions, include a representative jobLocation. For multiple locations, create separate JobPosting entries for each location or use jobLocation array.

What's the difference between validThrough and datePosted?

datePosted is when the job was published. validThrough is when the job listing expires. Set validThrough to the deadline for applications. Jobs with expired validThrough dates may not appear in search results.

How does salary affect job listing visibility?

Including salary information with baseSalary property increases apply rates by 15-25% and improves search visibility. Use currency codes (USD, EUR, etc.) and specify salary ranges or exact amounts with appropriate duration (HOUR, WEEK, MONTH, YEAR).

Can I update job listings without republishing them?

Yes, you can update the JSON-LD dynamically as job details change. Search engines check regularly for updates. Always keep datePosted unchanged and use validThrough to indicate job expiration.

Implementation Best Practices

✓ Do This

  • • Update datePosted when job is republished or updated
  • • Set validThrough to actual application deadline
  • • Include complete job description in the description field
  • • Use real company logo URL that's publicly accessible
  • • Include salary range with currency code
  • • Validate using Google Rich Results Test

✗ Don't Do This

  • • Use placeholder text or generic descriptions
  • • Leave validThrough in the past or too far in future
  • • Include false or inflated salary information
  • • Use invalid date formats (must be ISO 8601)
  • • Duplicate job postings without unique URLs

Testing & Validation

🔍 Google Rich Results Test

Official Google tool showing how your job listing appears in search results

Test Your Job Schema →

🔧 Schema Validator

Our comprehensive schema validator checks syntax and completeness

Ready to validate your Job Posting schema? Use our interactive validator to check your implementation.

Validate Job Posting Schema

Ready to Get Started?

Implementing JobPosting schema is straightforward and has immediate impact on your job listing visibility. Use our validator to check your implementation and ensure all required properties are included.

Ready to validate your Job Posting schema? Use our interactive validator to check your implementation.

Validate Job Posting Schema