Right now, someone is searching Google for a job you have open. The question is simple: do they see your listing, or your competitor’s?
Millions of job searches happen on Google every month. Most of them start in one place, the job box at the top of the page. If your jobs are not in that box, they are close to invisible.
Add it correctly and your jobs can show up with salary, location, and your company logo. Skip it and your listings stay buried under other sites.
This guide shows you exactly what schema to use, the code to copy, the mistakes that hide your jobs, and how to add it all in WordPress without touching code.
What is job posting schema?
Job posting schema is a small block of code you add to each job page. It uses the JobPosting type from Schema.org and is written in a format called JSON-LD. It tells Google what the job is, who is hiring, where the work happens, and what it pays.
Google reads this code and can then show your job in Google for Jobs. That is the interactive job panel that appears when someone searches for things like “marketing jobs near me” or “remote developer jobs.”
Here is the key fact many people miss: there is no Google Jobs API you can post to. You cannot push jobs into Google. Google crawls your job pages, reads the schema, and pulls the data in. So the code on your page is the whole game.
Why schema for recruitment agencies and job boards matters
For a job board, showing up in Google for Jobs is not a nice extra. It is table stakes. If a rival’s listings appear in the job panel and yours do not, you are invisible on the exact searches where people are ready to apply.
Here is what proper schema does for you:
- Free placement in Google for Jobs. There is no paid tier and no way to bid for a higher spot. The only cost is the setup time.
- Richer listings. Your jobs can show salary, location, job type, and your logo. That pulls more clicks than a plain blue link.
- Better AI visibility. Tools like ChatGPT, Gemini, and Google AI Overviews read structured data to answer job questions. Clean schema helps them cite and surface your listings.
- Higher quality applicants. Job seekers can filter by title, location, and type, so the people who click are a closer match.
Job listings with complete schema have been reported to gain up to 30% more visibility in search. The exact number varies, but the direction is clear: complete schema wins.
Good Read: Optimizing Content for Google’s AI Overviews
The 5 required properties
Google requires five properties on every job page. Miss any one and your job will not appear in Google for Jobs.
| Property | What it holds |
| title | The job title only, like “Registered Nurse.” No salary, codes, or company name. |
| description | The full job details in HTML. Duties, skills, hours, and requirements. Not a short teaser. |
| datePosted | The date you posted the job, in YYYY-MM-DD format. |
| hiringOrganization | The company doing the hiring, with its name and website. |
| jobLocation | The physical address where the person will work. Must include the country. |
Two quick rules that trip people up:
- Use title, not name. They are not the same for JobPosting. Using name fails validation.
- The description must be the complete posting in HTML, not a plain-text summary.
Recommended properties that boost visibility
These are optional, but they make your listings stronger and more useful. Google favors postings with clear salary, so do not skip baseSalary.
- baseSalary shows the pay. Use a single value or a minValue and maxValue for a range. Always set the currency and the unit (HOUR, DAY, WEEK, MONTH, or YEAR).
- employmentType marks the role as FULL_TIME, PART_TIME, CONTRACTOR, TEMPORARY, INTERN, VOLUNTEER, PER_DIEM, or OTHER.
- validThrough sets the date the job expires. This is required if the job has an end date.
- jobLocationType set to TELECOMMUTE marks a job as 100% remote.
- applicantLocationRequirements names the country or region a remote applicant must live in.
- identifier is your own unique ID for the job.
- directApply flags whether people can apply right on your page without extra steps.
Beta properties for education and experience
Google now supports extra fields for skills and background. These are still in beta, so you may not see an instant change, but they help AI and search understand the role.
- educationRequirements with a credentialCategory like “high school”, “associate degree”, “bachelor degree”, “professional certificate”, or “postgraduate degree.” Use “no requirements” if none apply.
- experienceRequirements with monthsOfExperience set to a number, like “36” for three years.
- experienceInPlaceOfEducation set to true if you accept experience instead of a degree. If you use it, include both the education and experience fields.
Other schema recruitment sites should add
Job posting schema is the core, but your whole site can do more. These extra types build trust and topical authority, which help you rank across the board.
- Organization schema on your homepage or about page. It defines your agency as a real entity, with your name, logo, and social profiles. This feeds your Google knowledge panel and the logo shown on your job cards.
- BreadcrumbList schema to show your site structure, like Home > Jobs > Nursing > Registered Nurse. This can add breadcrumb links in search results.
- FAQPage schema on guide and category pages. It can win FAQ drop-downs in search and gives AI clear questions and answers to pull from.
- WebSite schema with SearchAction so Google can show a search box for your site.
- EmployerAggregateRating schema if your site reviews employers. This shows star ratings for companies you cover.
A word of caution: put JobPosting schema only on single job detail pages. Never add it to your job list, search results, or category pages. That breaks Google’s rules and can trigger a penalty across your whole site.
How to add schema, step by step
You have three main ways to do this. Pick the one that fits your setup.
Option 1: Paste the code by hand
- Write your JSON-LD for one job, like the examples above.
- Wrap it in a <script type=”application/ld+json”> tag.
- Paste it into the <head> or before the closing </body> tag on that job page.
- Repeat for every job. Update the code whenever a job changes.
This works, but it is slow and easy to get wrong at scale. If you post many jobs, it becomes a real burden.
Option 2: Use your ATS or job board software
Many applicant tracking systems and job board platforms add schema for you. If you use one, check that it outputs valid JobPosting data, keeps a single clean URL per job, and removes schema when jobs expire.
Option 3: Use a WordPress schema plugin
If your site runs on WordPress, a schema plugin is the fastest path. It builds the code, checks it, and adds it to each page for you. No editing theme files, no broken tags.
Good Read: How to Get Cited in ChatGPT Search with Structured Data
Adding job posting schema in WordPress with SchemaEngine AI
SchemaEngine AI is a WordPress schema plugin from RadiusTheme. It builds, checks, and adds clean JSON-LD to your site without code. It supports more than 30 schema types, and Job Posting is one of them.
It gives you three ways to work, which is handy for both beginners and technical SEOs:
- Manual mode for full control over every field.
- Auto mode to apply smart schema rules across your whole site by content type.
- AI mode, which reads your job content and fills in the right fields in one click. AI mode uses your own API key from OpenAI, Anthropic, or Google, so your content only goes to the provider you choose.
A simple way to set it up:
1. Install and activate SchemaEngine AI from your WordPress dashboard.

