Panduan JobPosting Schema

cara implement JobPosting data terstruktur untuk appear di Google untuk Jobs — five diperlukan properties, recommended fields itu actually drive clicks, remote-job markup, konten policies itu get postings disapproved, dan cara hapus expired jobs correctly.

Pertama kali diterbitkan: 27 Jun 2026 · Terakhir diperbarui: 3 Agu 2026 · Advanced
Bahasa
1 sinyal bukti di halaman ini

JobPosting schema adalah schema.org/JSON-LD markup Anda put pada sebuah single job-listing halaman untuk become eligible untuk Google untuk Jobs. Five properties adalah diperlukan — judul, deskripsi, datePosted, hiringOrganization, dan jobLocation (dengan sebuah fully-remote exception) — dan recommended ones (validThrough, employmentType, baseSalary) adalah where click-melalui dan filtering nilai lives. konten-schema parity adalah non-negotiable: everything di JSON-LD harus menjadi terlihat pada halaman. paling umum disapproval cause adalah putting markup pada sebuah listing halaman alih-alih one job per halaman. Expired-job hygiene adalah sebuah ongoing obligation, not sebuah one-time setup — leave dead jobs live dan Anda risk sebuah manual tindakan. dan Google's pengindeksan API adalah scoped untuk JobPosting dan BroadcastEvent hanya; misusing ini sebagai sebuah umum 'indeks faster' button dapat cost Anda access. Bing mendukung yang sama vocabulary tetapi documents ini far more lightly — lean Google.

TL;DR — JobPosting schema (schema.org/JobPosting, di JSON-LD) membuat sebuah single-job halaman eligible untuk Google untuk Jobs. Google memerlukan five properties — title, description, datePosted, hiringOrganization, jobLocation — dengan applicantLocationRequirements/jobLocationType: TELECOMMUTE substituting untuk location pada fully remote roles. recommended set (validThrough, employmentType, baseSalary, identifier, directApply) adalah where CTR dan filtering nilai lives. Two hard aturan: one job per halaman, dan konten-schema parity (setiap JSON-LD nilai harus menjadi terlihat pada halaman). Expired-job hygiene adalah sebuah ongoing compliance task dengan three sanctioned removal metode; leaving expired jobs live risks sebuah manual tindakan. Google’s pengindeksan API adalah scoped untuk JobPosting dan BroadcastEvent hanya dan adalah now approval-gated — don’t treat ini sebagai sebuah umum “index faster” (terjemahan) “indeks faster” button. Bing mendukung yang sama vocabulary tetapi documents ini far more thinly; lean Google.

Evidence for this claim Google documents jobLocationType TELECOMMUTE and applicantLocationRequirements for fully remote jobs. Scope: Google Search JobPosting remote-job requirements; hybrid roles should not be marked as fully remote. Confidence: high · Verified: Google: JobPosting structured data

My umum stance pada schema hasn’t changed untuk job listings: I’m sebuah fan dari markup sebagai panjang sebagai ini earns Anda sebuah search fitur. JobPosting clears itu bar cleanly — ini adalah gate untuk Google untuk Jobs, sebuah genuine SERP surface — so ini adalah worth doing, dan worth doing precisely. precision adalah whole game here, because job listings adalah one dari more heavily policed structured-data jenis Google runs.

five diperlukan properties

Google’s job-posting structured-data documentation lists five diperlukan properties. Miss apa pun one dan halaman isn’t eligible:

  • title“The title of the job (not the title of the posting). For example, ‘Software Engineer’ or ‘Barista’.” (terjemahan) “ judul dari job (not judul dari posting). misalnya, ‘Software Engineer’ atau ‘Barista’.” (jump untuk quote) ini trips people up constantly — nilai adalah role, not Anda halaman’s <h1> atau SEO judul.
  • description — full HTML job deskripsi. ini harus not hanya repeat judul; Google ingin nyata, complete deskripsi.
  • datePosted — original date employer posted job, di ISO 8601 (e.g., 2017-01-24).
  • hiringOrganization“The organization offering the job position. This must be the name of the company (for example, ‘Starbucks, Inc’).” (terjemahan) “ organization offering job position. ini harus menjadi name dari company (misalnya, ‘Starbucks, Inc’).” (jump untuk quote) untuk sebuah job board ini harus menjadi nyata employer, not board.
  • jobLocation — physical worksite where employee akan report, not place job adalah posted. Not diperlukan jika Anda supply applicantLocationRequirements untuk sebuah remote role.

