Job Posting Structured Data


This page contains some technical information which is designed for more technical users and developers.

We have tried to summarise the basics in the first few sections to allow non-technical people to understand why this topic is important.

Before we get started, there are some things to know:

What is structured data?

Structured data is a universal way to provide additional information to search engines, which can enable sites to get special 'rich result' in search results.

Using either JSON-LD, Microdata, or RDFa, it is possible to markup a web-page in a way that is really easy for platforms like Google to read and understand.

Why do you need to use JobPosting structured data?

Very simply, JobPosting structured data is required by Google to get the jobs on your website listed in Google Job Search.

So if you want your jobs to appear in Google Job Search: you will need to mark up your jobs using JobPosting structured data.

Will I need a developer?

Yes. You will need a developer to implement JobPosting structured data on your website.

Google will need to be able to visit your pages

If you are blocking Google from visiting your job listing pages they will not appear in Google Job Search.

What is JobPosting structured data?

JobPosting is the schema that Google uses for Google Job Search, and is required to appear in Google Job Search (unless you are happy just to see your jobs appear only on aggregator websites).

The full list of properties can be found on the website.

Required properties

There are 6 required properties:

  • datePosted
  • description
  • hiringOrganization
  • jobLocation
  • title
  • validThrough

Additionally, there are 5 recommended properties:

  • applicantLocationRequirements
  • baseSalary
  • employmentType
  • identifier
  • jobLocationType

Update (15/7/2021):

Google released a new optional property:

  • directApply


The following is an example we created for a UK based contractor job paid at £40 per hour.

    <script type="application/ld+json">
      "@context" : "",
      "@type" : "JobPosting",
      "title" : "Head of SEO",
      "description" : "<p>Search Candy are an SEO company based in Manchester. This job entails being a total boss at SEO.</p>",
      "identifier": {
        "@type": "PropertyValue",
        "name": "Search Candy",
        "value": "1234567"
      "datePosted" : "2020-08-12",
      "validThrough" : "2020-12-31T00:00",
      "employmentType" : "CONTRACTOR",
      "hiringOrganization" : {
        "@type" : "Organization",
        "name" : "Search Candy",
        "sameAs" : "",
        "logo" : ""
      "jobLocation": {
      "@type": "Place",
        "address": {
        "@type": "PostalAddress",
        "streetAddress": "16 Blackfriars Street",
        "addressLocality": "Salford",
        "addressRegion": "Manchester",
        "postalCode": "M3 5BQ",
        "addressCountry": "UK"
     "baseSalary": {
        "@type": "MonetaryAmount",
        "currency": "GBP",
        "value": {
          "@type": "QuantitativeValue",
          "value": 40.00,
          "unitText": "HOUR"
    </script>Code language: JSON / JSON with Comments (json)

How to validate JobPosting structured data

You can validate your JobPosting structured data for Google Job Search using the Rich Results Testing Tool from Google.

Google can be forgiving if you miss a few optional fields / have some errors, but generally you want to have as complete a listings as possible.

For example Google will understand however if you cannot include information such as the exact address of the job - but at the very least you should include which city/region the job is located in.

Google Indexing API

To get jobs listed quickly it is important to also use the Google Indexing API.


Last modified: Created: