Short answer: Careers pages get found when each open position has its own crawlable page with a clear job title, location, employment type and a real description, published as HTML on your site rather than only inside an iframe or a script widget. Add JobPosting structured data that matches the visible text, remove or mark closed positions promptly, and link the careers section from your main navigation. A strong careers overview page also helps people who search for your company name plus “jobs” or “careers”.
Hiring is expensive, and paid job boards are only part of the picture. Many candidates search directly: “marketing manager jobs Vilnius”, “remote frontend developer”, or simply “your company careers”. If your vacancies appear only inside an applicant tracking system widget, or as a list of job titles with no detail, search engines have little to index and candidates find the job boards instead of you. A few on-page decisions make a noticeable difference.
What a good careers section looks like
A useful careers section usually has two levels:
- A careers overview page that describes working at the company: what you do, where the teams are, how hiring works, benefits and culture, with a list of current openings.
- One page per open position, each with its own URL, title and full description.
The overview page ranks for searches about the company as an employer. The individual job pages rank for the role itself and are the pages that can appear in job search features. Keep both on your main domain where possible, for example under /careers/. Hosting jobs on a separate applicant system domain is common and works, but the pages then build value for that domain rather than yours; our guide to subdomains vs subfolders explains the general trade-off.
Write job pages that answer the candidate’s questions
A job page has to work for two readers: the candidate deciding whether to apply, and the search engine deciding what the page is about. The same content serves both. Include:
- A plain job title in the H1 and the title tag, using the words people search for. “Senior Accountant” beats “Numbers Ninja”.
- Location and work model: city, office address, remote, hybrid, and any country restrictions for remote roles.
- Employment type: full-time, part-time, contract, internship.
- What the job involves: main responsibilities, the team and who the person reports to.
- Requirements separated into must-haves and nice-to-haves.
- What you offer: salary range where you can share it, benefits, working hours and growth.
- How to apply and what happens next, with a realistic timeline.
Avoid copying the same long company introduction into every job page. A short paragraph with a link to the overview page is enough; repeated blocks add little, as explained in our article on boilerplate text.
Make listings readable for crawlers
Many applicant tracking systems display jobs through an iframe or a script that loads the list after the page opens. Search engines can render JavaScript, but iframes and script-only content often mean the job text belongs to another URL or is missed entirely. Check how your setup works:
- Open the careers page with JavaScript disabled, or view the page source, and see whether the job titles and descriptions are in the HTML.
- Use the URL Inspection tool to see the rendered HTML Google gets.
- Check whether each job has a stable, shareable URL, or only a state inside the widget.
If the jobs are not visible, ask your applicant system provider whether it offers server-rendered job pages, a feed you can publish on your own site, or an integration that creates real pages. Our guide to JavaScript SEO basics covers rendering in more detail.
Add JobPosting structured data
Google supports job listings in its search results through JobPosting structured data. Its documentation on job posting structured data lists the required and recommended properties. The essentials are:
titleanddescription(the full job description, in HTML);datePostedand, where known,validThrough;hiringOrganizationwith your company name and website;jobLocationwith an address, orjobLocationTypeset toTELECOMMUTEfor remote roles, together withapplicantLocationRequirements;employmentTypeand, if you share it,baseSalary.
The markup must describe the same job the page shows, and it belongs only on pages for a single job, not on the overview list. Validate it before publishing; our guide to structured data errors explains the common problems.
Handle expired and filled positions
Old vacancies cause more trouble than most companies expect. Candidates apply to closed roles, and job search features can show listings that no longer exist. When a position closes:
- Remove the page or return a 404 or 410 if the role will not come back, or
- Keep the page with a clear “this position is filled” notice and remove the JobPosting markup, if you want to keep the URL for a recurring role, or
- Set
validThroughin advance when you know the closing date.
Do not redirect every closed job to the careers overview: a redirect from a specific job to a general page can be treated as a soft 404. The logic is similar to handling out-of-stock products. Google also offers the Indexing API for pages with JobPosting markup, which lets large employers and job sites notify Google quickly when a job is added or removed; most small sites do fine with sitemaps and prompt removal.
Optimise the careers overview page
The overview page is the one that ranks for “company name careers” and for broader employer searches. It should:
- Have a descriptive title, such as “Careers at Example Ltd: Jobs in Engineering and Sales”.
- Explain what the company does and where people work, in a few short paragraphs.
- List current openings with links to each job page, grouped by team or location if there are many.
- Show real information about working there: benefits, hiring process, team photos with alt text.
- Say what to do when nothing fits, such as an open application or a job alert.
Link to the careers page from the main navigation or the footer, and from the about page. A careers page that is only reachable through one hidden link is hard for both crawlers and candidates to find.
Several locations and remote roles
Companies hiring in several cities often create one job page per location for the same role. That is reasonable when the roles genuinely differ by location, team or language. If the text is identical apart from the city name, consider one page that lists all eligible locations instead, to avoid near-duplicate pages; our guide to location pages covers the same principle. For remote roles, state clearly which countries or time zones you can hire in, both in the text and in the structured data.
Employer questions in search and AI answers
Candidates research employers before they apply. They search for things like “what is it like to work at” a company, “salary for a developer at” a company, or ask an AI assistant whether a company offers remote work. Answers are built from whatever sources are available: review sites for employees, news articles, social profiles and your own careers pages. If your site says little, other sources fill the gap.
You can make your own information easier to find and quote:
- Answer common questions directly on the careers overview page: remote or office policy, working hours, languages used at work, the hiring steps and how long they take.
- Use plain headings such as “How we hire” or “Benefits”, so each answer is easy to locate.
- Keep facts current, especially office locations, team size claims and benefits, because outdated details get repeated.
- Add a short FAQ for questions candidates really ask, without turning it into marketing copy.
Honest, specific information helps the right people apply and saves time for everyone in the hiring process.
Check the careers section in your audit
Careers sections often have the same problems repeated on every job: missing or duplicate titles, thin descriptions, broken links to expired jobs and invalid structured data. Site SEO AI Audit crawls your site like a search engine and checks titles, descriptions, thin and duplicate content, broken links, status codes and JSON-LD on every page, then ranks the fixes by how many points each adds. The first audit of up to 200 pages is free.
Related reading
The bottom line
Job openings are content, and they deserve real pages. Give each position its own crawlable URL with a plain title, location, employment type and full description, make sure the text is in the HTML rather than only in a widget, add JobPosting markup that matches the page, and remove closed positions promptly. A clear careers overview page, linked from your navigation, does the rest.
الأسئلة الشائعة
Do job listings need structured data to appear in Google?
To appear in Google’s job search features, a listing needs valid JobPosting structured data. Without it, the page can still rank as a normal search result, but it will not show the job-specific display.
Should closed job listings be deleted?
Usually yes, or at least marked as filled with the JobPosting markup removed. Expired listings frustrate candidates and can keep appearing in search. Return a 404 or 410 for roles that will not come back.
Is an applicant tracking system widget bad for SEO?
Not always, but many widgets load jobs in an iframe or through scripts, so the job text is not part of your page. Check the rendered HTML, and ask the provider about server-rendered job pages or feeds if the jobs are invisible.
Should I create a job page for every city?
Only when the roles genuinely differ. If the same job is open in several locations with identical text, one page listing all locations avoids near-duplicate pages and is easier to maintain.
Can I show salary ranges in structured data?
Yes. The JobPosting type supports a baseSalary property. If you include it, the value must match what the page shows, and it often makes listings more useful to candidates.