sebuah minimal, valid contoh:

{
  "@context": "https://schema.org/",
  "@type": "JobPosting",
  "title": "Software Engineer",
  "description": "&lt;p>Full job description in HTML…&lt;/p>",
  "datePosted": "2026-06-27",
  "hiringOrganization": {
    "@type": "Organization",
    "name": "Example Co",
    "sameAs": "https://www.example.com"
  },
  "jobLocation": {
    "@type": "Place",
    "address": {
      "@type": "PostalAddress",
      "addressLocality": "Raleigh",
      "addressRegion": "NC",
      "addressCountry": "US"
    }
  }
}

Eligibility comes dari diperlukan five, tetapi CTR dan filtering nilai comes almost entirely dari recommended set — ini adalah fields Google untuk Jobs lets searchers filter pada:

  • validThrough — date posting expires, di ISO 8601. There’s sebuah nuance worth stating plainly: omit ini entirely jika job tidak pernah expires, tetapi jika job melakukan memiliki sebuah end date, sertakan ini dan pertahankan ini accurate. Leaving sebuah stale validThrough di place adalah sebuah compliance masalah, not sebuah harmless default.
  • employmentTypeFULL_TIME, PART_TIME, CONTRACTOR, TEMPORARY, INTERN, VOLUNTEER, PER_DIEM, atau OTHER (sebuah array adalah allowed).
  • baseSalary (sebuah MonetaryAmount) — actual base salary disediakan oleh employer, not sebuah estimate; hanya employer dapat supply ini. gunakan unitText dari HOUR/DAY/WEEK/MONTH/YEAR, dan minValue/maxValue untuk sebuah range. dengan pay-transparency laws spreading, ini adalah increasingly not optional dalam praktik.
  • identifier (sebuah PropertyValue) — employer’s unique job/req ID; penting untuk de-duplication, terutama pada aggregators.
  • directApply — indicates whether posting’s URL lets someone apply directly pada itu situs alih-alih redirecting elsewhere.

Beta properties

Google requested sebuah set dari additional properties back di 2021 itu adalah masih flagged beta: educationRequirements.credentialCategory, experienceRequirements.monthsOfExperience, dan experienceInPlaceOfEducation. ini grew out dari Google’s Career Certificate push selama pandemic-era job market. Google’s own framing di launch adalah itu because ini adalah masih developing how ini menggunakan informasi, Anda mungkin not see apa pun appearance atau effect di Google Search right away.

beta-property framing above adalah paraphrased dari Google’s launch statement sebagai relayed di mesin pencari Journal’s March 2021 coverage; ini isn’t quoted verbatim here because I sourced ini secondhand. Confirm exact wording terhadap live docs sebelum treating ini sebagai sebuah direct quote.

My take: tambahkan them jika mereka’re cheap untuk populate dari Anda ATS, tetapi don’t hold up sebuah launch untuk them — mereka’re future-proofing, not eligibility.

Remote dan hybrid jobs: TELECOMMUTE done right

Remote markup memiliki three distinct patterns, dan getting ini wrong adalah sebuah classic konten-mismatch flag.

Fully remote. Set jobLocationType untuk TELECOMMUTE, untuk jobs di which employee dapat atau harus berfungsi remotely 100% dari time. Google memerlukan setiap TELECOMMUTE posting untuk specify setidaknya one eligible country — via applicantLocationRequirements (Google’s preferred metode) atau, failing itu, sebuah default taken dari jobLocation. There’s no valid scenario where sebuah remote job carries zero location informasi: “unrestricted” (terjemahan) “unrestricted” dalam praktik berarti listing setiap country Anda’ll accept applicants dari, not omitting field. pada-halaman deskripsi harus clearly say role adalah fully remote too — konten-schema parity applies here sebagai much sebagai anywhere.

