Panduan JobPosting Schema

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

Pertama kali diterbitkan: 27 Jun 2026 · Terakhir diperbarui: 3 Agu 2026 · Lanjutan
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 di mana click-melalui dan filtering nilai lives. konten-schema parity adalah non-negotiable: semuanya di JSON-LD harus menjadi terlihat pada halaman. paling umum disapproval penyebab adalah putting markup pada sebuah listing halaman alih-alih satu job per halaman. Expired-job hygiene adalah sebuah ongoing obligation, tidak sebuah satu-time setup — leave dead jobs langsung dan Anda risk sebuah manual tindakan. dan Google's pengindeksan API adalah scoped untuk JobPosting dan BroadcastEvent hanya; misusing ini sebagai sebuah umum 'indeks lebih cepat' button dapat cost Anda access. Bing mendukung yang sama vocabulary tetapi documents ini far lebih 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 peran. recommended set (validThrough, employmentType, baseSalary, identifier, directApply) adalah di mana CTR dan filtering nilai lives. Dua hard aturan: satu 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 langsung risks sebuah manual tindakan. Google’s pengindeksan API adalah scoped untuk JobPosting dan BroadcastEvent hanya dan adalah now approval-gated — jangan treat ini sebagai sebuah umum “index lebih cepat” (terjemahan) “indeks lebih cepat” button. Bing mendukung yang sama vocabulary tetapi documents ini far lebih thinly; lean Google.

Bukti untuk klaim ini Google documents jobLocationType TELECOMMUTE and applicantLocationRequirements for fully remote jobs. Cakupan: Google Search JobPosting remote-job requirements; hybrid roles should not be marked as fully remote. Tingkat keyakinan: tinggi · Diverifikasi: 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 penelusuran fitur. JobPosting clears itu bar cleanly — ini adalah gate untuk Google untuk Jobs, sebuah genuine SERP surface — so ini adalah worth melakukan, dan worth melakukan precisely. precision adalah seluruh game di sini, karena job listings adalah satu dari lebih heavily policed structured-data jenis Google berjalan.

five diperlukan properties

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

  • title — “Itu title dari itu job (tidak itu title dari itu posting). Misalnya, ‘Software Engineer’ atau ‘Barista’.” (terjemahan) “ judul dari job (tidak judul dari posting). misalnya, ‘Software Engineer’ atau ‘Barista’.” (jump untuk quote) ini trips orang up constantly — nilai adalah role, tidak Anda halaman’s <h1> atau SEO judul.
  • description — penuh HTML job deskripsi. ini harus tidak hanya repeat judul; Google ingin nyata, menyelesaikan deskripsi.
  • datePosted — original date employer posted job, di ISO 8601 (e.g., 2017-01-24).
  • hiringOrganization — “Itu organization offering itu job position. Ini harus menjadi itu name dari itu company (misalnya, ‘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, tidak board.
  • jobLocation — physical worksite di mana employee akan report, tidak place job adalah posted. Tidak 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 muncul dari diperlukan five, tetapi CTR dan filtering nilai muncul hampir entirely dari recommended set — ini adalah fields Google untuk Jobs lets searchers filter pada:

  • validThrough — date posting expires, di ISO 8601. ada 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, tidak sebuah harmless default.
  • employmentType — FULL_TIME, PART_TIME, CONTRACTOR, TEMPORARY, INTERN, VOLUNTEER, PER_DIEM, atau OTHER (sebuah array adalah diizinkan).
  • baseSalary (sebuah MonetaryAmount) — sebenarnya base salary disediakan oleh employer, tidak 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 tidak opsional dalam praktik.
  • identifier (sebuah PropertyValue) — employer’s unique job/req ID; penting untuk de-duplication, terutama pada aggregators.
  • directApply — indicates apakah posting’s URL lets seseorang apply secara langsung pada itu situs alih-alih mengalihkan 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 karena ini adalah masih developing bagaimana ini menggunakan informasi, Anda mungkin tidak see apa pun appearance atau effect di Google Search right away.

beta-property framing di atas adalah paraphrased dari Google’s launch statement sebagai relayed di mesin pencari Journal’s March 2021 coverage; ini tidak quoted verbatim di sini karena I sourced ini secondhand. Konfirmasi tepat wording terhadap langsung docs sebelum treating ini sebagai sebuah direct quote.

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

Remote dan hybrid jobs: TELECOMMUTE selesai 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 yang employee dapat atau harus berfungsi remotely 100% dari time. Google memerlukan setiap TELECOMMUTE posting untuk specify setidaknya satu eligible country — melalui applicantLocationRequirements (Google’s preferred metode) atau, failing itu, sebuah default taken dari jobLocation. ada Tidak valid scenario di mana sebuah remote job carries zero location informasi: “unrestricted” (terjemahan) “unrestricted” dalam praktik berarti listing setiap country Anda’ll accept applicants dari, tidak omitting field. pada-halaman deskripsi harus dengan jelas say role adalah fully remote too — konten-schema parity applies di sini sebagai banyak sebagai anywhere.

Bukti untuk klaim ini Google documents jobLocationType TELECOMMUTE and applicantLocationRequirements for fully remote jobs. Cakupan: Google Search JobPosting remote-job requirements; hybrid roles should not be marked as fully remote. Tingkat keyakinan: tinggi · Diverifikasi: Google: JobPosting structured data
{
  "@type": "JobPosting",
  "jobLocationType": "TELECOMMUTE",
  "applicantLocationRequirements": {
    "@type": "Country",
    "name": "USA"
  }
}

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

Hybrid. sebuah hybrid role adalah tidak fully remote. Memberikan 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 ketika remote option adalah itself geography-restricted). mistake untuk hindari: marking sebuah occasional-berfungsi-dari-home role sebagai TELECOMMUTE. itu’s sebuah konten mismatch menunggu untuk happen — TELECOMMUTE adalah untuk 100%-remote berfungsi, dan halaman memiliki untuk back itu up. Ketika di doubt, Decision Trees tab memiliki sebuah “seharusnya ini gunakan TELECOMMUTE?” (terjemahan) “seharusnya ini gunakan TELECOMMUTE?” walkthrough.

