Selling courses without Course Schema = Google can't show price or rating. Course Schema = rich card with provider + price in search.
In this tutorial, you'll add Course Schema to Blogger course landing pages. Follow along and you'll get Google course rich results with ratings in 2025.
Step 1: Why Course Schema Beats Normal Landing Pages 2025
Google prioritizes structured courses in education search results.
- Rich snippets: Google shows provider, price, rating ★★★★☆ under title
- Course carousel: Schema required for "Best SEO courses" carousel
- Higher CTR: Price + rating shown = 45% more clicks than plain links
- Google for Jobs: Courses with Schema rank in "Learn" tab of job searches
Image: Google search showing course with 4.9 stars, $49, Udemy provider
Step 2: Add Course Schema to Blogger Course Page
Paste this in post HTML editor on your course landing page.
- Posts → Edit Course Page → Switch to "HTML" view → Paste at BOTTOM:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Course",
"name": "Blogger SEO Mastery Course 2025",
"description": "Complete Blogger SEO course. Learn keyword research, Schema markup, backlinks, and AdSense optimization. 6 hours of video + 50 templates.",
"provider": {
"@type": "Organization",
"name": "Your Blog Academy",
"sameAs": "https://yourblog.blogspot.com"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.9",
"ratingCount": "312",
"bestRating": "5"
},
"offers": [{
"@type": "Offer",
"category": "Paid",
"priceCurrency": "USD",
"price": "49.00",
"url": "https://yourblog.blogspot.com/p/seo-course.html",
"availability": "https://schema.org/InStock",
"validFrom": "2025-09-28"
}],
"hasCourseInstance": {
"@type": "CourseInstance",
"courseMode": "online",
"courseWorkload": "PT6H",
"instructor": {
"@type": "Person",
"name": "Your Name",
"description": "SEO Expert with 8 years experience. Helped 5000+ bloggers get AdSense approved."
}
},
"image": "https://yourblog.blogspot.com/course-thumbnail.jpg",
"url": "https://yourblog.blogspot.com/p/seo-course.html",
"datePublished": "2025-09-28",
"educationalLevel": "Beginner to Advanced",
"teaches": ["SEO", "Blogger", "Schema Markup", "AdSense", "Keyword Research"]
}
</script>
- Replace placeholders:
| Field | Replace With | Example |
| name | Course title | Blogger SEO Mastery Course |
| provider.name | Your brand/school name | Your Blog Academy |
| price | Course price | 49.00, 0 for free |
| courseWorkload | Total hours ISO 8601 | PT6H = 6 hours |
| educationalLevel | Beginner, Intermediate, Advanced | Beginner to Advanced |
| ratingValue | Real average rating 1-5 | 4.9 |
Step 3: Free vs Paid Course Schema Examples
Google treats free and paid courses differently. Use correct offers block:
For Paid Courses:
"offers": [{
"@type": "Offer",
"category": "Paid",
"priceCurrency": "USD",
"price": "49.00",
"url": "https://yourblog.com/course"
}]
For Free Courses:
"offers": [{
"@type": "Offer",
"category": "Free",
"priceCurrency": "USD",
"price": "0",
"url": "https://yourblog.com/course"
}]
Step 4: Add Visible Course Card to Match Schema
Schema must match visible content. Add this card above Schema:
<div style="background:#f1f3f4;border:2px solid #34a853;padding:20px;border-radius:8px;margin:20px 0;"> <h2>Blogger SEO Mastery Course 2025</h2> <p><strong>Rating:</strong> ★★★★☆ 4.9/5 (312 students)</p> <p><strong>Price:</strong> $49 | <strong>Duration:</strong> 6 hours | <strong>Level:</strong> Beginner to Advanced</p> <p><strong>Instructor:</strong> Your Name, SEO Expert</p> <p><strong>Includes:</strong> 6 hours video, 50 templates, Certificate, Lifetime access</p> <p><strong>What you learn:</strong> SEO, Schema, Backlinks, AdSense, Keyword Research</p> <a href="https://gumroad.com/l/your-course" style="background:#1a73e8;color:#fff;padding:12px 24px;text-decoration:none;border-radius:4px;display:inline-block;margin-top:10px;">Enroll Now</a> </div>
Step 5: Test Course Schema + Fix Common Errors
- Rich Results Test: search.google.com/test/rich-results → Enter URL → Must show "Course" valid
- Schema Validator: validator.schema.org → Check for missing
provideroroffers - Search Console: Enhancements → Courses → Monitor valid items
- Fix: "Missing field provider" = Add Organization with name + url
- Fix: "Invalid price" = Use number not string.
"price": "49.00"not"$49" - Fix: No rich results = Remove
aggregateRatingif you have no real student reviews. Fake ratings = penalty
Bad practice to avoid: Adding Course Schema to blog posts or YouTube videos. Only use on dedicated course landing pages with enroll button. Google gives manual action for misuse.
Important: Course Schema works for self-hosted courses, Teachable, Gumroad, Udemy. If course is on external platform, set url to that platform. Update datePublished when you update course. Add review array for individual student testimonials. Combine with Video Schema from Post #57 if course has preview video.
0 Comments