
Posts
Posts


We crawled the careers websites of 60 large employers, rendered in Chrome, and checked 25 SEO and structured data points against Google's JobPosting documentation. This study shows what is in place, what is missing and how to fix it.
We checked what a search engine sees on each site: whether the job page can be crawled and indexed, whether it carries the structured data Google asks for, and whether the basic on-page elements are in place. A pass means the check was met on the pages we tested. A fail does not mean the site is missing from Google for Jobs; We did not test what Google shows.
Share of 60 employers passing, higher is better; job page unless stated.
One job page per site, rendered with JavaScript on unless stated.
Crawl and indexing basics were largely sound. The gaps were in the details that help a job page be understood: 18% had no JobPosting markup, 43% had no H1 in the initial HTML, and 58% had a job page title tag over 60 characters, which search results may truncate.
Share of the 60 sites whose job page markup includes each property.
Required properties are set by Google. employmentType, identifier, directApply, validThrough and baseSalary are recommended.
Of the 49 sites with JobPosting markup, 43 (88%) had every required property. In five of the six sites with incomplete required markup, the gap was a missing addressCountry in the job location. Google says JobPosting belongs on single-job pages only; none of the 60 sites placed it on the home page.
Google recommends validThrough and a way to retire expired jobs, and recommends baseSalary and directApply where they apply. Few employers set them, which is the clearest opportunity in the data.
Share of sites in each sector group with every required property.
Sector groups are our own and small, so we do not rank sectors.
The 8 Happydance careers websites we tested are reported here separately and never mixed into the 60-site figures. Happydance publishes this study and has an interest in the result.
Share of sites passing, higher is better. Subgroup: 8 Happydance sites, labelled and separate from the 60.
Happydance subgroup (8)Other sites (60)
Six selected checks; all 25 results are in Appendix A. Small subgroup.
Twelve foundation checks (indexing, JobPosting basics, titles and meta). Higher is better.
Happydance subgroup (8)Other sites (60)
The foundation list is in Appendix A. It excludes salary, directApply, validThrough and title length, which few sites pass. Small subgroup.
Share of sites in each group. Higher is better.
Happydance subgroup (8)Other sites (60)
Happydance subgroup: 6 of 8. Main sample: 6 of 60.
| Measure | Happydance subgroup (8) | Main sample (60) |
|---|---|---|
| Median foundation checks passed of 12 | 12 | 10 |
| Sites passing all 12 | 6 of 8 | 6 of 60 |
| Median Lighthouse SEO score (mobile) | 96 | 92 |
| JobPosting in the initial HTML | 8 of 8 | 45 of 60 |
| Job page H1 in the initial HTML | 8 of 8 | 34 of 60 |
The subgroup is small and consists of Happydance builds, so it shows what these 8 sites measured, not what every Happydance site will measure. Appendix A lists every check, including those where the subgroup passes fewer sites.
Careers website SEO is making a careers website and its job pages easy for search engines to crawl, understand and show. It covers crawlability, titles and meta descriptions, headings, canonical tags and JobPosting structured data.
Google's documentation says to add JobPosting structured data to each single-job page, keep it consistent with the visible page, and make the pages crawlable. Google also recommends the Indexing API for job URLs and still advises submitting a sitemap.
JobPosting is a schema.org type that describes a job in structured data, usually as JSON-LD. Google uses it to understand a job and can show it in job search results.
Google requires datePosted, description (in HTML), hiringOrganization, jobLocation (with addressCountry) and title. For fully remote jobs, applicantLocationRequirements can stand in for jobLocation.
Google recommends applicantLocationRequirements, baseSalary, directApply, employmentType, identifier, jobLocationType and validThrough.
Google says expired jobs should carry a validThrough date in the past, or the page or the markup should be removed.
No. Google says JobPosting markup belongs on single-job pages, not on list pages. None of the 60 employers in our study put it on the home page.
Run a job page through Google's Rich Results Test, then check URL Inspection and Search Console after the page is live.
If you own a careers website that was tested and believe a result is wrong, tell us and we will check it and correct it. Employer names are not published in this edition.
| Check | Main sample (60) | Share | Happydance subgroup (8) | Foundation 12 |
|---|---|---|---|---|
| Job page returns HTTP 200 | 60 | 100% | 8 | |
| No noindex on home or job page | 58 | 97% | 8 | yes |
| Job URL not blocked by robots.txt for Googlebot | 58 | 97% | 8 | yes |
| Job page has a canonical tag | 53 | 88% | 8 | yes |
| Job page canonical points to its own URL | 38 | 63% | 8 | |
| Job page H1 present in the initial HTML | 34 | 57% | 8 | yes |
| Job page text present in the initial HTML | 49 | 82% | 8 | |
| Sitemap declared in robots.txt | 38 | 63% | 7 | |
| JobPosting markup on the job page | 49 | 82% | 8 | yes |
| JobPosting markup in the initial HTML (no JavaScript) | 45 | 75% | 8 | yes |
| All required JobPosting properties present | 43 | 72% | 6 | yes |
| JobPosting: employmentType (recommended) | 44 | 73% | 8 | yes |
| JobPosting: identifier (recommended) | 43 | 72% | 8 | |
| JobPosting: validThrough (recommended) | 11 | 18% | 1 | |
| JobPosting: directApply (recommended) | 29 | 48% | 1 | |
| JobPosting: baseSalary (recommended) | 10 | 17% | 0 | |
| JobPosting description uses HTML paragraphs or lists | 22 | 37% | 8 | |
| JobPosting title matches the page H1 | 39 | 65% | 8 | yes |
| No JobPosting markup on the home page | 60 | 100% | 8 | |
| Job page title tag 60 characters or fewer | 25 | 42% | 2 | |
| Job page has a meta description | 52 | 87% | 8 | yes |
| Home page title tag 60 characters or fewer | 53 | 88% | 7 | |
| Home page has a meta description | 57 | 95% | 8 | yes |
| Home page has exactly one H1 | 44 | 73% | 8 | |
| Home page has Organization or WebSite markup | 27 | 45% | 8 | yes |
The twelve foundation checks were set as the core indexing, JobPosting basics, title and meta checks. They exclude salary, directApply, validThrough, title length and a few others that are less widely adopted or optional.
Run the same kind of checks on your own careers website with the free audit scorecard.