Structured Data Templates for Listing Learnerships and Apprenticeships on Your South African Site

Structured data helps recruitment and training listings stand out in search results, improves click-through rates, and gives jobseekers immediate answers (stipend, duration, qualification). This guide shows practical, SEO‑optimised JSON‑LD templates and best practices for listing learnerships, apprenticeships and internships on South African sites (addressCountry = "ZA", currency = "ZAR").

Why structured data matters for South African learn-and-earn listings

  • Better visibility: Eligibility, stipend and location can appear in rich results and result snippets.
  • Higher click-through rate: Clear, structured summaries reduce friction for candidates.
  • Improved matching: Search engines and aggregators better understand programme type, duration and awarded qualifications.
  • Local relevance: Use South Africa conventions (ZAR, province, SETA references) so listings match local search intent.

Which schema types to use (quick comparison)

Schema type Best for Key properties to include Google / SERP friendliness
JobPosting Learnerships & Apprenticeships posted as vacancies title, description, datePosted, validThrough, employmentType, workHours, baseSalary (stipend), jobLocation, hiringOrganization High — widely supported
InternshipPosting Internships and short-term workplace experience same as JobPosting but labelled as internship, employmentType = "Internship" Good for internship-specific results
Course Training programmes, qualifications & learnership outcomes name, description, provider, educationalCredentialAwarded, hasCourseInstance Good to describe the qualification aspect
ItemList Index pages (lists of many learnerships) itemListElement with URL pointers to each listing Useful for crawlers and site navigation

JSON‑LD templates: copy, edit, paste

Important: include only fields that match the page content. Keep one primary JSON‑LD object per canonical page (or multiple objects if the page legitimately contains multiple distinct offers).

1) Learnership (JobPosting) — sample JSON‑LD

{
  "@context": "https://schema.org",
  "@type": "JobPosting",
  "title": "Electrical Engineering Learnership — 24 months",
  "description": "A SETA-accredited Electrical Engineering learnership combining on-the-job training with an NQF qualification. Applicants must have a Grade 12 with Mathematics and Physical Science.",
  "identifier": {
    "@type": "PropertyValue",
    "name": "Mzwanele Engineering",
    "value": "LEARN-EE-2026-001"
  },
  "datePosted": "2026-01-15",
  "validThrough": "2026-03-31T23:59:00+02:00",
  "employmentType": "Apprenticeship / Learnership",
  "workHours": "40:00",
  "jobLocation": {
    "@type": "Place",
    "address": {
      "@type": "PostalAddress",
      "streetAddress": "45 Strand Street",
      "addressLocality": "Cape Town",
      "addressRegion": "Western Cape",
      "postalCode": "8001",
      "addressCountry": "ZA"
    }
  },
  "hiringOrganization": {
    "@type": "Organization",
    "name": "Mzwanele Engineering (Pty) Ltd",
    "sameAs": "https://postings.co.za/employer/mzwanele-engineering/"
  },
  "baseSalary": {
    "@type": "MonetaryAmount",
    "currency": "ZAR",
    "value": {
      "@type": "QuantitativeValue",
      "value": 4500,
      "unitText": "MONTH"
    }
  },
  "educationRequirements": "Grade 12 with Mathematics and Physical Science or equivalent",
  "jobBenefits": "Transport allowance; Structured workplace learning; SETA credits"
}

Notes:

  • Use datePosted and validThrough to set expiry for search engines.
  • baseSalary is appropriate for stipends — use monthly amounts in ZAR.

2) Apprenticeship (JobPosting) — sample JSON‑LD

{
  "@context": "https://schema.org",
  "@type": "JobPosting",
  "title": "Artisan Welding Apprenticeship — 36 months",
  "description": "An employer-funded apprenticeship for aspiring welders, includes workplace mentorship, trade test preparation and an accredited qualification.",
  "identifier": {"@type": "PropertyValue","name":"Sisonke Metalworks","value":"APP-WELD-2026-07"},
  "datePosted":"2026-01-10",
  "validThrough":"2026-04-15T23:59:00+02:00",
  "employmentType":"Apprenticeship",
  "jobLocation": {
    "@type":"Place",
    "address": {"@type":"PostalAddress","addressLocality":"Pietermaritzburg","addressRegion":"KwaZulu-Natal","addressCountry":"ZA"}
  },
  "hiringOrganization":{"@type":"Organization","name":"Sisonke Metalworks"},
  "baseSalary":{"@type":"MonetaryAmount","currency":"ZAR","value":{"@type":"QuantitativeValue","value":5200,"unitText":"MONTH"}},
  "skills":"Welding, blueprint reading, safety compliance",
  "educationRequirements":"Matric or NQF Level 2 certificate preferred"
}