Evidence for this claim Google documents jobLocationType TELECOMMUTE and applicantLocationRequirements for fully remote jobs. Scope: Google Search JobPosting remote-job requirements; hybrid roles should not be marked as fully remote. Confidence: high · Verified: Google: JobPosting structured data
{
  "@type": "JobPosting",
  "jobLocationType": "TELECOMMUTE",
  "applicantLocationRequirements": {
    "@type": "Country",
    "name": "USA"
  }
}

itu contoh adalah sebuah US-hanya remote role. untuk “remote within the EU” (terjemahan) “remote di dalam EU” atau apa pun multi-country role, repeat applicantLocationRequirements untuk setiap eligible country — property name adalah yang sama whether Anda’re naming one country atau ten.

Hybrid. sebuah hybrid role adalah not fully remote. Give ini sebuah nyata office jobLocation, dan hanya tambahkan TELECOMMUTE flag jika role genuinely qualifies sebagai remote — Google’s own hybrid contoh pairs sebuah physical jobLocation dengan jobLocationType (plus applicantLocationRequirements when remote option adalah itself geography-restricted). mistake untuk hindari: marking sebuah occasional-berfungsi-dari-home role sebagai TELECOMMUTE. itu’s sebuah konten mismatch waiting untuk happen — TELECOMMUTE adalah untuk 100%-remote berfungsi, dan halaman memiliki untuk back itu up. When di doubt, Decision Trees tab memiliki sebuah “should this use TELECOMMUTE?” (terjemahan) “seharusnya ini gunakan TELECOMMUTE?” walkthrough.

Evidence for this claim Google documents jobLocationType TELECOMMUTE and applicantLocationRequirements for fully remote jobs. Scope: Google Search JobPosting remote-job requirements; hybrid roles should not be marked as fully remote. Confidence: high · Verified: Google: JobPosting structured data

Google untuk Jobs eligibility dan regional availability

One surprise untuk international teams: Google untuk Jobs isn’t global. ini adalah live di 50+ countries di seluruh North America, Latin America, Europe, Middle East dan North Africa, Sub-Saharan Africa, dan Asia — tetapi not everywhere. jika Anda listings adalah technically perfect dan masih not showing, periksa bahwa experience adalah available di Anda target country sebelum Anda spend sebuah day debugging Anda JSON-LD.

konten policies itu get postings disapproved

Google’s job-posting konten policies adalah stricter daripada sebagian besar structured-data aturan, dan mereka’re worth knowing oleh mereka nyata names because Search Console akan cite them. dari Google’s documentation:

  • Single-job halaman hanya. “The JobPosting markup must only be used on pages that contain a single job posting.” (terjemahan) “ JobPosting markup harus hanya menjadi digunakan pada halaman itu berisi sebuah single job posting.” (jump untuk quote) ini adalah single sebagian besar umum dunia nyata disapproval — no markup pada listing/search-hasil halaman.
  • Irrelevant konten — posting’s konten harus menjadi relevant untuk job.
  • Incomplete konten — Google doesn’t allow job postings dengan incomplete job deskripsi.
  • Misrepresentation — no fake jobs, keyword stuffing, salah location data, impersonation, atau posting someone else’s listing without authorization.
  • Profanity — no obscene, profane, atau offensive language.
  • Disguised ads / promotional konten — no affiliate-program listings atau lainnya promotional konten dressed up sebagai sebuah job.
  • Expired postings — Google doesn’t allow expired job postings. “Ideally you should remove expired job postings from your website.” (terjemahan) “Ideally Anda seharusnya hapus expired job postings dari Anda situs web.” (jump untuk quote)
  • Jobs without sebuah cara untuk apply — setiap posting perlu sebuah cara untuk apply (career-fair invites dan login-gated postings adalah exempted).
  • Resume collection — hanya untuk open, actively-hiring positions.
  • Job permintaan — markup adalah untuk actual openings, not solicitations dari people seeking berfungsi.
  • Payment diperlukan — tidak pernah memerlukan sebuah applicant untuk pay.
  • Editorial konten — proper grammar dan capitalization; no semua-caps spam.

