Catalog/JobPosting schema missing required properties
SEO issue

JobPosting schema incomplete: missing required fields

JobPosting JSON-LD missing title, description, datePosted, hiringOrganization or jobLocation is dropped from Google's job listing experience. Find incomplete JobPosting markup free and add the required fields.

8
audited sites affected

What it means

Your page has JobPosting structured data, but a required or recommended property is absent. Missing required fields — title, description, datePosted, hiringOrganization, or jobLocation — raise a warning; missing recommended fields (salary, employment type, direct-apply) raise a notice. In either case the posting may be excluded from Google's job-listing rich result.

Why it matters

Google surfaces job postings in a dedicated experience — the results carousel and the Jobs tab — showing title, company, location, and salary before the click. Incomplete markup disqualifies the posting entirely. title is the actual job title (not the HTML <title>); description is the full HTML description and must match the visible page; datePosted sets freshness and drives expiration; hiringOrganization needs at least a name; and jobLocation (a Place with a PostalAddress) is required for any non-remote role — a missing location is the most common reason for rejection.

How to fix it

  1. Place JobPosting markup on the individual job detail page, not a listing or search page.
  2. Set title to match the visible job title exactly — do not reuse the HTML <title>.
  3. Write description as the full job description in HTML, matching the visible content.
  4. Set datePosted in ISO 8601, and add validThrough so expired postings are not indexed forever.
  5. For non-remote roles add jobLocation with a PostalAddress; for fully remote roles omit it, set jobLocationType to TELECOMMUTE, and include applicantLocationRequirements.
  6. Add recommended baseSalary, employmentType, and directApply, then validate in the Rich Results Test.

Example

Before — JSON-LD
{
  "@context": "https://schema.org",
  "@type": "JobPosting",
  "title": "Senior Go Engineer"
}
After — JSON-LD
{
  "@context": "https://schema.org",
  "@type": "JobPosting",
  "title": "Senior Go Engineer",
  "description": "<p>Own our crawler pipeline end to end...</p>",
  "datePosted": "2026-07-01",
  "hiringOrganization": {"@type":"Organization","name":"Crawlinx","sameAs":"https://crawlinx.com"},
  "jobLocation": {
    "@type": "Place",
    "address": {"@type":"PostalAddress","addressLocality":"Lisbon","addressCountry":"PT"}
  },
  "validThrough": "2026-09-01T23:59"
}

title, description, datePosted, hiringOrganization and jobLocation are required. For a remote role, drop jobLocation and set jobLocationType to TELECOMMUTE with applicantLocationRequirements.

When it's not a problem

If the page is a job listing or search aggregator rather than an individual posting, JobPosting markup is inappropriate regardless of completeness — remove it. For fully remote positions, omitting jobLocation is correct provided jobLocationType is TELECOMMUTE (Crawlinx will not warn in that case). Notice-level findings for missing recommended fields do not block rich-result eligibility. This rule is separate from schema.invalid (structurally broken markup).

How Crawlinx detects it

We validate every JobPosting block against Google's required set (title, description, datePosted, hiringOrganization, jobLocation). Fully remote postings are recognised when jobLocationType is TELECOMMUTE, so they aren't falsely flagged for a missing jobLocation.

How common is it?

8 audited sites in our corpus currently show this issue. The breakdowns below show which platforms, gatekeepers, verticals and countries are most exposed.

FAQ

What fields does Google require for a job posting?
title, description (HTML allowed), datePosted, hiringOrganization and jobLocation. validThrough is strongly recommended so expired jobs drop out automatically.
How do I mark up a remote job?
Omit jobLocation, set jobLocationType to "TELECOMMUTE", and add applicantLocationRequirements with the country or region candidates must be in.
Why isn't my job in Google's job listings?
Beyond incomplete markup, jobs also drop when validThrough has passed, when the page is noindex, or when the posting isn't reachable via a crawlable link. Check all three.
Breakdowns

WordPress

View breakdown →

Category

View breakdown →

Related
Catalog Article schema missing recommended properties (Top Stories / image carousel) BreadcrumbList present but structurally incomplete Deep page has no BreadcrumbList structured data Comma decimal in schema ratingValue/price (invalid number) Deprecated data-vocabulary.org markup (no rich-result eligibility) Dataset schema incomplete (name/description; Dataset Search only) Deprecated schema type with no Google rich result Event schema missing required properties (name/startDate/location) FAQPage structured data (rich result removed May 2026) Schema describes content not visible on the page Rich-result schema missing required properties Category WordPress LocalBusiness schema missing required properties (name/address) JSON-LD block missing @context or @type No structured data detected Product schema missing required or recommended properties QAPage schema incomplete (mainEntity Question with an answer) Recipe schema missing required properties (name/image) Review schema missing required properties (author/itemReviewed/reviewRating) SoftwareApplication schema incomplete (name/offers-or-rating/recommended) Structured-data date has already passed (stale event/job/offer) VideoObject schema missing required properties (name/thumbnailUrl/uploadDate)

Audit your own site — free

157 checks, internal PageRank, render-diff. No signup, results in ~30s.

Scan your site →