XooCode(){

EducationalOccupationalProgram

EducationalOccupationalProgram is an Intangible for structured educational and vocational programmes: degree programmes, certificate programmes, apprenticeships, coding bootcamps, MOOC specialisations. It is the parent of WorkBasedProgram.

It adds 23 direct properties — one of the richest types in schema.org — covering:

  • Application: applicationStartDate, applicationDeadline, maximumEnrollment.
  • Structure: dayOfWeek, timeOfDay, startDate, endDate, termDuration, termsPerYear, timeToComplete, numberOfCredits, typicalCreditsPerTerm.
  • Content: hasCourse, programPrerequisites, programType, educationalProgramMode.
  • Credentials: educationalCredentialAwarded, occupationalCredentialAwarded, occupationalCategory.
  • Financial / outcomes: offers, financialAidEligible, salaryUponCompletion, trainingSalary, provider.

Full example of schema.org/EducationalOccupationalProgram json-ld markup

The markup is verified as valid with Rich Results Test from Google.

Highlight legend:Required by GoogleRecommendedOptional
schema.org/EducationalOccupationalProgram
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "EducationalOccupationalProgram",
  "@id": "https://rim.example/extension/structured-data-eng",
  "name": "Structured Data Engineering Certificate",
  "url": "https://rim.example/extension/structured-data-eng",
  "description": "12-week part-time online certificate programme covering schema.org, JSON-LD, and typed SEO engineering. Capstone project required for certification.",
  "programType": "Certificate",
  "educationalProgramMode": "https://schema.org/OnlineEventAttendanceMode",
  "timeToComplete": "P12W",
  "termDuration": "P4W",
  "termsPerYear": 3,
  "numberOfCredits": { "@type": "QuantitativeValue", "value": 12, "unitText": "credit hours" },
  "dayOfWeek": ["Tuesday", "Thursday"],
  "timeOfDay": "Evening",
  "applicationStartDate": "2026-05-01",
  "applicationDeadline": "2026-06-15",
  "startDate": "2026-07-06",
  "endDate": "2026-09-25",
  "maximumEnrollment": 40,
  "programPrerequisites": "Working familiarity with HTML and one programming language (JavaScript, Python, or Ruby).",
  "educationalCredentialAwarded": { "@type": "EducationalOccupationalCredential", "name": "Certificate in Structured Data Engineering", "credentialCategory": "Certificate" },
  "occupationalCredentialAwarded": { "@type": "EducationalOccupationalCredential", "name": "Xoo Code Certified Schema Engineer" },
  "occupationalCategory": "15-1257.00",
  "hasCourse": [
    { "@type": "Course", "name": "Foundations: Schema.org and JSON-LD" },
    { "@type": "Course", "name": "Applied typed SEO" },
    { "@type": "Course", "name": "Validator design and capstone" }
  ],
  "offers": { "@type": "Offer", "price": 2400.00, "priceCurrency": "USD" },
  "financialAidEligible": "Scholarships available for enrolled students under the RIM Access fund",
  "salaryUponCompletion": { "@type": "MonetaryAmountDistribution", "name": "Typical post-certificate salary (US)", "currency": "USD", "median": 110000 },
  "provider": { "@type": "CollegeOrUniversity", "name": "Royal Institute of Medicine — Extension" }
}
</script>

Why this matters for education sites

Google's Careers and Education surfaces, AI education advisors, and prospective-student tools all read EducationalOccupationalProgram. A well-populated entry puts your programme into structured comparisons against competitor programmes.

Minimal valid version

The smallest markup that still produces a valid EducationalOccupationalProgram entity. Use it as the floor. Reach for the advanced example above when you want search engines and AI agents to understand more about your content.

schema.org/EducationalOccupationalProgram (minimal)
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "EducationalOccupationalProgram",
  "name": "Structured Data Engineering Certificate",
  "programType": "Certificate",
  "timeToComplete": "P12W",
  "provider": { "@type": "CollegeOrUniversity", "name": "Royal Institute of Medicine" }
}
</script>

Google rich results this unlocks

Markup matching this example makes your page eligible for the following Google Search rich results. The primary target drives the required / recommended property classification in the advanced code block above.

Common EducationalOccupationalProgram mistakes

Mistakes that pass validation but silently fail to earn rich results or mislead consumers walking the graph. Avoid these and your markup will be ahead of most sites in the wild.

  1. 01

    timeToComplete as plain number

    Wrong
    "timeToComplete": 12
    Right
    "timeToComplete": "P12W" (ISO 8601 duration)

    Plain numbers are unitless; use ISO 8601 duration syntax.

  2. 02

    Missing educationalCredentialAwarded

    Wrong
    Programme with no credential reference
    Right
    Always populate educationalCredentialAwarded (and occupationalCredentialAwarded if applicable)

    The credential is what makes a programme comparable to others; without it, the programme is just a course list.

  3. 03

    Courses inline with no Course typing

    Wrong
    hasCourse as plain text names
    Right
    Typed Course objects for each course

    Typed courses link to their own rich-result surfaces and into the education graph.

Also mentioned in 2 other examples

EducationalOccupationalProgram also appears in MonetaryAmountDistribution, and WorkBasedProgram. See the full EducationalOccupationalProgram schema page for every reference.

About the example data

The Xoo Code Structured Data Engineering certificate programme at the Royal Institute of Medicine's extension school.

Comments

Loading comments...

Leave a comment