Course Schema

No Comments
Course schema

Element Code: RI-017

TL;DR: Course pages without Course structured data give search engines nothing structured to work with and miss the course list carousel. Google retired the detailed course info rich result in 2025, but the course list format is alive and wants an ItemList of at least three courses, each with a name and description. Mark up real instructional courses only.
Element code
RI-017
Category
Structured data
Rich result
Course list carousel
Applies to
Educational course pages
Fix effort
Medium

What this check actually flags

This check fires when pages that clearly sell or deliver courses, a training catalog, a bootcamp landing page, an academy section, carry no Course structured data. The page tells humans "this is a course you can take" while telling machines nothing at all. For education queries, where the results are stuffed with Coursera, Udemy, edX and every university on earth, giving Google zero structured signal about your courses is leaving one of the few free differentiators on the table.

The 2025 plot twist you need to know about

Course markup has a messy recent history, and half the advice online is now stale. In November 2023 Google launched a detailed "course info" rich result on the Search Central blog, built on Course plus CourseInstance with pricing, workload and delivery mode. Then in 2025 Google deprecated that course info rich result and pulled it from Search Console reporting and the Rich Results Test, per the Search Central documentation changelog. It lasted about a year and a half. Welcome to building on someone else's platform.

What survived is the older course list format: a carousel sourced from an ItemList of Course entries. That is where the visible reward sits today. Course and CourseInstance remain perfectly valid schema.org vocabulary, and keeping accurate markup on detail pages costs nothing and stays readable by anything that parses structured data, but do not promise your boss a Google rich result from a single course page in 2026, because that unit no longer exists.

Course markup depends on the page type What kind of page is it? Catalog listing several courses category page, academy home Single course detail page one course, one URL ItemList of 3+ Course entries eligible for the course list carousel Course + CourseInstance markup valid vocabulary, no Google rich result since 2025 The carousel is the only course rich result Google still shows

What the course list format requires

The mechanics are simple and the details are where implementations fail. You wrap your courses in an ItemList, give every ListItem a position and a URL, and describe each course with the Course type. Google's documentation calls for at least three courses, which can live on one all-in-one page or point out to separate detail pages. Course names must be clean: no prices, no "50% off", no promotional copy welded onto the title. I have watched a carousel fail review for exactly that.

PropertyLevelStatusNotes
itemListElementItemListRequiredThe array of ListItem entries, at least three of them
positionListItemRequired1, 2, 3 and so on, matching on-page order
urlListItemRequiredCanonical URL of the course page
nameCourseRequiredThe course title, free of promo text and pricing
descriptionCourseRequiredA short plain-language summary of what the course teaches
providerCourseRecommendedOrganization offering the course; cheap credibility, always include it

Why it matters for an education site

Education SERPs are aggregator territory. The carousel is one of the few placements where a smaller academy can sit in the same visual unit as the giants, because it is assembled from markup, not from domain authority alone. Beyond the carousel, clean Course entities help anything that consumes structured data understand your catalog, which increasingly includes AI systems summarizing "best courses for X" style queries.

There is also a compliance angle. Google's guidelines are blunt: the markup is for actual instructional courses. A blog post titled "Crash course in sourdough" is not a Course, and marking up non-courses to chase the carousel is the sort of thing that earns a spammy structured markup manual action, which then takes every rich result on the domain down with it. Not worth it.

How to detect the gap

  1. Rich Results Test: run your catalog page through it and check whether course items are detected at all, and whether required fields error out.
  2. Search Console: if course markup exists sitewide you will see it under Enhancements; a report that exists but shows invalid items means a template bug, while no report at all usually means no markup.
  3. Screaming Frog: crawl with JSON-LD extraction and Google validation enabled, then filter the Structured Data tab to your course URL pattern. Ten seconds to see which templates output Course and which output nothing.
  4. View source: search for application/ld+json on one catalog page and one detail page. LMS plugins claim course schema support and then emit a bare WebPage more often than you would think.

