Course Structured Data: Complete Implementation Guide
Course structured data enables educational providers, online learning platforms, and training organisations to present their courses prominently in Google Search results. When implemented correctly, Course markup can trigger rich results that display the course title, provider, description, and other key details directly in the SERP. This helps prospective learners find and evaluate your courses before clicking through, and it signals to Google that your content is structured educational material rather than generic web content.
Why Use Course Schema?
- Display course details including title, provider, and description directly in Google Search results
- Eligibility for the course carousel rich result, showcasing multiple courses from your platform in a single listing
- Improved visibility for educational content in an increasingly competitive online learning market
- Help prospective students compare courses at a glance, leading to more qualified traffic to your enrolment pages
- Stronger signals to Google about the educational nature of your content, supporting topical authority
Required Properties
These properties are required by Google for Course structured data to be eligible for rich results.
| Property | Description |
|---|---|
| name | The full title of the course as it would appear in a course catalogue, such as 'Introduction to Machine Learning with Python'. |
| description | A detailed description of the course content, learning objectives, and target audience. Keep this informative and under 200 words. |
| provider | The organisation offering the course. Use an Organization type with the name and sameAs (linking to the provider's official website or social profiles). |
Recommended Properties
Adding these properties improves your chances of appearing in rich results and provides more context to search engines.
| Property | Description |
|---|---|
| offers | Pricing details for the course using an Offer object. Include price, priceCurrency, and availability. Use 0 for free courses. |
| hasCourseInstance | Specific instances or sessions of the course, including start dates, delivery mode (online, onsite, blended), and schedule details. |
| coursePrerequisites | Prerequisites for enrolment, either as free text or links to prerequisite courses. Helps students assess whether the course is appropriate for their level. |
| educationalLevel | The difficulty or academic level of the course, such as 'Beginner', 'Intermediate', 'Advanced', or a formal qualification level. |
| inLanguage | The language in which the course is taught, using an ISO 639-1 code such as 'en' for English or 'fr' for French. |
JSON-LD Example
Here is a complete Course structured data example you can use as a starting point. Or use our Course generator to create one automatically.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Course",
"name": "Introduction to Data Science with Python",
"description": "A comprehensive beginner-friendly course covering data analysis, visualisation, and machine learning fundamentals using Python. Students will work with real-world datasets and complete hands-on projects using pandas, matplotlib, and scikit-learn.",
"provider": {
"@type": "Organization",
"name": "TechLearn Academy",
"sameAs": "https://www.techlearnacademy.com"
},
"offers": {
"@type": "Offer",
"price": "149.00",
"priceCurrency": "GBP",
"availability": "https://schema.org/InStock",
"url": "https://www.techlearnacademy.com/courses/intro-data-science-python",
"validFrom": "2025-09-01"
},
"hasCourseInstance": {
"@type": "CourseInstance",
"courseMode": "online",
"courseSchedule": {
"@type": "Schedule",
"duration": "PT8W",
"repeatFrequency": "weekly",
"repeatCount": 8
},
"instructor": {
"@type": "Person",
"name": "Dr. James Whitfield"
}
},
"educationalLevel": "Beginner",
"inLanguage": "en",
"coursePrerequisites": "No prior programming experience required. Basic mathematics knowledge is helpful.",
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.7",
"reviewCount": "312",
"bestRating": "5"
}
}
</script>How to Implement Course Schema
- 1Identify all course pages on your site and determine which details are available for each course, including title, description, provider, pricing, and schedule information.
- 2Create a JSON-LD script block on each course page with @type set to 'Course' and include the required properties: name, description, and provider.
- 3Add the provider as an Organization object with name and sameAs properties. If your platform hosts courses from multiple providers, ensure each course references the correct one.
- 4Include pricing details using an Offer object with price, priceCurrency, and availability. For free courses, set the price to '0'.
- 5Add hasCourseInstance with courseMode (online, onsite, or blended) and schedule details if the course runs on specific dates.
- 6Validate each course page using Google's Rich Results Test and submit your course listing pages in Google Search Console for indexing.
Common Mistakes to Avoid
- Using vague or marketing-heavy descriptions instead of factual, informative content that accurately represents the course material.
- Omitting the provider property or using a generic name. Google requires a clearly identified course provider for rich result eligibility.
- Not updating hasCourseInstance when course sessions end or new ones begin, resulting in outdated schedule information in search results.
- Failing to include pricing information. Even free courses should include an Offer with price set to '0' to be eligible for enhanced display.
- Adding Course markup to pages that list multiple courses rather than individual course detail pages. Use ItemList for course listing pages instead.
Testing & Validation
Before deploying your Course structured data, validate it using these tools:
- 1Google Rich Results Test — Paste your page URL or code snippet to check if your structured data is eligible for rich results.
- 2Schema Markup Validator — Validates your JSON-LD syntax against the schema.org specification.
- 3Google Search Console — After deployment, monitor the Enhancements report for any errors or warnings.
Frequently Asked Questions
What types of courses are eligible for Course rich results?
Google supports Course structured data for a wide range of educational content including university courses, professional training, online tutorials, and certification programmes. The key requirement is that the content is genuinely educational with defined learning objectives.
How do I mark up a free course?
Include an Offer object with the price property set to '0' and priceCurrency set to your relevant currency code. You can also set the availability to InStock. This clearly signals to Google and users that the course is free of charge.
Can I use Course markup for webinars or workshops?
Yes, provided the webinar or workshop has an educational focus. Use hasCourseInstance to specify the event details including start date, duration, and delivery mode. For one-off events, consider whether Event schema might be more appropriate.
Should I include aggregate ratings in my Course structured data?
Yes, if you have genuine student reviews. Include an AggregateRating with ratingValue, reviewCount, and bestRating. Only add ratings that are collected on your own platform and represent real student feedback.
How do I handle courses available in multiple languages?
Create a separate course page and structured data block for each language version. Use the inLanguage property with the appropriate ISO 639-1 code and ensure the page content matches the declared language.
Ready to Generate Your Course Schema?
Use our free generator to create valid Course structured data in seconds.
Open Course Generator