Schema and Structured Data · Guide

What Is Job Posting Schema Markup?

Every posting has a lifespan measured in weeks. Nobody knows in advance how many. That makes this the type where false assertions accumulate fastest, because an agency with hundreds of closed roles is making hundreds of claims automatically.

Updated: August 2026
Written by: Andrew Odgers, Managing Director
Reading time: 9 minutes
The property that shapes everything else

Every One Of These Expires

A job posting has a short life and an unpredictable one. Unlike an event, which ends on a date you know when you publish it, a vacancy closes when somebody is hired, which nobody can put in a calendar.

Why unpredictability is the problem. Nothing can be scheduled.

An event page can have its removal planned at the moment it goes live. A vacancy cannot, because the closing date depends on a hiring process nobody controls precisely.

What that means in practice. Somebody must notice.

The only signal a posting has expired is a person knowing the role was filled. That knowledge sits with a recruiter rather than with whoever maintains the website.

Why the volume matters here. Postings arrive constantly.

A business advertising occasionally has a handful of pages. An agency has a continuous stream. Each one becomes stale independently at a time nobody recorded.

What our own research found. Almost all of them die.

Building our recruitment guides, we found that close to all of these pages stop being valid. This page is the technical half of that finding.

The claims it makes

What It Asserts

Title, description, employer, location, salary where given and the dates the posting is valid. That last one carries more weight than everything before it.

Title and description. The role itself.

What the job is and what it involves. Stable while the posting exists, being the part everybody concentrates on when writing it.

Employer. Who is hiring.

The organisation offering the role, which for an agency is the client rather than the agency. Worth getting right, since a candidate is deciding partly on who they would work for.

Location. Where the work happens.

The place, else the arrangement where there is no single place. Block six covers the distinction, which changed considerably and is still described badly.

Salary. Optional and loaded.

What the role pays, where you choose to say. Block five treats that as a commercial decision rather than a field to complete.

Validity dates. The one that matters.

When the posting opened and when it stops being valid. This is the property that makes the whole description true or false. It is also the one nobody sets deliberately.

The assertion position applied at volume

A Closed Role Marked As Open

An agency with hundreds of expired postings still asserting availability is making hundreds of false claims automatically. That is not a tidiness problem, it is the same false statement repeated at scale.

What each expired page claims. That you can apply.

The description states a role is available with a valid application period. Once it is filled, the site is telling every candidate who finds it that a job exists which does not.

Why it compounds rather than accumulating quietly. Candidates apply.

Unlike a stale opening time, this one generates action. People write applications for roles that closed months ago, which wastes their effort and produces enquiries the agency has to field.

What it costs the business. Standing with candidates.

A candidate who applies for three closed roles concludes the agency does not keep its own house in order. In a market where candidates choose who to register with, that matters commercially.

Why nobody fixes it. The incentive points the wrong way.

A large list of vacancies looks like a busy agency. Removing expired ones makes the list shorter, which feels like going backwards even though it makes it true.

What the underlying rule is. The one from the concept page.

Markup states things as fact, which what is schema markup establishes. Hundreds of automatic assertions are still assertions.

Handled properly

Expired Postings Need Handling, Not Deleting

Removing the page is the obvious response and the wrong one. It leaves links pointing nowhere and discards whatever standing the page accumulated, which for a well-shared role can be considerable.

What deletion breaks. Everything pointing at it.

Job postings get shared, listed on boards and forwarded between people. Deleting the page leaves all of those arriving at nothing, which is a poor experience for somebody who was interested.

The first option. Mark it closed and say so.

Keep the page, update the validity so the markup no longer claims it is open, then tell the visitor the role is filled. That is accurate and it answers the question they arrived with.

The second option. Point them somewhere useful.

A closed role page can direct somebody to similar current vacancies. That converts a dead end into a genuine service. It is also what a candidate wants anyway.

The third option. Redirect, if the page has value.

Where a role recurs, sending the old address to the current equivalent preserves what it earned. Our site migrations material covers doing that properly.

What to decide once. The policy, not the case.

Deciding what happens to every closed posting, once, is what makes this manageable at volume. Deciding per posting means deciding never.

A business decision rather than a field

Salary Is Optional And Consequential

Including salary changes who applies. That is a real commercial decision rather than a technical one. It should not be made by whoever is filling in the form.

What including it does. Filters before applying.

Candidates outside the range self-select out, which reduces applications and raises their relevance. Fewer conversations, more of them worth having.

What omitting it does. Broadens and blurs.

More applications arrive, including from people whose expectations do not match. Time gets spent discovering that in conversation rather than beforehand.

Why agencies often omit it. Negotiating room.

A stated figure becomes a floor in the candidate's mind. That is a legitimate reason and it trades transparency for flexibility, which is a decision somebody should take deliberately.

