---
title: "Course Schema · Unhead"
canonical_url: "https://unhead.unjs.io/docs/solid-js/schema-org/api/schema/course"
last_updated: "2026-09-15T03:31:34.985Z"
meta:
  description: "Use defineCourse() to add Course structured data with a provider, description, and course details."
  "og:description": "Use defineCourse() to add Course structured data with a provider, description, and course details."
  "og:title": "Course Schema · Unhead"
---

Home

`
Unhead on GitHub

Switch to Solid.jsSwitch to TypeScriptSwitch to VueSwitch to ReactSwitch to SvelteSwitch to AngularSwitch to Nuxt

**Schema**

# **Course Schema**

[Copy for LLMs](https://raw.githubusercontent.com/unjs/unhead/refs/heads/main/docs/schema-org/5.api/9.schema/course.md)

## Schema.org Course

- **Type**: `defineCourse<T extends Record<string, any>>(input?: Course & T)`  
  Describes a Course.

## Useful Links

- [**~~Schema.org Course~~**](https://schema.org/Course)
- [**~~Course List Markup - Google Search Central~~**](https://developers.google.com/search/docs/appearance/structured-data/course)

The fields below cover Google's Course list feature and the fields used by Unhead's resolver. They do not cover every property on `**schema.org/Course**`. Other valid properties, such as `**coursePrerequisites**`, pass through to the generated JSON-LD. Use a [**~~custom node~~**](https://unhead.unjs.io/docs/schema-org/guides/recipes/custom-nodes) with [`**schema-dts**`](https://github.com/google/schema-dts) when you need full Schema.org typing.

## Examples

```
defineCourse({
  name: 'Introduction to Computer Science and Programming',
  description: 'Introductory CS course laying out the basics.',
  provider: {
    name: 'University of Technology - Eureka',
    sameAs: 'http://www.ut-eureka.edu',
  },
})
```

For [**~~Google's course list feature~~**](https://developers.google.com/search/docs/appearance/structured-data/course), mark up at least three courses and add the required ItemList carousel properties. Each Course needs `**name**` and `**description**`, together with valid provider information.

## Defaults and resolves

- `**@type**` defaults to `**Course**`.
- A root Course receives an ID such as `**${canonicalUrl}#/schema/course/{n}**`.
- `**provider**` is resolved as a root Organization. When it is omitted, Unhead references the primary identity if one exists.

## Types

```
/**
 * A course or class offered by an educational institution.
 */
export interface CourseSimple extends Thing {
  /**
   * The title of the course.
   */
  name: string
  /**
   * A description of the course. Display limit of 60 characters.
   */
  description: string
  /**
   * The course code or identifier.
   */
  courseCode?: string
  /**
   * The educational level of the course.
   */
  educationalLevel?: string
  /**
   * The duration of the course.
   */
  timeRequired?: string
  /**
   * A reference to an Organization piece, representing the organization offering the course.
   */
  provider?: NodeRelation<Organization>
}
```

## Related Schemas

- [**~~Organization~~**](https://unhead.unjs.io/docs/schema-org/api/schema/organization): Course provider
- [**~~Person~~**](https://unhead.unjs.io/docs/schema-org/api/schema/person): Instructor
- [**~~Event~~**](https://unhead.unjs.io/docs/schema-org/api/schema/event): Course sessions

[Edit this page](https://github.com/unjs/unhead/edit/main/docs/schema-org/5.api/9.schema/course.md)

[Markdown For LLMs](https://raw.githubusercontent.com/unjs/unhead/refs/heads/main/docs/schema-org/5.api/9.schema/course.md)

**Did this page help you? **

[**Comment Schema** Use defineComment() to add Comment structured data. Connect user comments to articles and blog posts with author and date information.](https://unhead.unjs.io/docs/schema-org/api/schema/comment) [**Dataset Schema** Use defineDataset() to add Dataset structured data. Make research data discoverable in Google Dataset Search with metadata and download links.](https://unhead.unjs.io/docs/schema-org/api/schema/dataset)

**On this page **

- [Schema.org Course](#schemaorg-course)
- [Useful Links](#useful-links)
- [Examples](#examples)
- [Defaults and resolves](#defaults-and-resolves)
- [Types](#types)
- [Related Schemas](#related-schemas)