Recently, we covered on our blog that Google appears to be making large steps to test a Google-powered jobs engine. Having recently witnessed a Jobs page appear and quickly be removed from the early access search features page on Google Search, we have some clues into what may be happening behind the scenes.

As a result, Impression’s advice for recruiters, jobs boards and recruitment software/platforms right now it to embrace structured data for your best chances of future proofing your recruitment SEO.

Structured data and schema

Structured data is a code-based description or markup of the content that is present on the page. It’s easily machine readable and hidden from users, so it’s the perfect way to let a bot know the true purpose of a page. Presence of Schema isn’t a ranking signal, but it’s certainly our belief that correctly implemented schema on complex data types, such as jobs, will vastly improve data quality should it be included in a third party index (i.e. Google’s).

For those new to the technologies, the premise is relatively simple; everything that can be described on the web is a ‘thing’. To make life a little easier, there’s a large number of more specific ‘things’ with set attributes which we can describe, such as events, blog posts, reviews, places, organisations, movies, books… and of course – job postings.

Each attribute (i.e. title or salary for a job posting) can also be a ‘thing’ too – so a place of work might be a description of an organisation. You can see how this multi-level set of descriptive information begins to get very powerful.

Microdata and RDFa, two widely adopted structured data formats, appended additional code to pre-existing blocks of HTML on a page. If there was a “box” <div> tag around an address, then typically this and each line within it would be marked up as so;

<div itemscope itemtype="">
<span itemprop="name">Google Inc.</span>
P.O. Box<span itemprop="postOfficeBoxNumber">1234</span>
<span itemprop="addressLocality">Mountain View</span>,
<span itemprop="addressRegion">CA</span>
<span itemprop="postalCode">94043</span>
<span itemprop="addressCountry">United States</span>

This is great for marking up something simple, like an address, but it’s not necessarily that nice for a bot to access as the code is interspersed between the visual layout items in the page.


JSON-LD is a relatively new entrant to this arena. JSON-LD is a JSON code block which can appear anywhere on the page and is not visible to web users, and is very easily machine readable for bots. This makes it a really useful format for not only describing things in the first place, but also maintaining them (it’s SO much cleaner). Adoption is improving, as you can see below. We’re assuming Bing will catch up at some point…

A full JobPosting example

So, to bring this to life for our future recruitment friends; through using the Schema.Org JobPosting structure, we have created a mock job markup for an SEO Manager at Impression below.

Testing your structured data

Google provides a very useful tool for validating the markup you place on a page. This is the Structured Data Testing Tool and it will assist you in debugging any issues you come across during development.

If you’re having any further issues, or you have some questions on our thoughts, please let us know in the comments below!

Aaron Dicks

Performance Director

Performance Director of Impression. Search engine optimisation, paid media and web analytics consultant. Also programmer and digital all-rounder. @aarondicks

Aaron has specialist knowledge in SEO, PPC and Analytics Consultancy.

2 thoughts on “Recruitment SEO: Ensuring your website uses structured data correctly

  1. Joe Sutherland says:

    Thanks for the write-up. I noticed that you didn’t include the hiringOrganization property. While doesn’t list this as required, Google does list it as required. When I paste your snippet into the Structured Data Testing Tool you linked to, it complains about the lack of that property and lists it as an error.

    The conundrum is that the Google documentation page that speaks about this requirement also states that if you are a recruiter posting a job where your firm is not the end hiring organization, this workflow is acceptable as long as you have a capability for the candidate to apply but states that you must leave the hiringOrganization property blank. Since the validation tool will throw an error, though, I’m concerned that my postings won’t generate a rich snippet/card.

    I posted a question about this on SO ( but haven’t gotten any replies. Are you aware of any other resources I could reach out to about this problem?

    1. aarondicks says:

      Hi Joe, thanks for bringing this to my attention.

      I’m sure the documentation for this is changing rapidly as Google’s product is rolled out further. Just yesterday they went public with their ‘Hire’ product, so it’s clear applicant tracking and hiring is high on the agenda right now.

      As a result of this I’m tempted to suggest that there *may* be errors in the way the structured data testing tool is reporting on these new(er) schemas.

      That said, of all of the docs provided, it’s likely the one you referenced is the most recent and hiringOrganization is marked clearly as required. If I were you, and depending on your circumstances/availability to change this over time, I would suggest you include the hiringOrganization as your organisation (presume you’re a recruiter firm?) until this becomes more clear.

      By leaving it blank, you run the risk of not being valid and not showing. By filling the field, your firm will definitely be valid and will probably show as the hiringOrganization anyway without further recourse.

      Do you have an example of your data object? Where in the world are you based?


      Note: This is an evolving issue and my advice on this may change over time!