Bukti untuk klaim ini Google documents jobLocationType TELECOMMUTE and applicantLocationRequirements for fully remote jobs. Cakupan: Google Search JobPosting remote-job requirements; hybrid roles should not be marked as fully remote. Tingkat keyakinan: tinggi · Diverifikasi: Google: JobPosting structured data

Google untuk Jobs eligibility dan regional availability

Satu surprise untuk international tim: Google untuk Jobs tidak global. ini adalah langsung di 50+ countries di seluruh North America, Latin America, Europe, Middle East dan North Africa, Sub-Saharan Africa, dan Asia — tetapi tidak di mana-mana. jika Anda listings adalah technically perfect dan masih tidak menunjukkan, periksa bahwa experience adalah tersedia di Anda target country sebelum Anda spend sebuah day debugging Anda JSON-LD.

konten policies itu mendapatkan 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 karena Search Console akan cite them. dari Google’s documentation:

  • Single-job halaman hanya. “Itu JobPosting markup harus hanya menjadi digunakan pada halaman itu 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 — Tidak markup pada listing/penelusuran-hasil halaman.
  • Irrelevant konten — posting’s konten harus menjadi relevant untuk job.
  • Incomplete konten — Google tidak izinkan job postings dengan incomplete job deskripsi.
  • Misrepresentation — Tidak fake jobs, keyword stuffing, salah location data, impersonation, atau posting seseorang else’s listing tanpa authorization.
  • Profanity — Tidak obscene, profane, atau offensive language.
  • Disguised ads / promotional konten — Tidak affiliate-program listings atau lainnya promotional konten dressed up sebagai sebuah job.
  • Expired postings — Google tidak izinkan expired job postings. “Ideally Anda seharusnya remove expired job postings dari Anda website.” (terjemahan) “Ideally Anda seharusnya hapus expired job postings dari Anda situs web.” (jump untuk quote)
  • Jobs tanpa 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 sebenarnya openings, tidak solicitations dari orang seeking berfungsi.
  • Payment diperlukan — tidak pernah memerlukan sebuah applicant untuk pay.
  • Editorial konten — proper grammar dan capitalization; Tidak 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.

Menangani expiration dan removal correctly

