Skip to content

Job Posting Schema Generator - JSON-LD for Google for Jobs

Job Details

HTML is allowed. Include responsibilities, qualifications, and benefits.

When the posting expires. Omit if the job stays open indefinitely.

Employer

Location

Set to TELECOMMUTE for fully remote jobs.

Compensation

Whether candidates can apply directly on your site without redirecting elsewhere.

Google Search Preview
C
Job Title
Company
All Google requirements met

JSON-LD Output

Why Google for Jobs Changed Hiring

Google launched Google for Jobs in 2017, and it quickly became one of the most impactful structured data integrations in search. When a user searches for something like "marketing manager jobs near me," Google surfaces a dedicated job panel with filters for location, salary, date posted, and employment type. JobPosting schema is the mechanism that gets your listings into that panel. Without it, your job pages compete as regular organic results against aggregators like Indeed and LinkedIn. With it, your openings appear alongside those platforms, directly in Google Search.

The Fields Google Actually Looks At

Five fields are required: title, description, datePosted, hiringOrganization (with a name property), and jobLocation. Skip any of these and your listing won't index into Google for Jobs at all. Beyond the essentials, baseSalary is strongly recommended because listings with salary data get higher engagement and Google can surface them for salary-filtered searches. employmentType (full-time, part-time, contract) helps with filtering. validThrough tells Google when to stop showing the listing, preventing stale results. The directApply property, when set to true, signals that candidates can apply directly on your site without being redirected.

Handling Remote and Hybrid Roles

Remote work has fundamentally changed job search behaviour. To mark a position as remote, set jobLocationType to "TELECOMMUTE." Even for fully remote roles, include a jobLocation with at least a country. Google uses this to match listings with job seekers in relevant geographic regions. For hybrid positions, include both the TELECOMMUTE type and the physical office address. This ensures the listing appears in both remote job searches and location-based queries. Omitting the location entirely on a remote job is a common mistake that limits visibility.

Eligibility Rules That Trip People Up

Valid schema alone isn't enough. Google enforces content policies that disqualify otherwise well-marked-up pages. Job listings must be freely accessible. If a user has to log in or pay to see the full description, the listing won't appear in Google for Jobs. Every listing must represent a real, currently open position. Pages that aggregate jobs without original listings, use fake postings to collect leads, or mix job ads with unrelated content will be filtered out. Your pages also need to be crawlable (no noindex tags blocking Googlebot) and should load the structured data in the initial HTML rather than relying solely on client-side rendering. Keep validThrough dates current and remove schema from filled positions promptly to maintain trust with Google's indexing system.

Frequently Asked Questions

What is JobPosting schema markup?
JobPosting schema is JSON-LD structured data that describes a job listing: its title, description, location, salary, and hiring organization. Google uses it to populate Google for Jobs, the dedicated job search experience that appears directly in search results.
Which fields are required for JobPosting schema?
Google requires title, description, datePosted, hiringOrganization (with at least a name), and jobLocation. Without these fields, your listing won't appear in Google for Jobs. Recommended fields include baseSalary, employmentType, validThrough, and directApply.
What does Google for Jobs need beyond valid schema?
Your job listings must be freely accessible, with no login walls, paywalls, or gated content. Each listing must be a real, current job opening, not a recruitment ad or lead-generation page. Pages should also follow Google's webmaster guidelines and be crawlable.
How do I mark a job as remote in structured data?
Set the jobLocationType property to TELECOMMUTE. You should still include a jobLocation with at least a country, since Google uses it to show the listing to job seekers in relevant regions. For hybrid roles, include both TELECOMMUTE and a physical address.
How should salary be formatted in JobPosting schema?
Use the baseSalary property with a QuantitativeValue that includes a value (or minValue/maxValue for a range), currency code, and unitText (HOUR, MONTH, or YEAR). For example, a range of $50,000 to $70,000/year uses minValue: 50000, maxValue: 70000, unitText: YEAR, and currency: USD.