Google for Jobs
checker
Google for Jobs lists a job only when its page carries valid JobPosting structured data that Google can crawl and index. Paste a job advert URL and this checker tests the markup, the required and recommended properties and the indexing settings, then tells you what to fix.
Check a job page ↓Test a job advert
Rules follow Google's job posting structured data documentation. Up to 10 checks an hour.
Ten checks on one job page
- 01Page statusThe page returns HTTP 200, not a 404, 410, 403 or server error.
- 02IndexingNo noindex in the robots meta tag or the X-Robots-Tag header, and robots.txt lets Googlebot in.
- 03CanonicalThe canonical tag doesn't point Google at a different URL, such as the jobs listing.
- 04Valid JSON-LDEvery structured data block parses. One stray comma makes Google ignore the whole block.
- 05JobPosting foundIncluding inside @graph, arrays and nested objects. Microdata is noted.
- 06Required propertiestitle, description, datePosted, hiringOrganization (with a name) and jobLocation, or the remote alternative.
- 07DatesvalidThrough hasn't passed and datePosted isn't in the future.
- 08Description lengthA description that's missing or only a couple of lines.
- 09Recommended propertiesbaseSalary, employmentType, validThrough, identifier and directApply, with Google's allowed values.
- 10ATS iframesJobs shown in an iframe from an ATS with no JobPosting on your own page.
Required and recommended properties
These are the properties Google documents for JobPosting structured data. Required properties decide whether a job is eligible at all; recommended ones improve how it shows and who sees it. Google recommends JSON-LD, and says it can read JSON-LD that is injected with JavaScript.
Required
- title
- The job title only: no salary, codes, dates or company name.
- description
- The full advert as HTML: responsibilities, qualifications, skills, working hours, education and experience. It can't be the same as the title.
- datePosted
- When the job was first posted, in ISO 8601 (for example 2026-01-24).
- hiringOrganization
- The company hiring, with a name. Google allows "confidential" for an anonymous client.
- jobLocation
- Where the person will work, including addressCountry. A 100% remote job can use applicantLocationRequirements with jobLocationType TELECOMMUTE instead.
Recommended
- baseSalary
- The actual base pay from the employer, with currency, an amount or range, and unitText of HOUR, DAY, WEEK, MONTH or YEAR.
- employmentType
- FULL_TIME, PART_TIME, CONTRACTOR, TEMPORARY, INTERN, VOLUNTEER, PER_DIEM or OTHER (case-sensitive).
- validThrough
- The closing date. Leave it out only if the job never expires or the date is unknown.
- identifier
- Your own unique reference for the job.
- directApply
- Whether people can apply on the page without extra clicks, form steps or logins.
- jobLocationType / applicantLocationRequirements
- For fully remote jobs: TELECOMMUTE, plus the countries or regions applicants can work from.
Why jobs don't show in Google for Jobs
When a recruitment website's jobs are missing from Google for Jobs, the cause is nearly always on the job page itself. These are the six we see most, in the order to rule them out. For the full walk-through read why your jobs are not showing on Google for Jobs, and for how it works end to end, our Google for Jobs guide.
No JobPosting markup on the job page
Google lists jobs from pages with JobPosting structured data. Many recruitment sites show jobs without it, or only on the listing page.
The job sits in an iframe or widget
If your ATS shows jobs in an iframe or in a script-loaded widget, the markup belongs to the ATS's page, not yours. Each job needs its own page on your domain.
Missing required properties
No datePosted, a hiringOrganization without a name, or a jobLocation without a country are the usual gaps in older job board plugins.
The page can't be indexed
A leftover noindex, a robots.txt rule on /jobs/ or a login wall keeps Google out. Google says job pages must not be blocked by robots.txt, noindex or login requirements.
Expired or misdated jobs
A validThrough date that has passed marks the job as expired. Google asks you to remove filled jobs, so stale adverts work against you.
Markup that doesn't match the page
Google's guidelines say all information in the markup must be visible on the job page, and each page should carry one job, not a list.
Source: Google Search Central, job posting structured data. To see what Google renders, including script-built markup, use the Rich Results Test.
Every job, every time
We build job pages that are generated from your ATS with complete JobPosting markup, and removed when the role closes. Or start with a free audit of your whole site, which includes a Google for Jobs check across several of your adverts.
The most common reasons are: the job page has no JobPosting structured data, required properties are missing (title, description, datePosted, hiringOrganization, jobLocation), the page is blocked by noindex or robots.txt, the job is shown in an iframe from your ATS, or the validThrough date has passed. Run a job URL through the checker to see which applies.
It loads one job page and checks the HTTP status, noindex in the meta robots tag and X-Robots-Tag header, robots.txt, the canonical tag, whether every JSON-LD block is valid, and every required and recommended JobPosting property from Google's documentation, including dates, salary units and employment types.
No. The checks show whether a job page meets Google's documented requirements, which makes it eligible. Google still decides what to show and when. Use Google's Rich Results Test and the Search Console job posting report to confirm what Google has picked up.
No. The checker reads the HTML the server sends, before scripts run. Google says it can read JSON-LD injected with JavaScript, so if the checker finds nothing but your site builds the markup in the browser, test the page in Google's Rich Results Test, which renders scripts.
No. Any website can appear if each job has its own page with valid JobPosting structured data that matches the visible advert. What matters is that your job pages are generated from your ATS with complete markup and removed or expired when the role closes.
