XooCode(){

BookSeries

BookSeries is a CreativeWorkSeries subtype for a series of books: the Discworld novels, the Harry Potter series, a multi-volume reference set. It adds no properties of its own. Books in the series link via hasPart; shared metadata (startDate, endDate, author, publisher) sits on the BookSeries entity itself.

Full example of schema.org/BookSeries json-ld markup

The markup is verified as valid with Rich Results Test from Google.

schema.org/BookSeries
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "BookSeries",
  "name": "Xoo Code Pocket Reference",
  "description": "Four pocket-format reference books covering JSON-LD, structured data testing, the schema.org vocabulary, and Google rich results.",
  "author": { "@type": "Person", "name": "Jane Xoo" },
  "publisher": { "@type": "Organization", "name": "Xoo Code Press" },
  "startDate": "2024-06-01",
  "endDate": "2026-03-15",
  "numberOfEpisodes": 4,
  "hasPart": [
    { "@type": "Book", "name": "JSON-LD Pocket Reference", "position": 1, "isbn": "978-1-66566-000-1" },
    { "@type": "Book", "name": "Structured Data Testing Pocket Reference", "position": 2, "isbn": "978-1-66566-000-2" },
    { "@type": "Book", "name": "Schema.org Vocabulary Pocket Reference", "position": 3, "isbn": "978-1-66566-000-3" },
    { "@type": "Book", "name": "Google Rich Results Pocket Reference", "position": 4, "isbn": "978-1-66566-000-4" }
  ]
}
</script>

Series order and position

Use position inside each Book.isPartOf (or use the ItemList pattern via hasPart) to express reading order. BookSeries itself does not carry an ordered index; consumers look at the positions on the individual Books.

Minimal valid version

The smallest markup that still produces a valid BookSeries entity. Use it as the floor. Reach for the advanced example above when you want search engines and AI agents to understand more about your content.

schema.org/BookSeries (minimal)
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "BookSeries",
  "name": "Xoo Code Pocket Reference",
  "author": { "@type": "Person", "name": "Jane Xoo" }
}
</script>

Google rich results this unlocks

BookSeries is a structural type. It does not produce a rich result on its own.

Its value comes from combining it with a primary type whose markup earns a rich result (Article, Product, Event, and so on). BookSeries becomes the trunk that the primary type branches off viamainEntityorbreadcrumb. Include it on every page as the backbone of your markup.

Common BookSeries mistakes

Mistakes that pass validation but silently fail to earn rich results or mislead consumers walking the graph. Avoid these and your markup will be ahead of most sites in the wild.

  1. 01

    Ordering series books without position

    Wrong
    hasPart list with no position on each Book
    Right
    Each Book in hasPart carries position: 1, 2, 3... for reading order

    BookSeries itself is unordered. Position on the child Books is the signal consumers use to show reading order and 'next in series' suggestions.

About the example data

The "Xoo Code Pocket Reference" book series, four small-format books covering JSON-LD, structured data testing, schema.org vocabulary, and rich results, published 2024-2026.

Comments

Loading comments...

Leave a comment