In short. Google requires at least three marked-up courses and an ItemList with itemListElement, ListItem.position, and ListItem.url.
Definition: Google's course list feature requires structured data for at least three courses. A list page also needs
ItemListmarkup that identifies each course as a positioned list item with a canonical URL.
Key facts
- Google requires markup for at least three courses. They may be on separate detail pages or on one all-in-one page, according to Google Search Central's course list documentation.
- Google requires
Carouselmarkup on a summary page or an all-in-one page. The list itself is represented withItemListproperties on one of those page types. - The required
ItemListproperties areitemListElement,ListItem.position, andListItem.url. Google describes the first as an annotation for a single item page, the second as the item's ordinal position, and the third as its canonical URL. - Schema.org defines
ItemListas a list of items. ItsitemListElementproperty can containListItem, text, or an existing entity, whilenumberOfItemsrecords the number of items in the list.
What is the minimum number of courses?
The minimum is three courses. Google states that a site “must mark up at least three courses.” The courses can be presented on separate detail pages or together on an all-in-one page. The same threshold appears in the Course property section, where Google again says to mark up at least three courses.
The threshold applies to the course markup. A page with one course can have valid Course data for that course, but it does not meet the documented course list threshold. Google's page describes the feature as a list and illustrates an all-in-one example with three ListItem entries.
What does the ItemList requirement add?
ItemList describes the collection that brings the courses together. Google says to add its properties “in addition to Course properties” and permits them on either a summary page or an all-in-one page. The list therefore has a separate layer from the properties that describe each Course.
The minimum list structure is:
{
"@context": "https://schema.org",
"@type": "ItemList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"item": {
"@type": "Course",
"url": "https://www.example.com/courses#intro-to-cs",
"name": "Introduction to Computer Science and Programming"
}
},
{
"@type": "ListItem",
"position": 2,
"item": {
"@type": "Course",
"url": "https://www.example.com/courses#intermediate-cs",
"name": "Intermediate Computer Science and Programming"
}
},
{
"@type": "ListItem",
"position": 3,
"item": {
"@type": "Course",
"url": "https://www.example.com/courses#advanced-cs",
"name": "Advanced Computer Science and Programming"
}
}
]
}
Each ListItem needs a position and a URL. Google describes ListItem.position as the ordinal position of the item page in the list and ListItem.url as its canonical URL, with every item assigned a unique URL. Schema.org adds that the order of elements in markup alone is insufficient when order matters, so an ordered list uses ListItem with a position property.
Does numberOfItems replace the three course entries?
No. Schema.org describes numberOfItems as the number of items in an ItemList, including the entire list when a description covers several pages. That property reports a count. Google's course list requirements still call for itemListElement, ListItem.position, and ListItem.url for the list entries.
Google's documentation also requires Carousel markup on a summary or all-in-one page. The course threshold and the list markup are therefore separate checks: the first counts the marked-up courses, while the second describes how those courses are arranged in the list.
Related terms
FAQ
Is two-course markup enough for the course list feature?
No. Google documents a minimum of three marked-up courses for the course list feature.
Can the three courses use separate detail pages?
Yes. Google's technical guidelines allow the courses to be on separate detail pages or on an all-in-one page.
Is ItemList optional when there are three courses?
Google lists ItemList properties in addition to the Course properties and requires itemListElement, ListItem.position, and ListItem.url for the list.
Sources
- Google Search Central, "Course list (Course) structured data", 8 September 2026
- Schema.org, "ItemList", undated
Check how a page reads to answer engines. Open the GEO score analyzer