Recruitment advertising for frontline employers

We run paid social job campaigns for frontline employers. This page is about a free channel we do not sell.

Book a demo

Hiring guideChecked against Google Search Central documentation, 15 September 2026

How to Post a Job on Google

There is no form on Google where you type in a job and press post. A job appears in Google’s job search experience because Google crawled a public page — your careers site, or a page on an ATS or job board — and found JobPosting structured data on it. That is the whole mechanism, and it still works: Google’s documentation was last updated on 8 September 2026 and lists North America as available in its entirety, so the US jobs experience is live and nothing about it has been deprecated. What has changed is the energy behind it. When Google began phasing out lesser-used search features in November 2025, job postings survived while other structured data types did not — but Google’s changelog records no substantive change to the JobPosting guidance since March 2023, and the “beta” education and experience properties have been beta since March 2021. Treat it as a free, stable, slowly maintained channel you set up once. Do not treat it as a hiring plan.

What Google actually runs in 2026

Google’s name for this is the job search experience on Google. Everyone else calls it Google for Jobs: you search “jobs near me” and a blue box appears above the normal results with job cards in it, filters for location and job type and work-from-home, a commute time and a Save button. Google’s job seeker help page says the box shows up to three results before the searcher clicks for more, that results are sorted by relevance, and — this matters — that providers do not pay to appear and cannot pay to influence ranking. The box is not for sale. Paid ads with an Ad badge can sit above it.

Google launched it in June 2017, and the proof point it still leads with on its employer page is a ZipRecruiter case study from May 2018. Notice that before planning around the channel: the last changelog entry that materially changed the JobPosting guidance was March 2023, and the education and experience properties added in March 2021 are still beta.

There is nowhere to post a job on Google. There is only a way to publish one on a page you control, in a format Google can read, and wait for the crawler.

Is it being sunset? No — and it survived a cull that took other features

In November 2025 Google published a post about simplifying the search results page, naming lesser-used features to be phased out, with support removed from Search Console and the Rich Results Test starting in January 2026. Worth worrying about before you spend developer time on markup. The changelog names the casualties: practice problem and dataset. Job postings were not on that list. They remain a supported rich result report in Search Console, with documentation refreshed on 8 September 2026.

Where it runs

Google publishes a region list at the foot of the JobPosting documentation. North America, Latin America and Sub-Saharan Africa are available in their entirety; Asia, the Middle East and Europe are country by country. For European searchers Google also runs a separate “Job sites” aggregator carousel with refinement chips, which needs no markup to be eligible. US hiring is unaffected; across the Atlantic your candidates are not seeing the same experience.

The three routes in

Three ways a job ends up in that box. For most frontline employers it is the second, plus a check that it is working.

RouteWhat it takesWho it is for
Your own careers page, marked upOne public URL per open job, with JobPosting JSON-LD in the head. A developer or a CMS plugin.Employers who want the traffic landing on their own site.
An ATS or job board that already emits the markupNothing, if your vendor does it. Ask them, then verify one live posting.Most employers. If you post through a system, it is probably already doing this.
Indexing API feed integrationA service account, Search Console verification, an approved quota, and code that fires on every post and expiry.High-volume posters: staffing agencies, job boards. Not an employer with eight openings.

Google describes the same split on its own employer page. There is no fourth route, no upload, no dashboard, no account to open.

Route 1: your careers page, marked up properly

One job, one URL

The rule people break first. Google’s guidelines say to put the structured data on the most detailed leaf page possible and explicitly not on pages listing several jobs. One careers page with six openings, marked up once, is not a valid implementation — it is a named manual action. Each opening needs its own URL, with the markup on the page a human reads.

If your site has one Careers page with a PDF on it, the real work is building a page per job first. The job posting template and the job description templates are where that copy starts.

What the markup looks like

JSON-LD in the head of the page. Google supports other formats; this is the one it recommends. A complete example for one opening follows — the angle brackets are escaped so this page does not declare itself a job posting, but on yours they would be real tags.