Why candidates increasingly expect it. The norm has shifted.

Postings without pay information are treated with more suspicion than they once were. Some candidates skip them entirely. The cost of omitting has risen.

The connected argument. Publishing your own figures.

Our recruitment material makes the case for salary guides as published data, which is a stronger version of the same transparency and earns references on its own.

The distinction that changed

Remote And Location

Remote and hybrid roles are expressed specifically rather than being implied by an address. Getting it wrong misdirects applicants, who filter heavily on exactly this.

Why it needed expressing. An address stopped meaning attendance.

A location once implied where somebody worked. Now it may be an office they visit twice a month, else a registered address they never see, so the arrangement has to be stated separately.

What fully remote requires. Saying so, plus the boundary.

Remote roles are usually remote within somewhere: a country, a region, a time zone. Stating remote without the boundary invites applications you cannot accept.

What hybrid requires. Both facts.

The office location and the actual expectation of attendance. A hybrid role described only by its address reads as fully office-based to anybody filtering.

What goes wrong most. Hybrid described as remote.

A role advertised as remote which expects three days in an office wastes everybody's time and produces a candidate who feels misled at interview.

Why candidates notice quickly. It is their first filter.

Working arrangement is frequently the first thing somebody filters on, ahead of salary and title. A wrong value here removes you from consideration before anything else is read.

Stated plainly

It Must Be A Real Role

Advertising roles that do not exist in order to collect applications is a known practice. The markup asserts the role is real. We will not implement it.

What the practice is. Building a candidate list.

A posting for a plausible role that nobody is hiring for, published to gather applications for future use. It is common enough that candidates suspect it routinely.

What the markup claims. That the job exists.

A description asserting a vacancy with an employer and a valid application period states that somebody can be hired into this. Where nobody can, the assertion is simply false.

Why it is worse than a stale posting. Intent.

An expired posting is a maintenance failure. This one was untrue when published, which is a different thing and not something a process fixes.

What it costs the candidate. Real effort.

Somebody writes an application, adjusts a document and waits. That time was spent on something that never existed, which is the same category of harm as a fabricated rating.

Our position. Fixed.

We do not implement this whatever a client asks, which is the second fixed refusal in this section after invented ratings. The troubleshooting page covers what happens to sites making false assertions. The full series is on the schema and structured data guide.

Website migrations

Decide the policy,
not the
case.

Deciding what happens to every closed posting, once, is what makes this manageable at volume. Deciding posting by posting means deciding never, leaving the expired ones telling candidates a job exists which does not.

On every page we build:

Validity dates set deliberately A closure policy Redirects where earned Explicit remote handling Article description Questions and answers Breadcrumb structure A named owner

We will not mark up a vacancy that nobody can be hired into.

The full guide series

Every guide.
One practice.

What structured data is, which types apply to your business, how to test it, where the results features come from and what to do when nothing appears.

Questions people ask

Job Posting Markup, Briefly

Why is this type harder to maintain than others?
Because expiry cannot be scheduled. An event ends on a date you know when you publish it, so removal can be planned. A vacancy closes when somebody is hired, which nobody can put in a calendar. The only signal is a person knowing the role was filled. That knowledge sits with a recruiter rather than with whoever maintains the website.
What actually goes wrong with expired postings?
The site tells every candidate who finds one that a job exists which does not. Unlike a stale opening time, this generates action: people write applications for roles that closed months ago, wasting their effort and producing enquiries you have to field. A candidate who applies for three closed roles concludes you do not keep your own house in order.
Should we delete pages for filled roles?
No. Postings get shared, listed and forwarded, so deletion leaves all of that arriving at nothing. Keep the page, update the validity so the markup stops claiming it is open, tell the visitor the role is filled and point them at similar current vacancies. Where a role recurs, redirecting to the current equivalent preserves what the page earned.
Should we publish the salary?
That is a commercial decision rather than a field to complete. Including it makes candidates outside the range self-select out, so fewer applications arrive and more are worth having. Agencies often omit it to preserve negotiating room, which is legitimate. What has changed is that postings without pay information now attract more suspicion and some candidates skip them.
How should remote and hybrid roles be described?
Explicitly, since an address no longer implies attendance. Remote roles are usually remote within a country, region or time zone. Stating remote without that boundary invites applications you cannot accept. Hybrid needs the office location and the actual expectation of attendance, because a hybrid role described only by its address reads as fully office-based.
Can we advertise roles to build a candidate list?
Not with this markup. We will not implement it either. A description asserting a vacancy with an employer and a valid application period states somebody can be hired into it. Where nobody can, that is false. Unlike an expired posting, it was untrue when published. Somebody writes an application and waits, for something that never existed.