S SCHEMA.BIZ
Other Extends: Intangible

JobPosting Schema Markup

JobPosting markup enables your job listings to appear in Google's dedicated job search experience. Job seekers can filter by location, salary, employment type, and more — and your listings appear alongside major job boards.

Google Search Features

  • Job posting Listing in Google's job search experience.

When to Use JobPosting

Job board listings Company career pages Recruitment agency listings Freelance opportunities

Properties

Property Type Status Description
title Text required The job title (e.g., Senior Software Engineer).
description Text required Full job description with responsibilities and requirements. HTML is allowed.
datePosted Date required When the job was posted.
hiringOrganization Organization required The company posting the job.
jobLocation Place required Where the work is performed, with an address that includes addressCountry. Fully remote jobs use jobLocationType TELECOMMUTE and applicantLocationRequirements instead.
validThrough DateTime recommended Application deadline.
employmentType Text recommended FULL_TIME, PART_TIME, CONTRACTOR, etc.
baseSalary MonetaryAmount recommended Salary information.
jobLocationType Text recommended Set to TELECOMMUTE for remote positions.
directApply Boolean recommended true when people can apply on this job's page without extra steps, such as clicking Apply or signing in more than once.
applicantLocationRequirements AdministrativeArea recommended Where applicants must be located, for remote jobs.

JSON-LD Examples

Full-Time Software Engineer

A job posting with salary range and location.

{
  "@context": "https://schema.org",
  "@type": "JobPosting",
  "title": "Senior Frontend Developer",
  "description": "<p>We're looking for an experienced frontend developer to join our product team. You'll be building user interfaces with React and TypeScript.</p><h3>Requirements</h3><ul><li>5+ years of frontend development</li><li>Expert in React and TypeScript</li></ul>",
  "datePosted": "2024-04-01",
  "validThrough": "2024-06-30T23:59:59-07:00",
  "employmentType": "FULL_TIME",
  "hiringOrganization": {
    "@type": "Organization",
    "name": "TechCorp",
    "sameAs": "https://techcorp.com",
    "logo": "https://techcorp.com/logo.png"
  },
  "jobLocation": {
    "@type": "Place",
    "address": {
      "@type": "PostalAddress",
      "addressLocality": "San Francisco",
      "addressRegion": "CA",
      "addressCountry": "US"
    }
  },
  "baseSalary": {
    "@type": "MonetaryAmount",
    "currency": "USD",
    "value": {
      "@type": "QuantitativeValue",
      "value": 150000,
      "maxValue": 190000,
      "unitText": "YEAR"
    }
  }
}

Common Mistakes

Using 'title' and 'name' interchangeably — JobPosting uses 'title', not 'name'.

Forgetting hiringOrganization — Google requires the company name to show the listing.

Not including salary when it's available — listings with salary information get more visibility in Google for Jobs.

Using plain text for description when HTML formatting would make it more readable and attractive.

Complete Guide to JobPosting Schema Markup

JobPosting schema markup feeds directly into Google for Jobs — a dedicated job search experience that appears for job-related queries. Unlike traditional search results, Google for Jobs provides a rich interface where candidates can filter by salary, location, company size, and more.

The most critical properties are title, description, datePosted, hiringOrganization, and employmentType. Without these, your listing won't appear in Google for Jobs. The description supports HTML formatting — use headers, lists, and paragraphs to make the posting readable.

Including salary information (baseSalary) dramatically increases the visibility and click-through rate of your listing. Google prominently displays salary ranges in job search results, and many candidates filter specifically for listings that include compensation data.

For remote positions, set jobLocationType to 'TELECOMMUTE'. You can also combine this with a jobLocation to indicate the company's base location while showing the role as remote. The applicantLocationRequirements property specifies where remote workers must be located.

Related Types

Ready to Create JobPosting Markup?

Use our free generator to create valid JobPosting JSON-LD markup with a visual form. No coding required.

Open Generator