JobPosting JSON-LD, escaped for readability

<script type="application/ld+json">
{
  "@context": "https://schema.org/",
  "@type": "JobPosting",
  "title": "Certified Nursing Assistant, Night Shift",
  "description": "<p>Night-shift CNA, three 12-hour shifts, 6pm to 6am, every other weekend.</p><ul><li>Active state registry listing required</li><li>Shift differential after 10pm</li><li>Paid orientation</li></ul>",
  "identifier": {"@type": "PropertyValue", "name": "Example Senior Living", "value": "CNA-NOC-114"},
  "datePosted": "2026-09-15",
  "validThrough": "2026-11-15T23:59",
  "employmentType": "FULL_TIME",
  "directApply": true,
  "hiringOrganization": {
    "@type": "Organization",
    "name": "Example Senior Living",
    "sameAs": "https://www.example.com",
    "logo": "https://www.example.com/images/logo.png"
  },
  "jobLocation": {
    "@type": "Place",
    "address": {
      "@type": "PostalAddress",
      "streetAddress": "1400 Oak Ridge Drive",
      "addressLocality": "Green Bay",
      "addressRegion": "WI",
      "postalCode": "54303",
      "addressCountry": "US"
    }
  },
  "baseSalary": {
    "@type": "MonetaryAmount",
    "currency": "USD",
    "value": {
      "@type": "QuantitativeValue",
      "minValue": 19.00,
      "maxValue": 23.50,
      "unitText": "HOUR"
    }
  }
}
</script>

The five required properties

Miss one of these and the posting is not eligible at all.

  • title — the job title and nothing else. No job codes, addresses, dates, salaries or company names, and no stacking of ! and *, which Google warns can get markup treated as spam. “*** WAREHOUSE HIRING NOW!! ***” is Google’s own bad example.
  • description — the full job in HTML, never the same text as the title. Google recognizes <p>, <ul> and <li> and not headers or tags like <strong>, so write it as paragraphs and bullets.
  • datePosted — ISO 8601, the date it was posted.
  • hiringOrganization — the company, not the site: “Starbucks, Inc”, not “Starbucks on Main Street”. An agency hiring for an unnamed client can use the value confidential.
  • jobLocation — where the employee reports to work, always including addressCountry. A 100% remote job uses jobLocationType: "TELECOMMUTE" instead, plus applicantLocationRequirements naming at least one country.

If the same job runs at four of your locations, put multiple jobLocation entries in an array on one posting and Google picks the one closest to the searcher — better than four near-identical pages competing.

The recommended properties worth adding

PropertyWhat it doesWorth it for frontline?
baseSalaryPay, or a range using minValue and maxValue, with unitText of HOUR, DAY, WEEK, MONTH or YEAR. Only employers may provide it.Yes. Pay is the first filter a candidate applies.
employmentTypeFULL_TIME, PART_TIME, CONTRACTOR, TEMPORARY, INTERN, VOLUNTEER, PER_DIEM or OTHER. More than one is allowed.Yes. PER_DIEM exists for the way a lot of healthcare work is scheduled.
validThroughThe expiry date. Required if the posting has one; omit it if the job never expires.Yes. This one has teeth — see below.
identifierYour own requisition number.Yes, and free. It is how you match an applicant back to the opening.
directApplyA boolean saying the page lets someone apply without a maze. Google is still developing how it uses this.Add it if true. Expect no visible effect yet.
educationRequirements / experienceRequirementsBeta: credentialCategory values like high school or professional certificate, monthsOfExperience as a number.Optional. Beta since March 2021.

None of this replaces writing the ad well. Structured data tells Google what the job is; it says nothing about whether a CNA scrolling at 11pm wants it. That is what makes a good job ad, and it decides your candidate conversion rate.

Route 2: let your ATS or job board do it