melalui-line: konten-schema parity adalah non-negotiable. setiap nilai di JSON-LD — salary, remote status, employment jenis — harus menjadi visibly present di human-readable halaman, atau Google dapat treat mismatch sebagai misrepresentation.

Handling expiration dan removal correctly

ini adalah bagian teams di bawah-bangun. Expired-job hygiene adalah sebuah ongoing obligation, not sebuah one-time setup task — Anda perlu sebuah process (sebuah cron job, sebuah ATS integration, atau sebuah pengindeksan API panggil) untuk pull sebuah role moment ini closes. Google sanctions three removal metode:

  1. Set validThrough untuk sebuah date di past dan leave halaman up briefly.
  2. hapus halaman entirely dan mengembalikan 404 atau 410.
  3. Strip JobPosting markup dari halaman.

risk jika Anda tidak: leaving expired postings live violates konten policies, dan Google says respons dapat sertakan manual tindakan itu menghapus job posting(s) dari job search experience pada Google — itu’s scoped untuk Anda job listings’ eligibility untuk Jobs fitur, not sebuah automatic penalty terhadap rest dari Anda situs’s organic rankings. Evidence for this claim Google requires expired job postings to be removed or marked with a past validThrough value and no longer exposed as active jobs. Scope: Google Search JobPosting expiration policy; stale postings can trigger manual actions. Confidence: high · Verified: Google: JobPosting structured data Setting sebuah future validThrough pada sebuah job itu’s actually filled melakukan not pertahankan ini “safe” (terjemahan) “safe” — halaman harus reflect reality.

untuk faster removal dan updates pada job URLs specifically, Google recommends -nya pengindeksan API di atas waiting untuk sebuah normal re-crawl atau sebuah sitemap ping — see next bagian untuk scope dan access caveats.

Duplicate dan syndicated postings

sebuah very umum dunia nyata case: yang sama req posted untuk Anda careers halaman dan three job boards. ini adalah fine. John Mueller memiliki said itu having yang sama job posted pada berbeda situs web adalah very umum dan expected, dan itu hosting yang sama listing di berbeda times atau pada berbeda subdomains seharusnya menjadi fine too — Google de-duplicates identical listings alih-alih penalizing them, dan he’s indicated yang sama applies untuk Google untuk Jobs.

Mueller’s remarks above adalah paraphrased dari sebuah February 2022 Google Hangout sebagai recapped oleh iloveseo.com; I’m summarizing alih-alih quoting because I sourced ini melalui itu secondary recap. What masih applies regardless: hiringOrganization harus menjadi nyata employer, dan no misrepresentation.

pengindeksan API adalah scoped — dan now gated

Google’s pengindeksan API adalah not sebuah umum “get indexed faster” (terjemahan) “get terindeks faster” alat. Per Google’s pengindeksan API quickstart, ini dapat hanya menjadi digunakan untuk crawl halaman dengan either JobPosting atau BroadcastEvent embedded di sebuah VideoObject — job postings adalah one dari hanya two legitimate gunakan cases. Submitting sebuah URL adalah sebuah notification, not sebuah guarantee: ini doesn’t guarantee itu Google akan crawl, indeks, sertakan, peringkat, atau display halaman pada apa pun particular timeline.

