Course Schema

How to implement schema.org/Course markup for Google's "Course list" carousel — the at-least-three-courses rule that trips most people up, the difference between Course and CourseInstance, what happened to the deprecated single-course "Course Info" feature, and why the carousel is English-gated rather than US-only.

First published: Jul 1, 2026 · Last updated: Jul 17, 2026 · Advanced
demand #18 in Structured Data#44 in On-Page#212 in Technical SEO#290 on the site
1 evidence signal on this page

Course schema (schema.org/Course) marks up educational courses so a listing page can qualify for Google's 'Course list' carousel. The rule almost everyone misses: the carousel requires at least three courses marked up together — a single Course is still valid schema.org markup, but it doesn't qualify for the carousel, and there is no single-course rich card. Google's own required/recommended property table lists name and description as required and provider as recommended, but its technical guideline separately says every course needs a valid provider too — treat provider as effectively required until Google reconciles the two. Most older guides describe a richer single-course 'Course Info' feature (price, dates, instructor) — Google deprecated that in June 2025 and its documentation now redirects to a changelog confirming removal, so any guide built around it is describing a dead feature. The carousel is available in English wherever Google Search operates, which is a language restriction, not the 'US-only' geographic one you'll see repeated elsewhere. Course is the general class; CourseInstance is a separate nested type for a specific offering (mode, start date). Valid markup only makes you eligible — Google still decides whether to show the carousel.

TL;DR — schema.orgSchema markup is code that uses the schema.org vocabulary to label what your content means so search engines can understand it and show rich results. It's most often written in JSON-LD, and it's not a direct ranking factor./Course markup (usually JSON-LDJSON-LD (JavaScript Object Notation for Linked Data) is a script-based structured data format, typically paired with the schema.org vocabulary to describe page content for search engines and AI systems. Google recommends it over Microdata and RDFa because it's the easiest format to implement and maintain at scale — but all three work, and structured data isn't a ranking signal.) can make an education listing page eligible for Google’s “Course list” carousel — an ItemList of Course items. The rule that dominates everything else: the carousel requires at least three courses marked up together — a single Course is still valid schema.org vocabulary, it just doesn’t clear that bar, and there is no single-course rich card. The richer single-course “Course Info” feature (price/dates/instructor) was announced deprecated June 12, 2025, phased out in Google’s September 8, 2025 update, and had its documentation removed September 9, 2025 — Course list remains separately, currently documented, so any guide built around Course Info is describing a dead feature. Required per course is name + description by Google’s property table; provider is listed as recommended there but called out as required in Google’s technical guideline — a real tension in Google’s own docs, so add it. Course is the general class; CourseInstance is a separate nested type for a specific offering (mode, start date) — but the live rich result is Course-list-level, so don’t over-invest in instance detail. The carousel is available in English wherever Google Search operates — a language restriction, not the “US-only” geographic one you’ll see repeated elsewhere. Valid markup only earns eligibility; Google still decides whether to show it.

Evidence for this claim Schema.org Course describes an educational course and remains valid vocabulary independent of Google feature support. Scope: Schema.org Course vocabulary. Confidence: high · Verified: Schema.org: Course Evidence for this claim Google's documented course enhancement is the Course list feature, with at least three courses and ItemList or summary-page markup; eligibility does not guarantee display. Scope: Current Google Course list structured-data requirements, distinct from the retired course-info experience. Confidence: high · Verified: Google Search Central: Course list structured data

Most guides you’ll find describe Course schemaCourse schema (schema.org/Course) marks up educational courses for Google's 'Course list' carousel — which requires at least three courses marked up together, not a single-course card. A richer single-course 'Course Info' feature existed but was deprecated in June 2025. as if it produces a detail card for a single course. It doesn’t — not anymore. Google’s one live Course feature is the “Course list” carousel: an ItemList whose items are Course objects, shown together as a scrollable row of courses above the standard results. It displays course names, providers, and descriptions.

The implication is structural, not cosmetic: you cannot earn this result one course at a time. The unit of eligibility is a list of at least three courses, marked up together on the same page. Google’s own wording is blunt: “You must mark up at least three courses.” Mark up one or two and you’re not eligible for the carousel — there is no fallback single-course card to catch you. To be precise about scope: a single Course is still perfectly valid schema.org markup on its own page; it simply doesn’t meet Google’s bar for this specific feature.

The three-course minimum and other eligibility rules

Lead with the count, because it’s the detail everyone misses:

  • At least three courses, marked up together (typically as an ItemList of Course items, or via a CourseListElement pattern).
  • Per course — required (property table): name and description.
  • Per course — recommended (property table), but called required (technical guideline): provider (the organization offering the course). Google’s own docs don’t agree with themselves here — the property table marks it recommended while the separate technical guideline says every course must have a valid provider. Until Google reconciles that, add provider on every course rather than treating it as optional.

A few content constraints Google applies to the carousel are worth internalizing:

  • No promotional language in the fields Google displays — keep descriptions factual. Avoid pricing/discount claims and “best school in the world”-style superlatives in the marked-up text; the carousel is meant to describe courses, not advertise them.
  • Descriptions get truncated. The carousel shows a short description, so front-load the substance. (Treat any specific character count you see quoted online with caution and verify against the current doc rather than hard-coding a number.)