Most employers already post through something: an ATS, a payroll system with a hiring module, a board for their trade. Google’s employer page tells you to check whether your provider is participating. That check is two steps:

  1. Ask the vendor, in writing, whether they emit JobPosting structured data on public, crawlable job detail pages. The good ones answer fast.
  2. Verify it. Paste the URL of one of your live postings into the Rich Results Test and look for Job postings in the results. Thirty seconds, and the test does not lie.

Two things to watch. A posting behind a login is not eligible: Google requires that users can see the job details without signing in, and a job with no way to apply is disallowed outright. And if the same job lives on your careers page and your ATS at different URLs, point a canonical tag at whichever one you want candidates to land on.

Which boards to bother with is a separate decision, and it is usually not the big ones: see niche job boards. If you are choosing the system itself, put the markup question on the evaluation list alongside everything else in recruiting automation software.

Route 3: the Indexing API, and who should skip it

The Indexing API is Google’s push channel for short-lived pages. It supports exactly two content types — JobPosting, and BroadcastEvent inside a VideoObject — and lets you tell Google directly when a job URL is published, updated or deleted instead of waiting for a crawl. Google recommends it over sitemaps for job URLs because it brings Googlebot sooner, while still asking you to keep a sitemap for the rest of the site. Up to 100 calls batch into one request.

The setup is why most employers should skip it: enable the API, create a service account, verify ownership in Search Console, get an access token, then request approval and quota, since the default allocation is 200 calls for onboarding and testing. Every submission goes through spam detection, and abuse can cost you access. It earns its keep at hundreds of postings a month. Eight openings across four locations does not clear the bar.

Validate it, then wait properly

The order that saves the most time:

  1. Run the page through the Rich Results Test first. It takes a live URL or a code snippet and names the rich results the page is eligible for.
  2. Publish two or three pages, then use URL Inspection in Search Console to confirm Google can fetch them and nothing is blocked by robots.txt, a noindex tag or a login. Then ask Google to recrawl.
  3. Wait. Google says it can take several days for a page to be found and crawled, and only the Indexing API shortens that — and it is a request, not a promise.
  4. Check the Job postings rich result report once data appears. If the report never appears, Google has not found valid markup; a syntax error bad enough that Google cannot tell what type it is lands in the unparsable structured data report. Check this report again each quarter: template changes break markup silently, and the only symptom is a slow disappearance nobody notices.

Removing an expired job: the part that has consequences

The failure mode here is invisible to you and obvious to everyone else. A job you filled in March is still in the results in September, people are still applying, and your team is ignoring them or annoying them. Google treats this as policy, not tidiness: jobs no longer open for applications must be expired, and failure to act in time may result in a manual action.

Three acceptable ways to expire one. You only need one:

  • Set validThrough to a date in the past.
  • Remove the page entirely, so the URL returns a 404 or 410.
  • Strip the JobPosting structured data off the page, leaving the page itself if you want it for other reasons.

Then tell Google: an Indexing API removal request if you have one, otherwise an accurate lastmod in your sitemap and a wait for the recrawl.

The manual action has a name. In the Search Console manual actions report, “JobPosting structured data on expired job” is a listed violation: markup used on an expired job without validThrough set in the past. Its neighbors are worth reading too — “JobPosting structured data on listing page”, “Job application requires payment” and “Job poster not hiring”. A manual action pulls your postings out of the jobs experience until you fix it and get it revoked.

The rest of Google’s content policies read like a list of things employers do by accident. No career fair invitations dressed as job postings. No postings that need a login to read. No collecting resumes for positions you are not hiring for. No payment from applicants. No all-caps or keyword-stuffed titles. And no posting on behalf of a company without its authorization — the line staffing agencies should read twice.

What it is worth: the honest verdict

Do it. It is free, it is a few hours once, and a correctly marked-up job page is structured correctly for every other machine that reads the web too. Then plan your hiring as though it does not exist, because it will not carry the load.

The reason is pull versus push. The jobs experience serves people who typed “CNA jobs near me”, in a box that shows three results at a time, stacked with aggregators who have optimized for it since 2017. The maintenance tech you want is not typing that. He is at work, on his phone at lunch, and the only way you reach him is to put the job in front of him unasked.

