Job Posting

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.

Country availability

We are excited to bring the job search experience on Google to more countries around the world. The experience is currently available in the following countries.


Here is an example of job search results.

Job posting example in search results

See an example for an individual job posting using JSON-LD code in the Structured Data Testing Tool.

Create a job posting

  1. Ensure that Googlebot can crawl your job posting web pages (not protected by a robots.txt file or robots meta tag).
  2. Ensure that your host load settings allow for frequent crawls.
  3. Make sure you follow our guidelines.
  4. Add job posting structured data to your web page.
  5. 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.
  6. Test and preview your structured data.
  7. 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:

      For example:

      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:

  1. 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.
  2. 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:

      For example:

      We ingest the entire sitemap and recrawl the pages with lastmod times that are more recent than the last time those pages were crawled.

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.


You must follow these guidelines to be eligible to appear in the Google job search experience.

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 structured data to display in search results. Any job posting that is missing the required fields will not be considered for enhanced Search results. You can also include the recommended properties to add more information to your structured data, which could provide a better user experience.

You can use Google’s Structured Data Testing Tool to validate and preview your structured data.


The full definition of JobPosting is available on



Set the @context to "".



Set the @type to "JobPosting". For example:

"@type": "JobPosting"

MonetaryAmount, Recommended

The actual base salary for the job, as provided by the employer (not an estimate).

For the unitText of QuantitativeValue, use one of the following case-sensitive values:

  • "HOUR"
  • "DAY"
  • "WEEK"
  • "MONTH"
  • "YEAR"

For example:

"baseSalary" : {
  "@type": "MonetaryAmount",
  "currency": "USD",
  "value": {
    "@type": "QuantitativeValue",
    "value": 40.00,
    "unitText": "HOUR"

To specify a salary range, define a minValue and a maxValue, rather than a single value. For example:

"baseSalary" : {
  "@type": "MonetaryAmount",
  "currency": "USD",
  "value": {
    "@type": "QuantitativeValue",
    "minValue": 40.00,
    "maxValue": 50.00,
    "unitText": "HOUR"

Date, Required

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"

Text, Required

The full description of the job in HTML format.

The description should be a complete representation of the job, including job responsibilities, qualifications, skills, working hours, education requirements, and experience requirements. The description can't be the same as the title.

Additional guidelines:

  • You must format the description in HTML.
  • At minimum, add paragraph breaks using <br>, <p>, or \n.
  • Valid tags include <p>, <ul>, <li>, and headings <h1> through <h5>.
  • You can also use character-level formatting tags such as <strong> and <em>.

Text, Recommended

Type of employment. For example:

"employmentType" : "CONTRACTOR"

Choose one or more of the following case-sensitive values:

  • "INTERN"
  • "PER_DIEM"
  • "OTHER"

You can include more than one employmentType property. For example:

"employmentType" : ["FULL_TIME", "CONTRACTOR"]

Organization, Required

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" : ""

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 hiringOrganizaion array. Make sure that you follow the logo image guidelines and Company logo guidelines. For example:

"hiringOrganization" : {
    "@type" : "Organization",
    "name" : "MagsRUs Wheel Company",
    "sameAs" : ""
    "logo" : ""

PropertyValue, Recommended

The hiring organization's unique identifier for the job.

For example:

"identifier": {
    "@type": "PropertyValue",
    "name": "MagsRUs Wheel Company",
    "value": "1234567"

Place, Required

The geographic location(s) where the employee will primarily work, 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"

If the job has multiple locations, add multiple jobLocation properties in an array. Google will choose the best location to display based on the job seeker's query.

For jobs in which the employee works remotely 100% of the time and therefore works from home, add the additionalProperty field with value TELECOMMUTE. For example:

"jobLocation" : {
  "@type": "Place",
  "address" : {
    "@type" : "PostalAddress" ,
    "streetAddress" : "555 Clancy St" ,
    "addressLocality" : "Detroit" ,
    "addressRegion" : "MI" ,
    "postalCode" : "48201" ,
    "addressCountry" : "US"
  "additionalProperty" : {
      "@type" : "PropertyValue",
      "value" : "TELECOMMUTE"

Text, Required

The title of the job (not the title of the posting). For example, "Software Engineer" or "Barista". For example:

"title" : "Software Engineer"

Best practices:

  • This field should be the title of the job only.
  • Don't include job codes, addresses, dates, salaries, or company names in the title field.

    Not recommended: Apply now for IT job -FRENCH speaker in Bucharest

    Recommended: Market Specialist, French speaker

  • Provide concise, readable titles.
  • Don't overuse special characters such as "!" and "*". Abusing special characters might cause your structured data to be considered as Spammy Structured Markup. Numbers and characters such as "/" and "-" are acceptable.

    Not recommended: *** WAREHOUSE HIRING NOW!! ON A BUS ROUTE!! ***

    Recommended: Shipping and Receiving Warehouse Associate

  • Don't use name instead of title. The properties title and name aren't interchangeable.
  • If you're a third party job site, don't attempt to modify the job title to follow the guidelines above, as it can make the title unreadable. Instead, provide the title as you received it from the employer.

DateTime, Required

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.