How to get your jobs into Google for Jobs

Google for Jobs is free distribution that most companies never appear in, because of a structured data problem nobody in the hiring team can see.

Google for Jobs is the search experience that appears above organic results when someone searches for a role. Appearing in it costs nothing, and a large share of companies never do — not because they were rejected, but because their postings do not carry the structured data required to be eligible.

The fix is technical and one-off. Most hiring teams cannot see the problem because it lives in the page markup rather than in anything visible on screen.

What is required

Each job page must include JobPosting structured data in JSON-LD, and the page must be crawlable and indexable. That is the whole eligibility test.

The required properties are:

  • title — the job title alone. Not "Senior Engineer - Istanbul - Apply Now". Location, seniority decoration and marketing text in the title are a common cause of poor matching.
  • description — the full posting as HTML, including responsibilities and qualifications. Substantial content matters here; a two-line description performs badly.
  • datePosted — ISO 8601 format.
  • hiringOrganization — name and, ideally, the organisation URL and logo.
  • jobLocation — a structured postal address. A country alone is usually insufficient; include locality and region.

Strongly recommended, and worth treating as required in practice:

  • validThrough — an expiry date. Without it, postings linger and stale listings damage how the whole domain is treated.
  • employmentType — FULL_TIME, PART_TIME, CONTRACTOR, TEMPORARY, INTERN.
  • baseSalary — structured, with currency and unit. It also makes listings more prominent, and salary transparency is increasingly required anyway: see writing the posting.
  • jobLocationType — set to TELECOMMUTE for remote roles, with applicantLocationRequirements.

The five failures that actually happen

1. Expired jobs left live

The most damaging and the most common. When a role closes, the page must either be removed and return a 404 or 410, or have its validThrough date set in the past. Leaving closed roles indexed teaches the crawler that your listings are unreliable.

2. Location as a plain string

jobLocation must be a structured PostalAddress. A free-text "Istanbul, Turkey" frequently fails to match location-based searches, which are most of the searches.

3. Description duplicated in the wrong place

The description property must contain the full posting. Splitting responsibilities and requirements across other properties, or leaving the description as a summary, produces a valid but uncompetitive listing.

4. The page is not indexable

Structured data on a page blocked by robots.txt, marked noindex, or rendered only after a client-side fetch will not produce a listing. Check what the crawler receives, not what a browser shows.

5. Title stuffing

Appending location, contract type or "urgent" to the title harms matching. Those belong in their own properties, which is exactly why the properties exist.

Getting it indexed

  1. Validate a live job URL with the Rich Results Test. Fix every error; warnings are usually worth fixing too.
  2. Submit the page in Search Console and check the JobPosting report for coverage errors.
  3. Publish a jobs sitemap listing your live postings, and keep it current as roles open and close.
  4. Where you post at volume, use the Indexing API for job postings — it is designed for content with a short lifespan and is materially faster than waiting for a crawl.

Verifying it worked

Search for your exact job title plus your company name. If the listing appears in the jobs experience, eligibility is working. Then search the job title plus the location without your company name to see whether you are competitive rather than merely present.

Give it days rather than hours. New domains and new job sections take time to be trusted.

Why this is worth doing

It is free distribution into the place candidates start looking, and it favours the employer directly rather than an aggregator. For roles where you currently pay for aggregator traffic that converts poorly, appearing here changes the economics — the comparison to make is in source quality.

It also compounds with careers page quality, since the listing sends candidates to your page rather than to a third-party form: the careers page audit.

Hireall generates JobPosting structured data, expiry handling and the jobs sitemap from the posting itself, so the markup stays correct as roles open and close — see careers pages and distribution.

Get hiring insights in your inbox

One email a week — the best playbooks, benchmarks and product updates. No spam.

More from Resources

Everything you need to hire better — in one place.