2. Set up your agency identity (done once)
This tells Google your site is a real recruitment business. It powers your Organization schema and the logo on your job cards.

Go to SchemaEngine AI > Settings > Schema > Site Info and set:
- Site Represents Type: Organization.
- Sub Category: EmploymentAgency (under Organization > LocalBusiness).
- Name: your agency name, plus a short brand name if you have one.
- Business Logo: at least 112 by 112 pixels.
- Description: one line about your agency.
- Opening Hours and Help Center: add your times, phone, and languages.
Then open Social Profiles and add your LinkedIn, Facebook, and other links. Save.
3. Add job posting schema to each job

- Open a single job post, not a list page.
- Pick the Job Posting schema type.
- Fill in the required fields, plus salary and job type.
- Run the validator to check for errors.
- Publish.
The plugin also works alongside SEO plugins like Rank Math and Yoast, and it is built for modern search, meaning SEO, AEO, and GEO.
Validate and index your job pages
Adding schema is step one. You still need Google to trust and crawl the page.
- Test the markup. Run each job URL through Google’s Rich Results Test. Fix any errors it flags.
- Check that data matches the page. Every value in your schema must also be visible to a human on the page. If the schema says $80,000 but the page does not, Google loses trust.
- Speed up crawling. Use the Google Indexing API to tell Google about new or changed jobs. With it, listings often appear within 1 to 24 hours instead of days.
- Submit a sitemap. Keep an accurate XML sitemap with correct last-modified dates so Google covers your whole site.
- Watch Search Console. The Job Postings report shows errors and warnings. Check it often and fix issues fast.
Common mistakes that hide your jobs
Most schema problems are not about missing a field. They are about trust and cleanup. These are the errors that quietly kill visibility.
Schema is on the wrong page. JobPosting belongs on a single job page only. If it sits on a list, search, or category page, Google flags it as a policy violation.
Expired jobs stay live. Leaving old jobs with active schema is the fastest way to wreck your indexing over time. When a job is filled, do one of three things: set validThrough to a past date, return a 404 or 410 for the page, or remove the schema. Then notify Google.
The schema does not match the page. If the visible title, salary, or location differs from the code, Google stops trusting your markup. Keep them identical.
Job titles get changed. If you are a job board, do not rewrite the employer’s title. Turning “Senior Data Analyst” into “Senior Data Analyst (Remote, $120K+)” can trigger a manual action across your site.
The location is too broad. “Worldwide” and “Anywhere” are not real locations. Use a proper country or region for remote roles.
No way to apply. Google rejects jobs that hide the details behind a login or offer no way to apply. The full posting must be visible without signing in.
Valid but still not showing. This is the most common forum complaint. If your schema passes the test but the job still does not appear, the problem is usually the page, not the code. Check for one clean canonical URL per job, remove expired jobs faster, and make sure the visible details match the markup.
Schema for AI search: the part most guides skip
Search is no longer just ten blue links. Google AI Overviews, ChatGPT, Gemini, and Perplexity now answer job questions directly. They read structured data to decide which sources to trust and cite.
Complete JobPosting schema hands these tools clean, labeled facts:
- baseSalary answers “What does this role pay?”
- jobLocationType answers “Is this job remote?”
- datePosted answers “When was this posted?”
- employmentType answers “Is this full-time or contract?”
When your data is this clear, AI engines are far more likely to surface your listing in a conversational answer. A site built only for old-style rich snippets is not ready for this shift. Filling out every relevant field is how you get picked as the answer.
Good Read: How Perplexity, ChatGPT, and Gemini Use Structured Data
Frequently Asked Questions (FAQs)
Is Google for Jobs free?
Yes. Google for Jobs is completely free. There is no premium placement and no way to pay for a higher spot. The only cost is the time to add and maintain the schema.
Is there a Google Jobs API to post jobs?
No. Google discontinued the Jobs API. You cannot submit jobs directly. Google crawls your job pages, reads the JobPosting schema, and pulls the listings in.
Does schema directly improve my Google ranking?
Schema is not a direct ranking factor on its own. It makes your pages eligible for rich results and the job panel, which raises click-through rates and visibility. That is where the real gains come from.
How long until my jobs appear in Google for Jobs?
After you add valid schema, it can take a few days for Google to crawl and process the page. Using the Indexing API can cut this to 1 to 24 hours.
Should I add JobPosting schema to my job list pages?
No. JobPosting belongs only on single job detail pages. Adding it to list, search, or category pages breaks Google’s rules and can hurt your whole site.
What happens if I leave filled jobs on my site?
Leaving filled positions with active schema violates Google’s policies and can reduce visibility for all your listings. Always update validThrough or remove the page when a job is filled.
Which schema types should a recruitment agency use besides JobPosting?
Add Organization schema for your brand, BreadcrumbList for site structure, FAQPage on guide pages, WebSite with SearchAction, and EmployerAggregateRating if you review employers.
My schema passes the test but jobs still do not show. Why?
Valid schema is only the start. Google also checks page quality, one clean URL per job, visible details that match the markup, and how fast you remove expired jobs. Fix those and the listings usually follow.
Your next step
Pick one live job page and check it in the Rich Results Test right now. If it fails, add the five required fields, then salary and job type, using the code above. If you run WordPress, SchemaEngine AI can build and validate that schema for you in a few clicks, so you can roll it out across every job without touching code.
Get one page right, confirm it in the job panel, then repeat the pattern for the rest of your listings.



