How to Post Jobs on Google Search
No form. No fee. Get found.
Google lists jobs it can read on job pages: yours, your ATS's or a job board's. Here's the markup it needs, how to take closed jobs down, and a 10-minute check of your careers site.
Month-to-monthNo long-term contractsProcurement-friendly
Short answer
There's no form and no fee. Publish each job on its own page with JobPosting markup: on your careers site, your ATS or a job board. Google reads the page and can list the job in its job search. Take the markup down the day the job closes.
How it works
How Google's job search finds your jobs.
Google's job search is a job listing view inside Google Search. Many employers call it Google for Jobs; Google's own docs call it the job search experience. Adding JobPosting markup makes a job page eligible to appear there.1
So "posting a job on Google" really means publishing a job page Google can read. Your jobs get there one of three ways.
- Your domain
You control it
Your careers site
You or your developer add JobPosting markup to each job page. You decide what it says, and you take it down when the job closes.
- Your ATS's job pages
Check it
Your applicant tracking system
If your ATS hosts your job pages, it may add the markup for you. Don't assume it does. Test one live job page with the 10-minute check below.
- The job site's page
Their page
Job boards and job sites
Google says you can also integrate through a third-party job site.1 The markup then lives on that site's page, and that's where Google sends job seekers.
Whichever route you use, the rules are the same. The markup goes only on a page about one job, and it must match what job seekers can read there. Google doesn't allow postings with no way to apply, or postings that need a login to read.1
The markup
JobPosting markup: the five required properties.
Job posting structured data, also called job posting schema markup, is code in the page's HTML that labels each part of a job for Google. A job needs five properties before it's eligible.1
title
The job title, such as "Warehouse associate".
Google's ruleThe title only. No job codes, addresses, dates, pay or company names.
description
The full job description, in HTML.
Google's ruleA complete picture of the job, duties and qualifications included. It can't be the same as the title.
datePosted
The date the employer first posted the job.
Google's ruleISO 8601 format, such as 2026-11-02.
hiringOrganization
The employer.
Google's ruleThe company's name, not the specific location that's hiring.
jobLocation
Where the employee reports to work.
Google's ruleMust include addressCountry. For a job at several locations, list each one in an array.
Fully remote jobs work differently. Set jobLocationType to TELECOMMUTE and add applicantLocationRequirements to name the countries or states the job is open to. Then jobLocation isn't required. A job with a physical site and a remote option uses jobLocation, jobLocationType and applicantLocationRequirements together.1
The recommended properties that matter for hourly roles.
Google lists seven recommended properties, plus three beta ones for education and experience.1 Three carry most of the weight on hourly and shift jobs.
Pay
baseSalary
The actual base pay, "as provided by the employer (not an estimate)." Set unitText to HOUR for an hourly rate; the allowed values are HOUR, DAY, WEEK, MONTH and YEAR, in capitals. For a pay range, use minValue and maxValue instead of one value.
Hours
employmentType
One or more of FULL_TIME, PART_TIME, CONTRACTOR, TEMPORARY, INTERN, VOLUNTEER, PER_DIEM or OTHER, in capitals. A job open as full or part time can list both.
End date
validThrough
The date the posting expires. Google requires it when the job has an end date. If the job never expires, or you don't know when it will, leave it out.
The other four are directApply, identifier, jobLocationType and applicantLocationRequirements. Keep the pay in the markup the same as the pay on the page, and the same in any job ad that states pay.
Sample code for one hourly job with a pay range. YOUR BRAND and the address are placeholders, and a real description holds the full job text. Build yours field by field with our free job posting schema generator, then test it with the 10-minute check below.
Closed jobs
How to take closed jobs down.
Google's rule is short: "We don't allow expired job postings." When a job is no longer open, expire it one of three ways.1
- "validThrough": "2026-10-31"
Set validThrough to a past date.
Google would rather you remove the page. If you keep it up, validThrough must be set to a date in the past. It's often the quickest fix when your ATS or website writes the markup.
- 404 · 410
Remove the page.
Requesting the job's URL should return a 404 or 410 status code.
- JobPosting removed
Remove the markup.
Use this if you keep a "this job is closed" page for people who arrive from old links.
Then tell Google the page changed. The next section covers how.
Why stale postings can cost you a manual action.
Google warns: "Failure to take timely action on expired jobs may result in a manual action."1 With a structured data manual action, Google ignores the page's markup, though the page can still appear in ordinary search results. You fix it from the Manual Actions report in Search Console, and Google's fix for expired jobs that are still live ends with a request for reconsideration.1
Google gives no number of hours or days. Treat it as same-day work: the job closes, the markup goes.
Closed job. Ads paused.
Taking a job out of Google is half the work. The ads pointing at it need to stop too. We run ads only on open jobs, so when a job closes, its ads pause. Whether a stale posting also breaks a law is a separate question: our guide to ghost job laws covers it.
Faster updates
Faster updates: the Indexing API vs sitemaps.
Google crawls on its own schedule, but you can ask it to come back sooner. For job posting URLs, Google recommends the Indexing API instead of sitemaps. It still recommends a sitemap to cover your whole site.1
What the Indexing API takes.
It's a developer task, or a feature to ask your ATS vendor about. Setup means enabling the API, creating a service account, verifying ownership in Search Console and getting an access token.2 Before you ask Google to remove a URL, it must return a 404 or 410, or carry a noindex tag.2
The API speeds up crawling. It doesn't promise a listing. A success response means Google "may try to recrawl" the URL soon. Every request goes through spam detection, and Google can revoke access if the API is abused.2
Open and close jobs often, and have a developer? It's worth setting up. If your ATS hosts your job pages, ask whether it already tells Google when a job opens or closes.
Your careers site
Check your careers site in 10 minutes.
No developer needed. You need four job links and, if you have it, access to Search Console.
2 min
Pick four job pages.
Three live jobs: one new, one older and one that shows pay. Add one job you closed in the last few weeks.
3 min
Run each through the Rich Results Test.
Paste the URL at search.google.com/test/rich-results. A live job should show a Job posting item with no errors. You can also test code before the job goes live.1
2 min
Open Search Console.
Look for a rich result report for Job postings. Check the Manual Actions report while you're there.1
3 min
Do three spot checks.
Pay, location and the closed job. They're right below.
- Pay. Does baseSalary match the pay on the page? Is unitText set to HOUR for an hourly job, not YEAR?
- Location. Does jobLocation give the address the person reports to, with addressCountry? On a multi-location job, is every location listed?
- Closed job. Does its URL return a 404 or 410, show a past validThrough, or carry no markup? If the page is up with the markup and no past validThrough, Google can still treat the job as open.
To see a page the way Google does, use the URL Inspection tool in Search Console. It shows whether robots.txt, a noindex tag or a login is blocking the page.1
Why your jobs aren't showing on Google.
Google's own troubleshooting list, plus one crawl check, covers the usual causes.1
The markup is on a list of jobs, not on each job's page.
Fix: Remove it from list pages. Keep it on single-job pages only.
The page and the markup say different things.
Fix: Make them match on title, pay, location and dates.
There's no way to apply on the page.
Fix: Add an apply button or form, or clear instructions such as an email or phone number.
Google can't place the location.
Fix: Give a real address, with as many address fields as you have.
Google can't read the page.
Fix: Check for a robots.txt block, a noindex tag or a login wall.
Expired jobs are still live.
Fix: Expire them one of the three ways above, then tell Google.
Valid markup makes a job eligible. It doesn't promise a spot.1
Free reach is real. You can't plan on it.
Valid markup gets a job into the running. Google picks what shows. When you need people in interview seats by a date, add reach you control. That's the recruitment marketing we run for you.
Free listing.
No budget, no bid, no end date. Google decides if, where and when.
Paid reach.
Your roles, your locations, your dates. Budgets on plan. Paused when the job closes.
Your free hiring plan: where your job ads run now and what to fix, a channel and budget plan for your hardest role, and a sample ad in your brand. In your inbox within 3 business days. No call needed.
Month-to-month, with no long-term contracts.
Where paid reach fits.
Google's job search costs nothing, and getting the markup right is worth an afternoon. Google takes no payment to rank pages higher,3 so a free listing can't be budgeted, paced or pushed.
Paid channels add reach you can plan. Google Ads for recruiting shows a job to people searching for that kind of work, inside Google's employment-ad rules. Programmatic job advertising sends your jobs to many job sites and bids job by job. Each role gets its own budget, kept on plan.
Free and paid should point at the same live job page. Job boards change their free rules too: our guide to Indeed alternatives for employers compares the channels employers add.
Checklist
Your Google job search checklist.
Copy it into a ticket for your web team or ATS admin.
Google job search · 13 checks
Copy the checklist- Every open job has its own page. No JobPosting markup on list pages.
- Each job page has title, description, datePosted, hiringOrganization and jobLocation, with addressCountry.
- Fully remote jobs use jobLocationType TELECOMMUTE and applicantLocationRequirements.
- baseSalary matches the pay on the page. unitText is HOUR, DAY, WEEK, MONTH or YEAR.
- employmentType uses Google's values, such as FULL_TIME or PART_TIME.
- validThrough is set when the job has an end date.
- The page has a way to apply and needs no login to read.
- The markup says what the page says: title, pay, location and dates.
- Closed jobs are expired the day they close: a past validThrough, a 404 or 410, or no markup.
- Google is told: the Indexing API for new, changed and removed job URLs, and a sitemap for the whole site.
- A sample of live jobs passes the Rich Results Test.
- Search Console's Job postings and Manual Actions reports are checked every month.
- Paid job ads point only at live job pages.
Questions about posting jobs on Google.
Anything else? A person replies within one business day.
Does Google charge to post jobs?
No. There's no fee and no form. Google lists eligible jobs from pages that carry JobPosting markup. Google says it doesn't accept payment to crawl a site more often or rank it higher. Paid Google Ads are a separate product.
Why aren't my jobs showing on Google?
Google's troubleshooting list covers the usual causes. The markup is on a list page, not the job page. The markup doesn't match the page. There's no way to apply. Google can't place the location. Or closed jobs are still live. A page blocked by robots.txt, a noindex tag or a login can't be read. Even valid markup doesn't promise a listing.
Do I need a developer?
Not always. If your ATS or a job board hosts your job pages, it may add the markup. Check yours: run one live job URL through Google's Rich Results Test. If you run your own careers site, someone needs to add the code to your job page template. Our job posting schema generator writes the code for one job. The Indexing API does need a developer or your vendor.
How fast do closed jobs drop off Google?
Google gives no fixed time. It has to recrawl the page before it sees the change. Expire the job the day it closes, then notify Google through the Indexing API so it can recrawl sooner. Without the API, the change waits for Google's next crawl.
Sources
Last reviewed November 2026.
- 1Google Search Central, "Job posting (JobPosting) structured data". Checked November 2026. developers.google.com/search/docs/appearance/structured-data/job-posting
- 2Google Search Central, Indexing API: "Quickstart", "Using the Indexing API" and "Quota and pricing". Checked November 2026. Quickstart · Using the Indexing API · Quota and pricing
- 3Google Search Central, "In-depth guide to how Google Search works". Checked November 2026. developers.google.com/search/docs/fundamentals/how-search-works
Admit oneYour free hiring planLet's fill your interview seats.
Tell us who you're hiring and where. We'll email you:
A sample ad for your hardest role, in your brand
Where we'd run it, and the budget we'd use
What to fix in the job ads you run now
In your inbox within 3 business days.