Course vs. CourseInstance

These are two different schema.org types and people routinely blur them:

  • Course is the general class — “Intro to Python,” the course as a concept, independent of when or how it runs. This is what the Course list carousel is built from.
  • CourseInstance is a specific offering of that course — a particular run with a courseMode (online vs. onsite), a startDate, an endDate, maybe an instructor. It nests under a Course via hasCourseInstance.

The practical steer: because the live rich result operates at the Course-list level, don’t over-indexStoring a crawled page in the search index so it can appear in results. Crawled is not the same as indexed — Google selects what to keep, and indexing isn't guaranteed. on CourseInstance detail expecting it to power a richer display. Adding accurate instance data is fine — and good for machine-readability and AI education tools — but it isn’t what unlocks the carousel. The carousel needs three Course items with name + description; the instance detail is supplementary. Some competitor guides claim Course plus CourseInstance together have been mandatory for Google’s Course feature since 2024 — that’s not correct. Google’s current Course and ItemList property tables don’t list CourseInstance as a requirement anywhere; it’s legitimate schema.org depth, not a Course-list eligibility rule.

What changed: the “Course Info” deprecation

Here’s the part that reframes most existing content on this topic. There used to be a second, richer Course feature — “Course Info” — that surfaced a single course’s price, dates, and instructor as a detail treatment. Google’s retirement of it happened in three distinct steps, and it’s worth keeping them separate rather than collapsing them into one vague “deprecated in June 2025”:

  1. June 12, 2025 — Google announced the deprecation, in the same blog post that covered several other structured-data simplifications (Estimated Salary, Learning Video, Special Announcement, Vehicle Listing, and others). Google’s product side framed the removals as features that weren’t commonly used in Search and no longer added enough value to keep — a paraphrase of the reasoning given to the trade press, not a verbatim Google quote.
  2. September 8, 2025 — Google’s own updates log records Course Info as phased out in that day’s update.
  3. September 9, 2025 — Course Info’s documentation was removed; the old docs URL now redirectsA redirect sends browsers and crawlers from a requested URL to a different one. An HTTP redirect specifically is a 3xx status code paired with a Location header; meta refresh and JavaScript redirects achieve a similar navigation without being a 3xx response themselves. Permanent redirects (301/308) are Google's signal the target should be canonical; temporary ones (302/303/307) aren't. to Google’s “Latest documentation updates” changelog, which states that documentation for those types was removed and that they are no longer shown in Google Search results.

I want to be precise about status here, because the same June 2025 announcement batch included features whose fate diverged. In the sibling Book schemaBook schema (schema.org/Book) is structured data describing a book's title, author, ISBN, and format. It can power Google's review-snippet rich result and — for approved feed providers — the registration-gated Book Actions program, and it helps Google disambiguate book entities even without a visible rich result. situation, a “Book Actions” feature was announced as deprecated but was not actually removed — the announcement outran the implementation. Course Info is not that case. Its removal is confirmed through all three steps above, and — importantly — this only affected Course Info. The separate Course list carousel this article covers was never part of that retirement and remains its own, currently documented feature.

The takeaway: any implementation guide built around displaying price/dates/instructor for one course is describing a feature that no longer exists. The only thing Course markup earns you in Google Search today is the three-plus-course carousel.

Implementation basics and common mistakes

  • Mark up the list, not the item. Structure the page as an ItemList (or the documented Course list pattern) containing three or more Course entries. A single Course block in isolation is the number-one non-starter.
  • Fill name + description on every course, and add provider. Missing description on any course weakens the whole list.
  • Don’t build around Course Info. If your CMSA content management system (CMS) is software that lets users create, manage, and publish digital content — like blog posts and pages — without writing raw code. WordPress, Drupal, and Joomla are the most common open-source CMS platforms. template or a plugin still emits price/date/instructor markup expecting the old detail card, that’s dead weight — it won’t produce a rich result.
  • Correct the “US-only” myth in your own head. Google documents the carousel as available “in English in all regions where Google Search is available.” It’s an English-language gate, available worldwide — not a geographic US restriction.
  • Eligibility is not display. As with every rich result, valid markup + an indexed page only makes you eligible; Google’s systems still decide whether to surface the carousel for a given query.

For where Course schema sits in the wider structured-data picture, see the broader Schema MarkupSchema markup is code that uses the schema.org vocabulary to label what your content means so search engines can understand it and show rich results. It's most often written in JSON-LD, and it's not a direct ranking factor. and Structured DataStructured data is a standardized way of labeling page content (using the schema.org vocabulary in JSON-LD, Microdata, or RDFa) so search engines can understand its meaning. It's not a direct ranking factor — its value is rich results and entity understanding. hubs this article nests under, and the other Creative Works types — like Book schemaBook schema (schema.org/Book) is structured data describing a book's title, author, ISBN, and format. It can power Google's review-snippet rich result and — for approved feed providers — the registration-gated Book Actions program, and it helps Google disambiguate book entities even without a visible rich result. — that went through the same June 2025 simplification pass.

Add an expert note

Pin an expert quote

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