You can improve the job seeking experience by adding job posting structured data to your job posting web pages. Adding structured data makes your job postings eligible to appear in a special user experience in Google Search results. You can also integrate with Google by using a third party job site. For employers and job content site owners, this feature brings many benefits:
- Results included in enriched search results: Your postings can be eligible to be displayed in the job search experience on Google, featuring your logo, reviews, ratings, and job details.
- More, motivated applicants: The new user experience enables job seekers to filter by various criteria like location or job title, meaning you’re more likely to attract applicants who are looking exactly for that job.
- Increased chances of discovery and conversion: Job seekers will have a new avenue to interact with your postings and click through to your site.
Region availability
We are excited to bring the job search experience on Google to more regions around the world. The experience is currently available in the following regions.
Example
Here is an example of job search results.
Here's an example of an individual job posting using JSON-LD code in the Structured Data Testing Tool.
Create a job posting
- Ensure that Googlebot can crawl your job posting web pages (not protected by a robots.txt file or robots meta tag).
- Ensure that your host load settings allow for frequent crawls.
- Make sure you follow our guidelines.
- Add job posting structured data to your web page.
- If you have several copies of the same job posting on your site hosted under different URLs, use canonical URLs on each copy of the page.
- Test and preview your structured data.
- Keep Google informed by doing one of the following actions:
- Use the Indexing API to notify Google of a new URL to crawl or that content at a URL has been updated.
- If you're not using the Indexing API, submit a new sitemap to Google by sending a
GET
request to the following URL:http://www.google.com/ping?sitemap=location_of_sitemap
For example:
http://www.google.com/ping?sitemap=http://www.example.com/sitemap.xml
We ingest the entire sitemap and recrawl the pages with
lastmod
times that are more recent than the last time those pages were crawled.
Remove a job posting
To remove a job posting that is no longer available, follow the steps below:
- Make sure your page is removed by doing one of the following actions:
- Ensure the
validThrough
property is populated and in the past. - Remove the page entirely (so that requesting it returns a 404 or 410 status code).
- Remove
JobPosting
structured data from the page.
- Ensure the
- Keep Google informed by doing one of the following actions:
- Use the Indexing API to request removal of a job posting URL from the Google Search index.
- If you're not using the Indexing API, submit a new sitemap to Google by sending a
GET
request to the following URL:http://www.google.com/ping?sitemap=location_of_sitemap
For example:
http://www.google.com/ping?sitemap=http://www.example.com/sitemap.xml
We ingest the entire sitemap and recrawl the pages with
lastmod
times that are more recent than the last time those pages were crawled.
Update your company logo
Google uses the same logo for your job postings as the image shown in your company’s Knowledge Graph card. You can suggest a change if you prefer a different logo, or else indicate your preferred logo (for both your company’s Knowledge Graph card and its job postings) using structured data.
If you have a third-party job site, you can provide a different logo for a given organization than
the image shown in the organization's Knowledge Graph card. Google will pick the best logo to display
in Search results, whether it's the Knowledge Graph logo or the hiringOrganization
logo. The
logo property is only eligible to be shown on your job site, and isn't treated as the canonical logo
for the organization. For more information,
see hiringOrganization.
Mark up remote jobs
There are three properties that help Google understand which jobs can be performed remotely:
jobLocation
: Use this property to specify where the job can be physically performed. You don't need to use this property if there isn't a physical location where a job can be performed (for example, an office or construction site).jobLocationType
: Use this property to specify that the job is remote.applicantLocationRequirements
: Use this property to specify geographic location(s) in which employees may be located for remote jobs. At least one country is required.
Here are some common scenarios in which you should mark up remote jobs:
- The job can be performed at a physical work site located in Detroit, MI or a remote
location within the US. Use
jobLocation
andjobLocationType
. - The job can be performed at a physical location in Detroit or a remote location in either
Michigan or Texas. Use
jobLocation
,jobLocationType
, andapplicantLocationRequirements
. - The job can be performed at a remote location, but there are geographical restrictions for
where the remote work can be performed. The
employee doesn't have to go to a physical job location or office. Use
applicantLocationRequirements
andjobLocationType
.
Monitor performance in Search
You can understand how users interact with your job posting by using the following Google tools:
- Use the Performance Report in Search Console to show job listing or detail view data for a given job posting rich result. You can automatically pull these results with the Search Console API.
- Use our custom UTM parameters to track impressions after a user is directed from the job detailed page to your site. You can use the parameters with Google Analytics or other third-party tracking tools:
- utm_campaign=google_jobs_apply
- utm_source=google_jobs_apply
- utm_medium=organic
If you're experiencing unexpected fluctuations or inconsistencies in your traffic, use the troubleshooter to identify and resolve the issues.
Guidelines
You must follow these guidelines to be eligible to appear in the Google job search experience.
- Technical guidelines
- Content guidelines
- Enriched search quality guidelines
- Webmaster guidelines
- General structured data guidelines
Technical guidelines
- Put structured data on the most detailed leaf page possible. Don't add structured data to pages intended to present a list of jobs (for example, search result pages). Instead, apply structured data to the most specific page describing a single job with its relevant details.
- Add a
JobPosting
property for each job posting that you want to advertise. The structured data should appear on the same page as the job description that job seekers can read in their browser. - Most properties should only occur once in your job posting web page, unless the description specifically indicates that it can be added more than once.
If you choose to use sitemaps to keep Google informed of changes to job posting URLs, follow the general sitemap guidelines. In addition, the following sitemap guidelines apply to job posting URLs.
- Make sure Googlebot can access the URLs in the sitemap. Be sure that the URLs you include in the sitemap are not behind a firewall or disallowed by your robots.txt file.
- Use as accurate a time as possible for the
<lastmod>
(sitemap),<pubDate>
(RSS), or<updated>
(Atom) values to indicate when the page was added or changed. The value should be the last time that the content at the URL changed. It's important that you use accurate times; crawl bandwidth is limited and accurate times help us avoid re-crawling pages that haven't changed. In addition, the more Google has to crawl your pages, the more load will be placed on your servers. - Don't include search results pages, list pages, or other dynamic pages in the sitemap.
- The URLs in the sitemap should include the canonical page for each job posting.
Content guidelines
- Job postings must be valid. A valid job posting allows a job seeker to apply for an available role at a company or agency directly online.
- Job postings must fairly represent the hiring organization and job to be performed by the applicant.
- If Google receives a complaint that content in a job listing may violate the law (for example, if a trademark or copyright owner reports a job listing that is using their content without permission), we will handle it according to our removal policies.
- Don’t use obscene, profane, or offensive language.
Structured data type definitions
This section describes the structured data types related to job postings.
You must include the required properties for your content to be eligible for display in enhanced search results. You can also include the recommended properties to add more information about your content, which could provide a better user experience.
You can use the Structured Data Testing Tool to validate and preview your structured data.
JobPosting
The full definition of JobPosting
is available at
schema.org/JobPosting.
Required properties | |
---|---|
datePosted |
The original date that employer posted the job in ISO 8601 format. For example, "2017-01-24" or "2017-01-24T19:33:17+00:00". "datePosted": "2016-02-18" |
description |
The full description of the job in HTML format. The Additional guidelines:
|
hiringOrganization |
The organization offering the job position. This should be the name of the company (for example, “Starbucks, Inc”), and not the specific location that is hiring (for example, “Starbucks on Main Street”). For example: "hiringOrganization": { "@type": "Organization", "name": "MagsRUs Wheel Company", "sameAs": "http://www.magsruswheelcompany.com" } Logos on third-party job sites If you have a third-party job site, you can provide a different logo for a given
organization than the image shown in the organization's Knowledge Graph card. To request a
different logo for a hiring organization, add the
logo property to the "hiringOrganization": { "@type": "Organization", "name": "MagsRUs Wheel Company", "sameAs": "http://www.magsruswheelcompany.com", "logo": "http://www.example.com/images/logo.png" } |
jobLocation |
The physical location(s) of the business where the employee will report to work (such as an office or worksite), not the location where the job was posted. Include as many fields as possible. The more properties you provide, the higher quality the job posting is to our users. For example: "jobLocation": { "@type": "Place", "address": { "@type": "PostalAddress", "streetAddress": "555 Clancy St", "addressLocality": "Detroit", "addressRegion": "MI", "postalCode": "48201", "addressCountry": "US" } } Multiple physical locations If the job has multiple locations, add multiple Remote jobs For jobs in which the employee may or must work remotely 100% of the time, you must use
|
title |
The title of the job (not the title of the posting). For example, "Software Engineer" or "Barista". For example: "title": "Software Engineer" Best practices:
|
validThrough |
The date when the job posting will expire in ISO 8601 format. For example, "2017-02-24" or "2017-02-24T19:33:17+00:00". For example: "validThrough": "2017-03-18T00:00" If a job posting never expires, or you do not know when the job will expire, do not include this property. If the job is filled before the expiration date occurs, remove the job posting. |
Recommended properties | |
---|---|
applicantLocationRequirements |
The geographic location(s) in which employees may be located for to be eligible for the remote job. The job description must clearly state that the applicant may be located in certain geographical location(s). This property is only recommended if applicants may be located in one or more geographic locations and the job may or must be 100% remote. The following example suggests a job that can be done remotely anywhere within the United States: "applicantLocationRequirements": { "@type": "Country", "name": "USA" }, "jobLocationType": "TELECOMMUTE" The following example suggests a job can either be done remotely from the country of Canada or executed at a physical location in Detroit, MI: "jobLocation": { "@type": "Place", "address": { "@type": "PostalAddress", "streetAddress": "555 Clancy St", "addressLocality": "Detroit", "addressRegion": "MI", "postalCode": "48201", "addressCountry": "US" } }, "applicantLocationRequirements": { "@type": "Country", "name": "Canada" }, "jobLocationType": "TELECOMMUTE" |
baseSalary |
The actual base salary for the job, as provided by the employer (not an estimate). For the
For example: "baseSalary": { "@type": "MonetaryAmount", "currency": "USD", "value": { "@type": "QuantitativeValue", "value": 40.00, "unitText": "HOUR" } } To specify a salary range, define a "baseSalary": { "@type": "MonetaryAmount", "currency": "USD", "value": { "@type": "QuantitativeValue", "minValue": 40.00, "maxValue": 50.00, "unitText": "HOUR" } } |
employmentType |
Type of employment. For example: "employmentType": "CONTRACTOR" Choose one or more of the following case-sensitive values:
You can include more than one "employmentType": ["FULL_TIME", "CONTRACTOR"] |
identifier |
The hiring organization's unique identifier for the job. For example: "identifier": { "@type": "PropertyValue", "name": "MagsRUs Wheel Company", "value": "1234567" } |
jobLocationType |
Set this field with the value Requirements
The following example shows that the employee can physically report to work at a job site located in Tucson, AZ OR can work remotely within the US: "jobLocation": { "@type": "Place", "address": { "@type": "PostalAddress", "addressLocality": "Tucson", "addressRegion": "AZ", "addressCountry": "US" } }, "jobLocationType": "TELECOMMUTE" |
Troubleshooting
If your job posting isn't appearing in the jobs enriched search results or if you've received a manual action for Spammy Structured Markup in Search Console, try to resolve the most common issues listed below. If you're still experiencing issues, make sure you review our guidelines.
Structured data is on the wrong page
error What caused the issue: A job listing page
(a search results page that contains one or more job postings) has JobPosting
structured data on the page. JobPosting
structured data must only be on a
job posting page (a page that contains a single job and isn't a search results page). You
may have received the Search Console message: "Structured data policy violation - A list page
should not include structured data for individual jobs".
done Fix the issue
- Remove
JobPosting
structured data from the listing page. Only placeJobPosting
structured data on pages that are dedicated to a single job posting. - After you resolve the issue, submit your site for reconsideration.
Content doesn't match the structured data
error What caused the issue: A page includes
content that doesn't match the structured data on the page. For example, the title of a job on
the page doesn't match the value listed for the title
property. There may also be
spammy content, like click-baity titles and descriptions, the job seems to be fake, or the
job posting isn't representative of the actual job. For a full
list of examples, see the examples in our content guidelines.
You may have received this Search Console message: "Structured data policy violation -
Content on pages found to be different than structured data on the page".
done Fix the issue
- Verify that the structured data aligns with the actual content on the page, is representative of the job to be performed, and doesn't mislead users.
- Use the URL Inspection tool to make sure that the content is visible on the rendered page (the rendered page is how Googlebot sees your page).
- After you resolve the issue, submit your site for reconsideration.
Expired jobs are still live
error What caused the issue: Users can still access the page through the jobs enriched search result even though the job has expired. Usually, this is because of the following reasons:
- The
validThrough
property is missing or isn't set to the past. - The page is still live.
- The job posting's apply option flow directs to an expired job posting page.
JobPosting
structured data is still present on the page even though the job has expired.
You may have received this Search Console message: "Structured data policy violation - JobPosting structured data on expired job".
done Fix the issue
- Remove the expired job posting by doing one of the following:
- Ensure the
validThrough
property is populated and in the past. - Remove the page entirely (so that requesting it returns a 404 or 410 status code).
- Remove
JobPosting
structured data from the page.
- Ensure the
- Keep Google informed by using the Indexing API.
If you're not using the Indexing API, submit a new sitemap to Google by sending a
GET
request to the following URL:http://www.google.com/ping?sitemap=location_of_sitemap
- After you resolve the issue, submit your site for reconsideration.
Apply option is missing
error What caused the issue: There's no way for the user to apply for the job on the job posting page. You may have received this Search Console message: "Structured data policy violation - Can't submit application on job offer page."
done Fix the issue
- Make sure there's a way for users to apply for the job on the page.
- After you resolve the issue, submit your site for reconsideration.
Logo is incorrect
error What caused the issue: Your site doesn't have a Knowledge Graph or the Knowledge Graph shows an incorrect logo for your site. Google uses the same logo for your job postings as the image shown in your company’s Knowledge Graph card. For more information about how Google selects your logo, see Update your company logo.
done Fix the issue
There are two ways you can fix the issue:
- Make sure you specify the correct logo with the
hiringOrganization.logo
property. Updating the structured data is faster than updating the Knowledge Graph and doesn't require you to be verified for your Knowledge Graph. - Suggest a change to your
Knowledge Graph. Updating your Knowledge Graph provides more control over how your organization
appears on Google, but it may take longer to update. If you need to fix a logo issue quickly,
add the
hiringOrganization.logo
property.
Job location is missing or incorrect
error What caused the issue: Googlebot doesn't
understand the value(s) provided for the jobLocation
, addressLocality
,
or addressRegion
properties. Google tries to match the location information to a
physical location, and the location provided is either missing or incorrect.
done Fix the issue
- Make sure the structured data includes values for
jobLocation
,addressLocality
, oraddressRegion
(depending on the location, not all of the location properties are applicable). - Validate the location fix:
- Open the Structured Data Testing Tool.
- Enter the job posting URL in the Fetch URL field.
- Click Validate.
- Click Preview.
Success: The Structured Data Testing Tool displays the correct job location in the Google Search Preview Tool.
Try again: The Structured Data Testing Tool displays "false" where the job location should be in the Google Search Preview Tool. Make sure the location is a real location.