Rankite
ServicesResultsToolsTeamAboutBlogCareersContactFree SEO Audit
Free tool

Job Posting Schema Generator: Build JobPosting JSON-LD Fast

Enter your job title, company, location and salary, then copy valid JobPosting JSON-LD you can drop into your listing page to become eligible for Google's job search results.

Home / Tools / Job Posting Schema Generator

Salary (optional)

Your JobPosting JSON-LD

Paste this inside a script tag with type application/ld+json in the page head of the job listing it describes. One block per job posting.

Built by Rankite, the SEO team behind Swordfish AI's +400% revenue and Zluri's +45% organic growth. See the case studies

What JobPosting schema does

JobPosting schema is structured data, using the schema.org JobPosting type, that describes an open role in a format search engines can parse directly: the title, description, company, location, dates and pay. Google uses this markup to power its job search experience, where listings from across the web get pulled into a dedicated jobs interface with filtering by location, employer and salary. Without the markup, your listing is just text on a page. With it, the same listing becomes a structured record a job search feature can read and display.

How to use this generator

Fill in the title, description and company, then choose whether the role is on-site, hybrid or fully remote. For remote roles the tool switches the location field to ask which country applicants need to be based in, since a fully remote job usually has no single office address to mark up. Set the posted date and an expiry date (validThrough), because Google drops listings from its job search results once that date passes and stops showing an expired role as if it were open. Salary is optional but worth adding: listings with pay ranges tend to get more qualified clicks, and some job platforms now require it. Copy the finished JSON-LD into the page head of the listing it describes.

Fields worth getting right

Three fields cause most of the rejections when this type of markup gets checked. The first is validThrough: leave it blank or set it too far in the future and Google may keep showing a role that is no longer open, which frustrates applicants and reflects badly on the listing. The second is jobLocation versus jobLocationType: a fully remote job should use jobLocationType set to TELECOMMUTE rather than inventing an office address, and a hybrid or on-site role needs a real, complete postal address. The third is employmentType, which has to be one of the fixed values (FULL_TIME, PART_TIME, CONTRACTOR, TEMPORARY, INTERN, VOLUNTEER, PER_DIEM or OTHER) rather than free text like "flexible" or "24 hrs/week". This generator handles all three automatically based on the options you pick.

Related articles

FAQ

Job Posting Schema Generator: questions, answered

What is JobPosting schema and why use it?
It is structured data that describes a job opening in a format search engines can read directly, using the schema.org JobPosting type. Adding it makes your listing eligible to appear in Google's job search experience alongside listings from other job boards and career sites, which can bring in applicants who never would have found the raw page through a regular search result.
Is JobPosting schema required to appear in Google for Jobs?
Yes, in practice. Google's job search feature is built entirely from pages that carry valid JobPosting markup; there is no separate manual submission process for individual listings. A page without the markup can still rank normally in regular search results, it just will not show up inside the dedicated jobs interface.
What does employmentType accept?
A fixed list of values defined by schema.org: FULL_TIME, PART_TIME, CONTRACTOR, TEMPORARY, INTERN, VOLUNTEER, PER_DIEM and OTHER. Free-text descriptions like “flexible hours” are not valid values here; pick the closest match from the list and put any extra detail in the job description instead.
Do I need to include a salary?
It is optional in the schema itself, but adding it is worth considering. A visible pay range tends to draw more qualified applicants and fewer time-wasting inquiries, and a growing number of regions have pay-transparency laws that require salary ranges to be disclosed in job ads. If you would rather not publish a number, simply leave the salary fields blank and the generator omits that block.
How long should validThrough be set?
Set it to the actual date the listing closes, not an arbitrary far-future date. Google uses validThrough to decide when to stop showing a job as open, so an expired date left too far out risks keeping a filled role visible and annoying applicants who apply to a position that no longer exists. Thirty to sixty days out is a reasonable default for most postings, adjusted to when you actually plan to stop accepting applications.

More free tools

Let's grow

Ready to own page one?

Get a free, no-obligation SEO audit and a 30-minute strategy session. We'll show you exactly where the growth is hiding.

Book your free audit Explore services
Get in touch

Tell us about your project

Fill out the form and we'll get back to you within one business day. Prefer email? Write to us directly at contact@rankite.com.

Or copy our email and write to us directly: contact@rankite.com