That is what paid social does, and we can price it. In Boostpoint’s 2026 Social Job Advertising Benchmark — 891 Boostpoint-managed Meta campaigns, 1,334 campaign-months — the median was $13.88 per applicant, inclusive of campaign management: $3.76 for caregiver and home care roles, $7.72 for CNAs, $13.41 for technicians and mechanics, $26.86 for CDL drivers. The spread is on the benchmarks page; what those applicants cost per hire is on cost per hire by industry.

There is no honest equivalent number for Google’s jobs experience: Google reports impressions and clicks rather than applicants, and the traffic is mixed into the rest of your organic search. The shape of it, for a single-location frontline employer, is a trickle rather than a stream — and the trickle is free. Set it up, keep it accurate, put the budget where the push is. The sibling of this page, how to post a job on Facebook, covers the channel that does the pushing.

Marked-up job pages are plumbing. Plumbing is worth installing and it is not worth celebrating. Nobody fills a night shift because their structured data validated.

What “Google Jobs for employers” is not

Three things people mean by that phrase. Only one of them is this page.

  • Not an ad product. Google says providers do not pay to appear and cannot pay to influence ranking. Google Ads clicks to your careers page are a different product with a different bill.
  • Not an applicant tracking system. It does not store, screen or message candidates. The apply link goes to you, or to whoever hosts the posting.
  • Not a posting account. No login, no employer profile, no job credits. If a vendor sells “posting your job to Google” as an add-on, what they are selling is markup on a page they host.

Job posting SEO: the part that is not markup

Everything above is the technical half — valid JobPosting markup on an indexable URL. The other half is what the posting actually says, and it decides whether your listing is the one that gets opened once Google has shown it. Three things do most of the work.

The title is the keyword. Job search is unusually literal: people type the title, the place, and sometimes one qualifier. So the title field should be the title as candidates say it, not as your org chart says it. “Class A CDL Driver — Home Daily” is findable; “Transportation Specialist II” is not. Strip internal grades, requisition codes and brand slogans out of the title and put them in the description where they belong.

Use the words the job is searched with, once each, in the places that count. The title, the first line of the description, and the employment type and location fields. For most frontline roles the searched vocabulary is small and predictable: the role name, one or two common synonyms, the shift, and the town. You do not need keyword density — there is no benefit to repeating “warehouse associate” eight times, and the filters that matter to a candidate are structured fields rather than body text.

Put the pay and the schedule in the structured data, not only in the prose. baseSalary and employmentType are the fields Google can filter on, and a listing that cannot be filtered is invisible to anyone who filters. Pay is also the single strongest thing in the snippet for a frontline role.

One honest limit. Job posting SEO decides your share of the people already searching for that job in that area this week. In most frontline categories that pool is small and it is the same pool every one of your local competitors is optimizing against. Doing this well is worth it because it is cheap and permanent — not because it is capable of filling a hard role on its own.

The free listing and paid search ads are different decisions. If you are weighing whether to pay for Google Ads on top of the listing, Google Ads for recruiting covers when search ads work for hiring and the targeting rules for employment ads.

Frequently asked questions

Can you post a job directly on Google?

No. Google has no job posting form, employer login or upload tool. A job becomes eligible when Google crawls a public web page carrying JobPosting structured data — on your careers site, or on an ATS or job board that adds the markup for you.

Is Google for Jobs still available in 2026?

Yes, in the US and across North America. Google’s JobPosting documentation was last updated on 8 September 2026 and lists North America, Latin America and Sub-Saharan Africa as available in their entirety, with Asia, Europe and the Middle East country by country. The features Google removed in its November 2025 cull were practice problem and dataset; job postings were not affected.

Is it free to post a job on Google?

Yes. Google states that job listing providers do not pay to appear and cannot pay to influence ranking. Your only cost is the time to add the structured data and keep it accurate. Paid ads can appear above the jobs box, but those are Google Ads and a separate purchase.