How to fix it, step by step

  1. Pick the page that lists at least three courses. That is your carousel candidate; a page with two courses does not qualify.
  2. Build the ItemList with a ListItem per course, positions matching the visible order, URLs pointing at the canonical detail pages.
  3. Populate name and description for each Course from your CMS fields, and add the provider Organization.
  4. Keep or add Course and CourseInstance markup on detail pages if the data is accurate: delivery mode, workload, pricing. No Google rich result, but no harm and some machine-readability upside.
  5. Validate in the Rich Results Test, deploy, request indexing, and watch Search Console.
{
  "@context": "https://schema.org",
  "@type": "ItemList",
  "itemListElement": [
    {"@type": "ListItem", "position": 1, "item": {
      "@type": "Course",
      "url": "https://example.com/courses/technical-seo",
      "name": "Technical SEO Fundamentals",
      "description": "Crawling, rendering and indexing explained with hands-on labs.",
      "provider": {"@type": "Organization", "name": "Example Academy"}}},
    {"@type": "ListItem", "position": 2, "item": {
      "@type": "Course",
      "url": "https://example.com/courses/log-analysis",
      "name": "Log File Analysis for SEO",
      "description": "Read server logs to see what crawlers actually do on your site.",
      "provider": {"@type": "Organization", "name": "Example Academy"}}},
    {"@type": "ListItem", "position": 3, "item": {
      "@type": "Course",
      "url": "https://example.com/courses/structured-data",
      "name": "Structured Data in Practice",
      "description": "Ship valid schema markup that earns rich results.",
      "provider": {"@type": "Organization", "name": "Example Academy"}}}
  ]
}

What good looks like

Catalog pages emit a valid ItemList that mirrors the visible course grid exactly, detail pages carry accurate Course entities, Search Console shows zero invalid items, and the markup updates automatically when courses are added or retired. The carousel itself remains at Google's discretion, like every rich result, but valid markup on real courses is the entire entry fee.

DO

  • Reserve Course markup for genuine instructional courses
  • Mark up at least three courses in one ItemList for the carousel
  • Keep course names clean: no prices, no promo text
  • Generate the markup from CMS data so it stays in sync
  • Include the provider Organization on every course
DON'T

  • Don't mark up blog posts, webinars or how-to guides as courses
  • Don't stuff "limited offer" or pricing into course names
  • Don't let markup drift from what the page actually shows
  • Don't build a strategy around the retired course info rich result
  • Don't fabricate ratings inside course markup to force stars

FAQ

Is my tutorial series or webinar a course?
Almost certainly not, in Google's eyes. The guidelines want structured instructional content: a curriculum, a provider, something a student enrolls in. A recorded webinar or an article series should use other types, like VideoObject or Article. Stretching the definition risks a manual action rather than a carousel.
Did Google kill course schema in 2025?
It killed one rich result, not the vocabulary. The detailed course info result from 2023 was deprecated in 2025 and removed from Search Console and the Rich Results Test. The course list carousel, based on ItemList plus Course, is still documented and still shows. Course markup on detail pages remains valid schema.org, just without a dedicated Google display.
I only have two courses. Can I still get the carousel?
No. The format calls for at least three. With fewer, still mark up the individual course pages accurately and revisit the ItemList when your catalog grows. Do not pad the list with non-courses to hit the number.
Can courses get star ratings in search?
Course is on the supported list for review snippets, so genuine student ratings marked up as AggregateRating on a course page can earn stars. The usual review rules apply: real ratings collected on your site, matching what the page displays.
Should I rip out my CourseInstance markup now?
No need. If the delivery mode, schedule and pricing are accurate, leave it. It costs nothing, remains valid vocabulary, and structured catalog data is exactly the kind of thing non-Google consumers of your pages can still use.

Not sure which rich results your site should be chasing?

Half of schema advice online references features that no longer exist. My advanced SEO audit maps your templates against what Google actually rewards right now, and hands you the implementation order.

Get the Advanced SEO Audit

Claude Vincent is a technical SEO consultant focused on crawlability, rendering, and AI-search visibility. He writes the field guides and case studies at SEO ProCheck, with a bias toward the durable, unglamorous work that decides whether search engines and AI answer engines can actually read and cite a site.

About SEO ProCheck

Technical SEO consulting and GEO strategy with 20 years of enterprise experience. Case studies, resources, and tools for search and AI visibility.

Work With Me

Technical SEO audits, GEO strategy, site migrations, and international SEO. Hourly consulting for teams who need hands-on support, not just reports.

Subscribe to our newsletter!

More from our blog