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.
1 evidence signal on this page
- Related live toolSchema Markup Validator
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.
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 dataTL;DR — 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. is code you add to a page that labels your courses for search engines — “this is the course name,” “this is who teaches it,” “this is what it covers.” Adding it correctly can make a listing page eligible for Google’s “Course list” carousel, a row of courses shown above the normal results. The catch almost everyone misses: that carousel needs at least three courses marked up together. A single course is still valid Course markup — it’s just not enough on its own to qualify for the carousel, and there’s no single-course card anymore.
What Course schema is
When you look at a page listing your courses, you can tell the course title from the
provider from the description just by reading. A search engine sees plain text and has
to guess. Course schema spells it out in code, using the shared
schema.org vocabulary — it tags each course with what it
actually is: the name, a description, and the provider (the school or platform
offering it).
It’s almost always written as 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. — a small block of code that sits in the page without changing how the page looks.
The one rule that trips everyone up
Google’s Course rich result today is a carousel of courses, not a card for a single course. To be eligible, you have to mark up three or more courses together on the same listing page. Mark up one course and you get nothing — this is the single most common reason a Course implementation “doesn’t work.”
What you actually need per course
For each course in the list you really only need two things:
- name — the course title.
- description — a short summary of what the course covers.
And one field Google’s own documentation is inconsistent about:
- provider — the school, university, or platform offering the course. Google’s property table lists it as recommended, but a separate technical guideline says every course needs a valid provider. Add it — treat it as required in practice until Google cleans up the contradiction.
That’s genuinely it for the basics. Course schema is far simpler than something like Product schemaProduct schema (schema.org/Product) is structured data that tells search engines a page's product name, price, availability, and reviews so it can appear in Shopping-style rich results. It's separate from a Google Merchant Center feed, though Google reconciles the two. — the hard part isn’t the fields, it’s remembering the three-course minimum.
What most old guides get wrong
If you’ve read an older article promising a rich card showing a single course’s price, dates, and instructor, that was a different, richer feature called “Course Info.” Google removed it in June 2025. So any guide built around showing those details for one course is describing something that no longer exists. Don’t chase it.
Two more beginner traps:
- It’s not “US-only.” The carousel is available in English wherever Google Search operates — that’s a language limit, not a country limit. You’ll see “US-only” repeated online; it’s wrong.
- Valid markup ≠ guaranteed carousel. It makes the page eligible; Google still decides whether to show the carousel.
Want the full version — the Course-vs-CourseInstance distinction, the exact eligibility rules, and the deprecation story in detail? Switch to the Advanced tab.
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 dataTL;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
ItemListofCourseitems. The rule that dominates everything else: the carousel requires at least three courses marked up together — a singleCourseis 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 isname+descriptionby Google’s property table;provideris 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.
What Course schema does today — the Course list carousel
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
ItemListofCourseitems, or via aCourseListElementpattern). - Per course — required (property table):
nameanddescription. - 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, addprovideron 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:
Courseis 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.CourseInstanceis a specific offering of that course — a particular run with acourseMode(online vs. onsite), astartDate, anendDate, maybe an instructor. It nests under aCourseviahasCourseInstance.
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”:
- 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.
- September 8, 2025 — Google’s own updates log records Course Info as phased out in that day’s update.
- 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 moreCourseentries. A singleCourseblock in isolation is the number-one non-starter. - Fill
name+descriptionon every course, and addprovider. Missingdescriptionon 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.
AI summary
A condensed take on the Advanced version:
- What it is:
schema.org/Coursemarkup (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.) that labels educational courses on a listing page so search engines can produce Google’s “Course list” carousel — anItemListofCourseitems. - The one rule that dominates: the carousel requires at least three courses
marked up together — a single
Courseis still valid vocabulary, it just doesn’t clear that bar. There is no single-course rich card. - Per course: Google’s property table lists
name+descriptionas required andprovideras recommended, but its technical guideline separately callsproviderrequired too — a real contradiction in Google’s own docs, so add it on every course. Still far simpler field-wise than Product schemaProduct schema (schema.org/Product) is structured data that tells search engines a page's product name, price, availability, and reviews so it can appear in Shopping-style rich results. It's separate from a Google Merchant Center feed, though Google reconciles the two.. - Course vs. CourseInstance:
Courseis the general class (what the carousel is built from);CourseInstanceis a specific offering (courseMode,startDate), nested viahasCourseInstance. The live result is Course-list-level, so don’t over-invest in instance detail — and despite some competitor claims, Google’s current property tables don’t makeCourseInstancea requirement. - Deprecation (the key correction): a richer single-course “Course Info” feature (price/dates/instructor) went through three dated steps — announced June 12, 2025, phased out September 8, 2025, documentation removed September 9, 2025 — 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 changelog confirming those types are no longer shown. Unlike “Book ActionsBook 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.” (announced-deprecated but not removed), Course Info’s removal is confirmed at every step, and it never touched the separate, still-live Course list feature.
- Not “US-only”: available in English wherever Google Search operates — a language restriction, not a geographic one. Correct the common misstatement.
- Content rules: keep marked-up descriptions factual (no promo/superlatives); descriptions are truncated in display.
- Eligibility ≠ display: valid markup + indexedStoring 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. page only makes you eligible; Google decides whether to show the carousel.
Official documentation
Primary-source documentation from the search engines.
Google — 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.
- Course list (Course) structured data — the authoritative reference: the at-least-three-courses requirement, required/recommended properties, and the English-language availability note.
- Latest documentation updates (changelog) — records the removal of the Course Info (and other) structured-data types; the old Course Info documentation 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. here.
- Simplifying our structured data guidance (June 12, 2025 blog post) — Google’s announcement of the batch of deprecations that included Course Info.
- Rich Results Test — validate the markup and check Course-list eligibility.
Bing / Microsoft
- Marking up your site with structured data — Bing’s general structured-data support (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., 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. recommended).
Quotes from the source
On-the-record statements from Google. Where a source page exposes the text, the link is a deep link that jumps to the quoted passage.
Google docs — the three-course rule
- “You must mark up at least three courses.” Jump to quote
Google docs — availability
- The Course list feature is available “in English in all regions where Google Search is available” — i.e. an English-language gate, not a country restriction. Course list documentation
Google product side — the June 2025 deprecations (paraphrased, via trade coverage)
- Google’s stated rationale for removing Course Info and the other types in the June 2025 batch was, in paraphrase, that they weren’t commonly used in Search and no longer added significant value. This is relayed through Search Engine Land / ppc.land coverage of Google’s announcement rather than re-confirmed verbatim against a primary Google source, so treat it as a paraphrase of the reasoning, not a direct quote. Google’s announcement blog post
Course schema myths and mistakes to avoid
Myth: “A single course qualifies for a Course rich result.”
False. Google’s requirement is explicit — “You must mark up at least three courses.”
The unit of eligibility is a list of three or more Course items marked up
together. One Course block in isolation is still valid 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. markup — it just
doesn’t qualify for the carousel, and there’s no single-course fallback card.
Myth: “provider is optional since Google marks it recommended.”
Not quite. Google’s property table lists provider as recommended, but its separate
technical guideline says every course needs a valid provider. That’s a real
inconsistency in Google’s own documentation — add provider to every course rather
than treating the table’s wording as the final word.
Myth: “Course plus CourseInstance has been mandatory since 2024.”
Not according to Google’s current documentation. CourseInstance is a real,
useful schema.org type for a specific offering, but Google’s Course and ItemList
property tables don’t list it as a Course-list requirement. Add it for accuracy, not
because the carousel needs it.
Myth: “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. gives me a rich card showing price, dates, and instructor.” That was the separate “Course Info” feature. Google announced its deprecation June 12, 2025, recorded it as phased out in the September 8, 2025 update, and removed its documentation September 9, 2025 — the documentation 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 a changelog confirming those types are no longer shown in Search. Building around price/date/instructor display for a single course means building around a dead feature. (The separate Course list carousel this article covers was never part of that retirement.)
Myth: “Course schema is US-only.” False and imprecise. Google documents the carousel as available “in English in all regions where Google Search is available” — an English-language restriction, not a geographic one. It works worldwide, in English.
Myth: “The June 2025 announcement means Course Info might still be around, like Book Actions.” Don’t assume Course Info followed the same path as 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, where an announced deprecation (“Book Actions”) turned out not to have been implemented. Course Info’s removal is independently confirmed — the old docs redirect to Google’s changelog stating those types are no longer shown. It’s genuinely gone.
Mistake: over-investing in CourseInstance expecting a richer display.
CourseInstance (mode, start/end dates) is a legitimate, useful type, but the live
rich result operates at the Course-list level. Accurate instance data helps
machine-readability; it doesn’t unlock a richer Google feature that no longer exists.
Mistake: stuffing promotional language into marked-up descriptions. Keep the fields Google displays factual — no pricing/discount claims, no “best in the world” superlatives. The carousel is meant to describe courses, not advertise them.
Mistake: treating valid markup as a guaranteed carousel. Valid Course markup on an indexedStoring 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. page only makes you eligible. Google’s systems still decide whether to surface the carousel for a given query.
Which Course markup should you use?
Choose the Course implementation
Simplified three-course list
This illustrative 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. keeps the required fields visible and marks up the same three courses shown on the page:
{
"@context": "https://schema.org",
"@graph": [
{ "@type": "Course", "name": "Technical SEO Foundations", "description": "An introduction to crawling, indexing, and site architecture." },
{ "@type": "Course", "name": "JavaScript SEO", "description": "A practical course on rendering, discovery, and framework SEO." },
{ "@type": "Course", "name": "Structured Data", "description": "A course on modeling entities and validating JSON-LD." }
]
} Course and a specific offering
Use CourseInstance only for an actual delivery of the broader course:
{
"@context": "https://schema.org",
"@type": "Course",
"name": "Technical SEO Foundations",
"description": "An introduction to crawling, indexing, and site architecture.",
"hasCourseInstance": {
"@type": "CourseInstance",
"courseMode": "online"
}
} Patrick's relevant free tools
- Rich-Result Eligibility Checker — Paste JSON-LD, an HTML page, or fetch a live URL and compare detected types with the Google rich-result requirements this tool tracks — ✓ requirements met, ✗ a missing required field, ⚠ recommended fields — across Product, Article, Recipe, Video, Event, JobPosting, Breadcrumb, Organization, and more. Analysis runs in your browser; Google alone decides whether a result appears.
Tools for Course markup
- Schema Markup Validator checks 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. vocabulary and nested types.
- Structured Data Generator can create a starting 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. structure; compare every generated value with visible course content before publishing.
- Google’s Rich ResultsRich results (formerly 'rich snippets') are enhanced search listings — stars, images, prices, breadcrumbs, video thumbnails, and more — that Google and Bing build from structured data. They're a display feature, not a ranking factor, and eligibility never guarantees they'll show. Test checks current Google eligibility and reports required or recommended property issues.
- A crawlerA crawler — also called a spider or bot — is an automated program that fetches web pages, extracts their links, and queues new URLs to visit. Search engines use crawlers to discover and download content for their index. with 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. extraction checks that every intended listing page carries three or more visible course entities consistently.
Prove a Course implementation
Three-course eligibility test
Test to run: validate a listing page that visibly contains at least three marked-up courses. Expected result: every Course has the required values and matches the page. Failure interpretation: the list is incomplete, hidden, or modeled with the wrong type. Monitoring window: immediate after deployment. Rollback trigger: markup describes courses users cannot see or creates entity duplicates.
Source-HTML test
Test to run: fetch the page with curl and locate the 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.. Expected result: the same markup is present without waiting for client JavaScript. Failure interpretation: schema injection depends on hydrationTurning HTML, CSS, and JavaScript into the final visual page and DOM. or failed renderingTurning HTML, CSS, and JavaScript into the final visual page and DOM.. Monitoring window: every template release. Rollback trigger: production pages lose or truncate the graph.
CourseInstance relationship test
Test to run: validate pages with a scheduled offering and inspect the graph. Expected result: CourseInstance is nested under the correct Course, with properties matching the visible offering. Failure interpretation: the class and offering have been conflated. Monitoring window: after model or schedule changes. Rollback trigger: stale offering details remain in markup.
Test yourself: Course Schema
Five quick questions on 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, the three-course rule, the Course Info deprecation, and how the carousel is gated. Pick an answer for each, then check.
Resources worth your time
My writing on this topic
I haven’t published a standalone 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. guide of my own — so rather than point you at something that doesn’t exist, the honest move is to send you to the primary sources below and to the related structured-data work on this site. For the broader vocabulary and where Course fits, see the 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; for the AI angle, Schema Markup for AISchema markup (structured data) is machine-readable code — usually JSON-LD — that labels what your content means using the schema.org vocabulary. For AI search it's infrastructure for entity disambiguation, not a direct citation lever: controlled studies found no meaningful uplift in AI citations from adding it..
From around the industry
- Course list (Course) structured data (Google Search Central) — the authoritative reference for the three-course rule and the English-language availability note.
- Simplifying our structured data guidance (Google Search Central Blog) — the June 12, 2025 announcement of the deprecation batch that removed Course Info.
- Search Engine Land / ppc.land coverage of the June 2025 deprecation batch — useful secondary reporting on which structured-data types were removed and Google’s stated rationale (paraphrased above, not primary-verified).
- A cautionary note on stale content: a prior pass of this article cited a competitor schema-types roundup that described Course markup as able to “display key course information” without noting the three-course minimum or the June 2025 Course Info deprecation. That specific page could not be re-verified as live during this update (the URL now returns a 404), so it’s dropped as a named citation — but the underlying pattern holds: verify any Course guide’s publish date against the June 2025 change before trusting it, since most pre-date the change and still describe a dead single-course feature as current.
Course Schema
Course 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.
Related: Schema Markup, Structured Data, Rich Results, Product Schema
Course Schema
Course schema is the 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 structured-data vocabulary you add to a page listing educational courses — usually as 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. — so search engines can read each course’s name, description, and provider. Google uses it to power one live rich result today: the “Course list” carousel, an ItemList of Course items shown together above the regular results.
The single most important, most-missed rule: the Course list feature requires at least three courses marked up together. One course on its own does not qualify — there is no single-course card. Required per course is description and name; provider is recommended.
A separate, richer single-course feature called “Course Info” — which surfaced price, dates, and instructor for an individual course — did exist, but Google deprecated it in June 2025 as part of a batch of structured-data simplifications, and its documentation 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 changelog confirming removal. The Course list carousel is available in English wherever Google Search operates — a language restriction, not a “US-only” geographic one, which is a common misstatement worth correcting.
Related: Schema Markup, Structured Data, Rich Results, Product Schema
Build-time retrieval analysis plus live signals for this exact article. The automatic chunk report includes a deterministic readiness score and is ready without a model download.
Search Console
sampleGA4 traffic (28d)
sampleCloudflare traffic (7d)
sampledCrUX field data (28d, phone)
sampleGoogle NLP entities
localChangelog
Revision history
Compare the published article with an archived editorial snapshot. Added and removed words are shown only after you open a comparison.
Updated Jul 17, 2026.
Editorial summary and recorded change details.Summary
Bounded the three-course-minimum wording so it no longer implies a single Course is worthless, surfaced Google's own name/description/provider requirement inconsistency, split the Course Info retirement into its three dated milestones, and rejected a competitor claim that CourseInstance has been mandatory since 2024.
Change details
-
Rewrote every 'gets you nothing'/'earns nothing' framing across lenses to state that a single Course is still valid schema.org markup — it just doesn't qualify for the Course list carousel.
-
Added Google's required-vs-recommended provider contradiction (property table says recommended, technical guideline says required) and now recommend treating it as required.
-
Split the Course Info deprecation into three confirmed dated steps: announced June 12 2025, phased out September 8 2025, documentation removed September 9 2025.
-
Added an explicit rejection of the claim that Course plus CourseInstance has been mandatory since 2024 — Google's current property tables don't list CourseInstance as a requirement.
-
Removed the named AIOSEO citation after its source URL returned a 404 during re-verification; kept the general stale-content caution without attributing it to an unverifiable live page.