Two things memiliki changed landscape here:

  1. Access adalah now approval-gated. default per-day quota adalah modest, dan getting meaningful volume now memerlukan filling out sebuah Google approval form alih-alih menjadi auto-enabled. Cite Google’s own Requesting Approval dan Quota halaman sebagai primary source untuk ini.
  2. Google adalah visibly protecting lane dari spam. Google reps memiliki repeatedly warned terhadap misusing pengindeksan API untuk push arbitrary, unsupported halaman jenis — recommendation adalah untuk stick untuk documented, didukung gunakan cases. Because JobPosting adalah one dari hanya two dari itu, ini penting directly: abuse API untuk non-job konten dan Anda risk losing access untuk sebuah channel Anda job listings actually depend pada.
Industry reporting (dstribute.io, alexanderchukovski.com) frames shift dari near-open pengindeksan API access untuk sebuah authorized-partner/approval model sebagai rolling out roughly di seluruh 2024–2025. I’m treating itu phased dates sebagai industry-sourced color, not Google-confirmed line oleh line — primary, citable fact adalah Google’s own quota-pricing/approval halaman. rep warnings tentang API misuse adalah surfaced melalui secondary aggregation, so I’ve paraphrased alih-alih quoted them; verify exact wording dan platform terhadap primary source sebelum quoting directly.

Troubleshooting di Search Console

When sebuah listing doesn’t tampilkan, berfungsi ini di order — Playbooks tab lays ini out sebagai sebuah linear runbook, tetapi pendek versi:

  • Validate markup dengan Rich hasil Test dan confirm semua five diperlukan properties parse without error.
  • Confirm one job per halaman — paling umum disapproval adalah JobPosting markup pada sebuah listing/indeks halaman.
  • periksa konten-schema parity — setiap JSON-LD nilai (salary, remote status, employment jenis) harus menjadi terlihat pada halaman.
  • periksa validThrough dan expiry — sebuah expired posting masih carrying live markup gets disapproved.
  • Confirm regional availability — Google untuk Jobs isn’t available everywhere.
  • periksa Search Console’s rich-hasil report untuk spesifik disapproval alasan dan fix terhadap itu named policy.
Caveat, per my source research: there memiliki telah reports dari sebuah 2026 Search Console job-listing reporting issue affecting how job rich hasil surface di report. I haven’t telah able untuk confirm itu terhadap sebuah primary Google source, so treat ini sebagai sebuah unverified possibility — jika Anda report looks wrong tetapi markup validates cleanly di Rich hasil Test, sebuah reporting glitch adalah worth ruling di, tetapi confirm sebelum concluding ini adalah sebuah Google-side bug.

Bing dan JobPosting

Bing mendukung data terstruktur broadly — JSON-LD, Microdata, RDFa — dan menyediakan sebuah Schema Markup Validator, dan ini lists JobPosting among didukung jenis untuk careers-halaman dan job-board markup. tetapi Bing melakukan not publish sebuah JobPosting-spesifik eligibility spec anywhere near sebagai detailed sebagai Google’s, dan -nya job-search surface memiliki far lower documented rigor. honest summary: Bing menggunakan yang sama schema.org vocabulary dan yang sama single-job-per-halaman principle, dengan much lighter validation dan much thinner documentation. Don’t assume Bing/Google parity here — mark up untuk Google’s stricter spec dan Bing adalah covered oleh default.

I couldn’t confirm sebuah live, canonical Bing Webmaster alat help URL specifically titled untuk JobPosting selama my research pass. alih-alih guess sebuah URL, I’m stating gap plainly: Bing’s job-listing documentation adalah genuinely thin. Re-verify saat ini Bing help halaman sebelum menambahkan sebuah direct tautan.

Where ini sits

JobPosting adalah one jenis di broader data terstruktur hub ini artikel lives di bawah, alongside commerce-focused Product schema dan ProductGroup schema markup dan wider Commerce schema family. jika Anda’re implementing di seluruh sebuah situs, treat them yang sama cara: gunakan jenis itu maps untuk sebuah confirmed search fitur, pertahankan JSON-LD di parity dengan terlihat halaman konten, dan validate sebelum Anda ship.

Add an expert note

Pin an expert quote

New person? Create their unclaimed profile at /admin/experts/ → Pin a quote first.