3) Internship (InternshipPosting) — sample JSON‑LD

{
  "@context":"https://schema.org",
  "@type":"InternshipPosting",
  "title":"Finance Intern — 12 months",
  "description":"Paid 12‑month internship in financial reporting and analysis for recent graduates.",
  "datePosted":"2026-01-05",
  "validThrough":"2026-02-28T23:59:00+02:00",
  "employmentType":"Internship",
  "hiringOrganization":{"@type":"Organization","name":"Cape & Co. Financial Services"},
  "jobLocation":{"@type":"Place","address":{"@type":"PostalAddress","addressLocality":"Cape Town","addressCountry":"ZA"}},
  "baseSalary":{"@type":"MonetaryAmount","currency":"ZAR","value":{"@type":"QuantitativeValue","value":7000,"unitText":"MONTH"}},
  "workHours":"40:00",
  "educationRequirements":"Bachelor's degree in Finance or Accounting"
}

4) Course schema for the qualification awarded by a learnership

{
  "@context":"https://schema.org",
  "@type":"Course",
  "name":"NQF Level 4 Electrical Engineering Learnership",
  "description":"A 24-month SETA-accredited learnership combining practical workplace experience with classroom modules.",
  "provider":{"@type":"Organization","name":"Mzwanele Engineering (Pty) Ltd"},
  "educationalCredentialAwarded":"NQF Level 4 Certificate in Electrical Engineering"
}

5) ItemList — index page listing multiple learnerships

{
  "@context":"https://schema.org",
  "@type":"ItemList",
  "itemListElement": [
    {"@type":"ListItem","position":1,"url":"https://postings.co.za/learnerships/mzwanele-electrical-2026/"},
    {"@type":"ListItem","position":2,"url":"https://postings.co.za/apprenticeships/sisonke-welding-2026/"}
  ]
}

Best practices & implementation checklist

  • One canonical offer per page: If the page describes a single learnership/apprenticeship, include one JobPosting/InternshipPosting object. Use ItemList for directory pages.
  • Match page content: JSON‑LD must reflect visible page content (title, stipend, dates).
  • Language & locale: Use English (or Afrikaans/isiZulu as appropriate) and ensure date formats are ISO 8601 in JSON-LD.
  • Country and currency: Always set addressCountry: "ZA" and currency: "ZAR" for South Africa.
  • Qualification fields: Add educationalCredentialAwarded on Course or in description for SETA credits.
  • Expiry & freshness: Keep validThrough accurate; expired postings should be removed or archived.
  • Stipend vs salary: Use baseSalary to show stipends; indicate unitText as "MONTH" or "WEEK".
  • Testing: Validate markup with Google’s Rich Results Test and submit pages via Google Search Console. Monitor coverage and errors.

Common pitfalls to avoid

  • Publishing markup with future dates that don’t match the page — can lead to removal from rich results.
  • Using incorrect country codes or currency — e.g., "ZA" is required for South Africa.
  • Hiding key eligibility or stipend details in JSON‑LD that aren’t on the page (mismatch leads to manual actions).
  • Overloading a single page with dozens of JobPosting objects — prefer separate canonical pages or ItemList with links.

SEO & UX tips specific to South African audiences

  • Include province and city (e.g., Western Cape, Gauteng) in jobLocation to capture local search queries.
  • Mention SETA name and unit standard codes in the description to help learners and crawlers identify accredited offers.
  • Show duration (months) and stipend clearly—these are high intent signals for candidates.
  • Use structured breadcrumbs and canonical tags for duplicate listing syndication.

Quick implementation checklist (copyable)

  • Add JSON‑LD in page or immediately before
  • Use ISO dates (YYYY‑MM‑DD / ISO 8601)
  • Set addressCountry: "ZA" and currency: "ZAR"
  • Match visible page title, stipend, dates and requirements
  • Test with Rich Results Test and schedule Search Console checks
  • Use ItemList for index pages; individual JobPosting pages for each offer

Related resources (internal links)

Implementing clear, accurate structured data for learnerships and apprenticeships will help South African candidates find the right earn‑while‑you‑learn opportunities and increase visibility in search. If you want, I can:

  • Generate JSON‑LD for your current listings (paste one URL and visible fields), or
  • Audit a sample page and return a corrected JSON‑LD snippet ready to deploy.