ini adalah bagian tim di bawah-bangun. Expired-job hygiene adalah sebuah ongoing obligation, tidak sebuah satu-time setup task — Anda perlu sebuah proses (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 langsung violates konten policies, dan Google says respons dapat sertakan manual tindakan itu menghapus job posting(s) dari job penelusuran experience pada Google — itu’s scoped untuk Anda job listings’ eligibility untuk Jobs fitur, tidak sebuah automatic penalty terhadap rest dari Anda situs’s organic rankings. Bukti untuk klaim ini Google requires expired job postings to be removed or marked with a past validThrough value and no longer exposed as active jobs. Cakupan: Google Search JobPosting expiration policy; stale postings can trigger manual actions. Tingkat keyakinan: tinggi · Diverifikasi: Google: JobPosting structured data Setting sebuah future validThrough pada sebuah job itu’s sebenarnya filled melakukan tidak pertahankan ini “safe” (terjemahan) “safe” — halaman harus reflect reality.

untuk lebih cepat removal dan memperbarui pada job URLs secara khusus, Google recommends -nya pengindeksan API di atas menunggu untuk sebuah wajar re-crawl atau sebuah sitemap ping — see berikutnya bagian untuk cakupan 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 mengatakan itu memiliki yang sama job posted pada berbeda situs web adalah very umum dan yang diharapkan, 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 di atas adalah paraphrased dari sebuah February 2022 Google Hangout sebagai recapped oleh iloveseo.com; I’m summarizing alih-alih quoting karena I sourced ini melalui itu sekunder recap. Apa masih applies regardless: hiringOrganization harus menjadi nyata employer, dan Tidak misrepresentation.

pengindeksan API adalah scoped — dan now gated

Google’s pengindeksan API adalah tidak sebuah umum “mendapatkan indexed lebih cepat” (terjemahan) “mendapatkan terindeks lebih cepat” 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 satu dari hanya dua legitimate gunakan cases. Submitting sebuah URL adalah sebuah notification, tidak sebuah jaminan: ini tidak jaminan itu Google akan crawl, indeks, sertakan, peringkat, atau display halaman pada apa pun particular timeline.

Dua hal memiliki changed landscape di sini:

  1. Access adalah now approval-gated. default per-day quota adalah modest, dan getting bermakna volume now memerlukan filling out sebuah Google approval form alih-alih menjadi auto-enabled. Cite Google’s own Requesting Approval dan Quota halaman sebagai utama sumber 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 terdokumentasi, didukung gunakan cases. Karena JobPosting adalah satu dari hanya dua dari itu, ini penting secara langsung: abuse API untuk non-job konten dan Anda risk losing access untuk sebuah channel Anda job listings sebenarnya bergantung 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, tidak Google-confirmed line oleh line — utama, citable fact adalah Google’s own quota-pricing/approval halaman. rep warnings tentang API misuse adalah surfaced melalui sekunder aggregation, so I’ve paraphrased alih-alih quoted them; verify tepat wording dan platform terhadap utama sumber sebelum quoting secara langsung.

Troubleshooting di Search Console

Ketika sebuah listing tidak tampilkan, berfungsi ini di order — Playbooks tab lays ini out sebagai sebuah linear runbook, tetapi pendek versi:

  • Validate markup dengan Rich hasil Test dan konfirmasi semua five diperlukan properties parse tanpa error.
  • Konfirmasi satu 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 langsung markup mendapatkan disapproved.
  • Konfirmasi regional availability — Google untuk Jobs tidak tersedia di mana-mana.
  • periksa Search Console’s rich-hasil report untuk spesifik disapproval alasan dan perbaiki terhadap itu named policy.
Caveat, per my sumber research: di sana memiliki telah reports dari sebuah 2026 Penelusuran Console job-listing reporting issue affecting bagaimana job rich hasil surface di report. I haven’t telah able untuk konfirmasi itu terhadap sebuah utama Google sumber, 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 konfirmasi 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 tidak publish sebuah JobPosting-spesifik eligibility spec anywhere near sebagai detailed sebagai Google’s, dan -nya job-penelusuran surface memiliki far lebih rendah terdokumentasi rigor. honest summary: Bing menggunakan yang sama schema.org vocabulary dan yang sama single-job-per-halaman principle, dengan banyak lebih ringan validation dan banyak thinner documentation. jangan assume Bing/Google parity di sini — mark up untuk Google’s stricter spec dan Bing adalah covered oleh default.

I tidak dapat konfirmasi sebuah langsung, canonical Bing Webmaster alat help URL secara khusus titled untuk JobPosting selama my research lulus. alih-alih guess sebuah URL, I’m stating kesenjangan plainly: Bing’s job-listing documentation adalah genuinely thin. Re-verify saat ini Bing help halaman sebelum menambahkan sebuah direct tautan.

Di mana ini sits

JobPosting adalah satu jenis di lebih luas 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 penelusuran fitur, pertahankan JSON-LD di parity dengan terlihat halaman konten, dan validate sebelum Anda ship.

Tambahkan catatan pakar

Sematkan kutipan pakar

Orang baru? Buat profilnya yang belum diklaim di /admin/experts/ → Sematkan kutipan pakar terlebih dahulu.