SchemaValid
ENDE

Job Posting Schema Generator

Create valid Job Posting JSON-LD structured data for your job openings — with organization, location, salary and remote support, ready for Google for Jobs. Instant, in your browser, free.

Try an example

Job title & type


Dates


Hiring organization


Location


Salary (optional)

JSON-LD code

Fill in the required fields (title, description, date posted, company) to generate the JSON-LD code.

How do I get into Google for Jobs?

Google for Jobs is the job-search experience that appears at the top of Google results when someone searches for work. It is powered entirely by JobPosting structured data: Google reads the JSON-LD on your careers page to understand the role, company, location and salary, then shows your listing directly in search — for free, with no job board or fee involved. To be eligible, each job needs valid JobPosting markup on its own dedicated, indexable page, the details in the markup must match what a visitor sees, and expired roles should be removed or marked with a validThrough date in the past. This tool generates that markup for you so your openings can qualify.

Required fields for job postings

Google requires a job title, a full job description (HTML is allowed and encouraged), the date the job was posted, and a hiring organization — those four are what this tool enforces before it outputs code. A job location is required for on-site roles; for remote positions you instead set jobLocationType to TELECOMMUTE and specify the country applicants may work from, which the Remote checkbox handles automatically. Strongly recommended additions are validThrough (when the posting expires), employmentType, and baseSalary — Google increasingly highlights salary information, so providing it can make your listing more prominent and trustworthy.

How to add the schema to your site

Copy the generated code and paste it into a script tag of type application/ld+json in the head section of the individual job page it describes — one posting per page. The title, description and location in the markup must match the visible content. Once the page is published and indexed, Google can pick it up for the Jobs experience. A minimal example looks like this:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "JobPosting",
  "title": "Senior Frontend Developer",
  "description": "We are looking for an experienced frontend developer.",
  "datePosted": "2026-07-11",
  "employmentType": "FULL_TIME",
  "hiringOrganization": {
    "@type": "Organization",
    "name": "ACME GmbH"
  },
  "jobLocation": {
    "@type": "Place",
    "address": {
      "@type": "PostalAddress",
      "addressLocality": "Berlin",
      "addressCountry": "DE"
    }
  }
}
</script>

Frequently asked questions

Which fields are required for JobPosting schema?
Google requires a job title, a description, the date posted and a hiring organization. This tool enforces exactly those four. A location is required for on-site jobs; remote jobs use the TELECOMMUTE type plus a country instead.
Is Google for Jobs really free?
Yes. Google for Jobs does not charge employers to be listed. If your job page has valid JobPosting structured data and is indexed, it can appear in the Jobs experience at no cost — no job board or paid placement is required.
How do I mark up a remote job?
Tick the remote checkbox. The tool then sets jobLocationType to TELECOMMUTE and adds applicantLocationRequirements based on the country you enter, which is how Google identifies fully remote roles. You can still add a physical address if the role is hybrid.
Do I need a separate page for each job?
Yes. Google expects one JobPosting per dedicated, indexable URL. Putting several jobs on one page, or on a page that cannot be indexed, prevents them from appearing in Google for Jobs.
How do I check that the markup is valid?
Paste your job page URL or the generated code into Google's Rich Results Test. It validates the JobPosting structure and reports whether the posting is eligible for the Google for Jobs experience.
What is JobPosting schema markup?
JobPosting schema markup is a JSON-LD snippet based on the schema.org vocabulary that describes a job opening in a machine-readable way — title, description, employer, location, dates and pay. Google reads it to power Google for Jobs; nothing about how the page looks to a visitor changes.
Does valid markup guarantee my job appears in Google for Jobs?
No. Valid JobPosting structured data is a requirement, not a guarantee — Google also weighs the overall quality and trustworthiness of the site, and can choose not to surface any given listing. Keeping the markup accurate and the posting genuinely live improves your odds but isn't a promise.
What if the salary isn't a fixed number?
Enter the lower end of the range in the base salary field, or run the tool twice and manually merge the output into a minValue/maxValue pair inside the value object if you want to show a full range — schema.org supports that structure even though this tool's field is a single number for simplicity.
Should I also add Organization schema for my company?
It's a good complement. JobPosting already nests a hiringOrganization, but a separate Organization schema on your homepage — with logo, sameAs social profiles and description — reinforces the same entity and can support a stronger overall brand presence in search.
How long should a job posting stay valid?
That depends on your hiring timeline, but Google recommends setting a realistic validThrough date rather than leaving postings open indefinitely. Once a role is filled or withdrawn, remove the page or update the markup — stale, long-expired postings hurt trust in your site's structured data.
What are common mistakes when adding JobPosting schema?
The most frequent ones are leaving expired jobs marked up as if still open, putting several unrelated postings on one page, writing promotional filler instead of an actual job description, and letting the salary or location in the markup drift out of sync with what the page actually shows.
What's the difference between the employment types?
FULL_TIME and PART_TIME describe ongoing employment by hours; CONTRACTOR is project- or freelance-based work outside standard employment; TEMPORARY is a fixed-duration role, often through an agency; and INTERN is a structured, typically time-limited training position. Pick the one that matches the actual contract being offered.

Related tools