On this page:
This is some text inside of a div block.
This is some text inside of a div block.
This is some text inside of a div block.

JobPosting Schema

JobPosting is a schema.org type that describes a job listing. Google uses it to power its job search experience, displaying structured job results with title, company, salary, location, and application details directly in search. JobPosting is one of the most implementation heavy schema types, with 4 required fields and 6 recommended fields that Google actively processes.

When to use JobPosting

Add JobPosting schema to any page that advertises an open position: career pages, individual job listings, and job board entries. Each page should contain one JobPosting object per position. If a page lists multiple jobs, each needs its own JobPosting block.

Required fields

These fields must be present for Google to display the listing in job search results.

Google also requires description (the full job description in HTML) for JobPosting rich results, though it is a shared schema.org field not specific to this type.

Recommended fields

These fields are not required but improve how the listing appears and performs in search.

Optional fields

These fields are valid schema.org properties but not mentioned in Google's JobPosting documentation.

Complete JSON-LD example

{
  "@context": "https://schema.org",
  "@type": "JobPosting",
  "title": "Senior Frontend Engineer",
  "datePosted": "2024-06-15",
  "validThrough": "2024-08-15T00:00",
  "employmentType": "FULL_TIME",
  "directApply": true,
  "hiringOrganization": {
    "@type": "Organization",
    "name": "Stripe",
    "sameAs": "https://stripe.com",
    "logo": "https://stripe.com/img/v3/home/social.png"
  },
  "jobLocation": {
    "@type": "Place",
    "address": {
      "@type": "PostalAddress",
      "streetAddress": "354 Oyster Point Blvd",
      "addressLocality": "South San Francisco",
      "addressRegion": "CA",
      "postalCode": "94080",
      "addressCountry": "US"
    }
  },
  "baseSalary": {
    "@type": "MonetaryAmount",
    "currency": "USD",
    "value": {
      "@type": "QuantitativeValue",
      "minValue": 150000,
      "maxValue": 200000,
      "unitText": "YEAR"
    }
  },
  "description": "<p>Stripe is looking for a Senior Frontend Engineer to build payment interfaces used by millions of businesses worldwide.</p>"
}

Remote job example

{
  "@context": "https://schema.org",
  "@type": "JobPosting",
  "title": "Remote Data Analyst",
  "datePosted": "2024-07-01",
  "validThrough": "2024-09-01",
  "employmentType": "FULL_TIME",
  "directApply": true,
  "jobLocationType": "TELECOMMUTE",
  "applicantLocationRequirements": [
    {
      "@type": "Country",
      "name": "USA"
    },
    {
      "@type": "Country",
      "name": "Canada"
    }
  ],
  "hiringOrganization": {
    "@type": "Organization",
    "name": "HubSpot",
    "sameAs": "https://www.hubspot.com"
  },
  "baseSalary": {
    "@type": "MonetaryAmount",
    "currency": "USD",
    "value": {
      "@type": "QuantitativeValue",
      "minValue": 85000,
      "maxValue": 110000,
      "unitText": "YEAR"
    }
  }
}

Webflow implementation

For Webflow sites with a Jobs CMS collection, add a custom code embed in the job template page with dynamic field references. Required CMS fields: Job Title (text), Date Posted (date), Company Name (text), City (text), State (text), Country (text). Recommended CMS fields: Salary Min (number), Salary Max (number), Employment Type (option), Is Remote (switch).

Schema HQ automates this entire setup. It reads your Webflow CMS job fields, assembles the nested JSON-LD structure, handles the MonetaryAmount and PostalAddress nesting, and publishes valid markup without manual embed code.

AEO relevance

JobPosting is heavily used by AI assistants for job search queries. AI engines pull structured fields to answer questions like "What does Stripe pay frontend engineers?" (baseSalary), "Is this position remote?" (jobLocationType), and "When was this posted?" (datePosted). Complete JobPosting markup gives AI engines every data point needed to surface the listing in conversational responses.

A ZipRecruiter case study published by Google Search Central showed 4.5x higher conversion rates after implementing JobPosting structured data. Web Data Commons analysis found that title and datePosted appear in 99% of JSON-LD job postings, while baseSalary and employmentType appear in roughly 80%.

On this page:
This is some text inside of a div block.
This is some text inside of a div block.
This is some text inside of a div block.

Need help with schema on your site?

We implement structured data for Webflow sites — from audit to deployment.

Work with us

Work with us