What are the required JobPosting properties?

Five: title, description, datePosted, hiringOrganization and jobLocation. For a fully remote job, jobLocation is replaced by jobLocationType set to TELECOMMUTE plus applicantLocationRequirements naming at least one country. validThrough is required whenever the posting has an expiry date.

How long does it take for a job to appear on Google?

Days, not minutes. Google says it may take several days after publishing for a page to be found and crawled, and appearing at all is never guaranteed. The Indexing API brings the crawler sooner, but it is a request, not an instant publish.

How do I remove an expired job posting from Google?

One of three things: set validThrough to a past date, remove the page so it returns a 404 or 410, or strip the JobPosting markup off it. Then notify Google, ideally with an Indexing API removal call. Failing to expire jobs in time may result in a manual action — “JobPosting structured data on expired job” is a named violation in the Search Console manual actions report.

Do I need the Indexing API to post jobs on Google?

No, and most employers should not bother. It is built for sites with many short-lived pages, supports only JobPosting and livestream content, and needs a service account, Search Console verification and Google’s approval past a default onboarding quota of 200 calls. For a handful of jobs a month, normal crawling and an accurate sitemap are enough.

Can I put the markup on my careers page that lists all our jobs?

No. Google’s technical guidelines say to put JobPosting structured data on the most detailed leaf page possible and not on list or search result pages. Doing it anyway has its own manual action, “JobPosting structured data on listing page”. Give each opening its own URL.

Will a job posted on a job board show up in Google’s job results?

Only if that board publishes it on a public page carrying JobPosting structured data. Ask the vendor, then check one of your own live postings in Google’s Rich Results Test and look for Job postings in the output. A posting behind a login is not eligible, because Google requires that users can read the details without signing in.

How much hiring traffic should a frontline employer expect from Google job postings?

Less than the effort suggests, and no one can give a credible number because Google reports impressions and clicks rather than applicants. The box serves people already searching, three results at a time, against aggregators that have optimized for it since 2017. Our median across 891 managed Meta campaigns is $13.88 per applicant, management included — a channel you can forecast against. Mark up the job pages anyway; they cost nothing to keep.

What is the difference between posting a job on Google and running Google Ads?

The jobs experience is organic: Google finds your structured data by crawling and does not sell placement in it. Google Ads is paid traffic to a page you choose, shown with an Ad badge and billed per click. They appear on the same results page and have nothing else in common.

What keywords should a job posting use?

The title as candidates say it, one or two common synonyms, the shift, and the town — used once each in the title, the first line of the description and the structured fields. Job search is literal: people type the role, the place and sometimes one qualifier. Keyword density does nothing here, and internal grades, requisition codes and brand slogans in the title actively hurt because nobody searches for them.

What is job posting SEO?

Two halves. The technical half is valid JobPosting structured data on a crawlable, indexable URL — one job, one page, with the required properties and a correct validThrough date. The editorial half is the title matching how candidates search, the searched vocabulary appearing in the title and first line, and pay and employment type expressed as structured fields rather than only as prose, so the listing survives being filtered.

What is job posting schema?

JobPosting schema is the structured data that tells search engines a page is a job listing rather than an article: the title, description, hiring organization, location, date posted, valid-through date, employment type and pay. It goes on the page as JSON-LD, and without it a careers page is just a web page as far as Google's job results are concerned. The required properties and a working example are set out above.

Is Google free job posting actually free?

Yes, in the sense that Google charges nothing to include your listing in its job results and there is no placement to buy. What it costs is the engineering to publish valid structured data on an indexable page and keep the valid-through dates current — or an ATS or job board that does it for you. It is free in money and not free in maintenance.

Google finds the people already looking. We find the ones who are not.

Mark up your job pages — it is free. Then put the budget where the push is. Median across 891 Boostpoint-managed Meta campaigns: $13.88 per applicant, management included.

Book a Demo