Key Takeaways
- Job listing pages (individual postings) are ephemeral — they typically expire within 30–60 days; investing in individual job page SEO is less valuable than building strong category pages (by role, by location, by industry) that aggregate current listings and rank for durable, high-volume queries
- JobPosting schema is mandatory for eligibility in Google's Jobs feature (the dedicated job search widget that appears above organic results for job queries) — without valid JobPosting JSON-LD, your listings are invisible in this high-traffic placement
- Expired job listings returning 200 with "Job no longer available" thin content are the most common SEO problem on job boards — they consume crawl budget and may be flagged as thin content; expired URLs should return 410 Gone (preferred) or 301-redirect to the category page
- Duplicate content from job feed syndication (the same job description appearing on multiple boards) is unavoidable, but can be managed by adding original editorial content to category and location pages, which are unique to your site
- Location pages ("Software Engineer Jobs in London") are the highest-value long-term SEO investment for a job board — they target high-intent, lower-competition queries and don't expire when individual listings do
JobPosting Schema — Eligibility for Google Jobs
Google Jobs is the dedicated job search feature that appears for queries like "software engineer jobs London" — above the standard organic results. To appear in Google Jobs, each listing page must have valid JobPosting schema.
Required fields (Google's spec):
title— exact job titledescription— full job description (not a snippet)datePosted— ISO 8601 date when the job was postedvalidThrough— expiry date (strongly recommended — helps Google remove expired listings)hiringOrganization—@type: Organization,name, andsameAs(company URL)jobLocation—@type: Place+addressLocality,addressCountryemploymentType— FULL_TIME, PART_TIME, CONTRACTOR, TEMPORARY, INTERN, VOLUNTEER
Optional but recommended: baseSalary, identifier (your internal job ID), directApply.
Validate every listing with the Schema Markup Tester to catch required-field errors before Google attempts to index the listing.
URL Structure for Job Boards
Clean, keyword-rich URL structure for each level:
- Job listing:
/jobs/[role-slug]-at-[company-slug]/[unique-id]/— human-readable but includes a unique ID to avoid clashes - Category (role):
/jobs/software-engineer/— breadcrumb for all software engineering listings - Location:
/jobs/london/— all jobs in London - Role + location:
/jobs/software-engineer/london/— high-intent, lower-competition intersection queries
Avoid: /jobs/?id=12345 (no keywords, harder to crawl) or /jobs/listing/12345/software-engineer-company-name-london-uk-2026 (too long, keyword-stuffed).
Managing Crawl Budget
High-volume job boards burn crawl budget on ephemeral job listing pages. Crawl budget management:
1. Expire pages correctly. Expired jobs must return 410 Gone (preferred) or 301 redirect to the category page — NOT a 200 with thin "job no longer available" content. A 200 thin page stays in the index and consumes future crawl attempts.
2. Sitemap hygiene. Remove expired job URLs from your sitemap immediately — don't wait for Googlebot to discover they're gone. A sitemap full of 410 URLs signals crawl budget waste.
3. Robots.txt for low-value patterns. Consider Disallow: /jobs/apply/ and /jobs/saved/ (user-action URLs with no SEO value) to focus crawl budget on indexable content.
4. Internal link to fresh listings from category pages. Category pages that link to current, active listings signal freshness to Googlebot and ensure current listings are discovered quickly.
The Sitemap Validator checks every URL in your sitemap for broken links and redirect chains — useful for identifying expired job URLs still sitting in your sitemap returning non-200 statuses.
Category and Location Pages
Category pages (role, location, role+location intersections) are the evergreen SEO foundation of a job board. Individual listings expire; category pages accumulate rankings.
Effective category page elements:
- Unique editorial content — a 200–400 word introduction to the role or location (what makes it in demand, salary range, skills required) that differentiates your page from other boards with the same listings
- Structured listing data — current active listings with title, company, location, date posted, and a clear "Apply" CTA
- Breadcrumbs — BreadcrumbList schema + visible breadcrumb navigation; helps Google understand site hierarchy
- Internal links to related categories — "Related: Data Engineer Jobs in London", "More London tech jobs"
lastmodin sitemap — update category pagelastmodwhenever new listings are added, to signal freshness
Duplicate Content From Syndicated Feeds
Most job boards aggregate listings from employer ATS systems or job feed APIs — the same job description text appears across multiple boards. This is unavoidable but manageable:
Don't rely on listing pages for SEO. They have duplicate content by nature. Invest in unique category page content instead.
Canonical tags. If you aggregate listings also published on an employer's careers page, a <link rel="canonical"> pointing to the employer's page is honest but gives them the ranking credit. Only do this if the employer's page is clearly authoritative; otherwise keep your canonical self-referencing.
Structured data differentiators. Add unique baseSalary data, application tracking, and user-generated ratings if your platform has them — these differentiate your listing page beyond the job description.
TITLE_DUPLICATE and DESC_DUPLICATE.
Technical SEO Checklist for Job Boards
- All expired jobs return
410or301— no thin "job unavailable" pages - Sitemap excludes expired job URLs — validated with Sitemap Validator
- JobPosting schema on every listing — validated with Schema Markup Tester
- Category pages have unique editorial content (not just listing aggregations)
- Location + role intersection pages for top job types in top cities
- Breadcrumbs on all pages + BreadcrumbList schema
- Robots.txt disallows user-action URLs (
/apply/,/saved/,/account/) - Pagination handled correctly —
rel="next"/"prev"or single infinite scroll with pushState
Validate Your Job Board's Sitemap Before Submitting to Google
Free, no signup. The Sitemap Validator fetches your XML sitemap and checks every URL for broken links, redirect chains, and noindex conflicts — the fastest way to identify expired job listings still sitting in your sitemap.
Validate Your Sitemap Free →Affiliate disclosure: Some links on this page may be affiliate links. We only mention tools we've personally used and have an honest opinion about. Affiliate revenue helps keep ByteWaveNetwork's tools free and maintained. We are not paid by any of the tools compared in this article for favorable coverage.