- Book is a two-level entity. The abstract work (the novel, the textbook) is one Book record; each edition (hardcover, paperback, ebook, audiobook) is a child Book via
workExample. - Required on Book:
name,author,workExamplewith at least one edition. - Required on each edition:
isbn,bookFormat(enum),inLanguage,potentialAction(ReadAction). - bookFormat values:
Hardcover,Paperback,EBook,AudiobookFormat,GraphicNovel. - For audiobooks, use the Audiobook subtype (extends Book + AudioObject). Adds
duration,readBy(narrator), andabridged.
Chapter 1. Before you start
Book schema is unique among Google's rich-result types in that it requires a two-level entity model: the abstract work and the concrete editions. A novel has one work; that work has a hardcover edition, a paperback edition, an ebook, and an audiobook. Each edition has its own ISBN, its own price, its own purchase URL. The Book schema captures both levels through the workExample property.
- Identify the canonical book detail page. Convention:
/books/{author-slug}/{book-slug}or/catalog/{isbn}. The Book schema goes on this page. - Gather every edition's ISBN. ISBN-13 is preferred; ISBN-10 is acceptable for older books. Different editions never share an ISBN.
- Decide on potentialAction. For purchase:
BuyActionorOrderAction. For reading (e.g., Google Books / library):ReadAction. For audiobook playback:ListenAction. - Pull author entity data - linking to a Person with
@idbeats a plain name string.
Chapter 2. What does Book schema actually do for SEO + AI search?
- Google Books actions. The "Read" / "Buy" buttons attached to book results in search, including the Knowledge Graph entries for famous books.
- Knowledge Graph book entities. Books with rich schema (author, ISBN, sameAs to Goodreads/OpenLibrary/Wikipedia) get pulled into Google's Knowledge Graph, producing Knowledge Panels.
- AI engine book recommendations. Perplexity, ChatGPT, and Gemini cite Book-schema'd publisher pages for "books about X" queries with the correct edition / format / availability.
- Author authority signal. Linking Books from the author's
authorPerson record (worksProducedorcreator) ties the author's E-E-A-T to the body of work.
Chapter 3. The Book + workExample edition pattern
{
"@context": "https://schema.org",
"@type": "Book",
"@id": "https://www.example.com/books/example-novel#book",
"name": "Example Novel",
"author": {
"@type": "Person",
"name": "Jane Doe",
"sameAs": [
"https://www.wikidata.org/wiki/Q12345678",
"https://en.wikipedia.org/wiki/Jane_Doe_(author)"
]
},
"publisher": {
"@type": "Organization",
"name": "Example Publishing House"
},
"datePublished": "2025-09-15",
"inLanguage": "en",
"description": "A novel about ...",
"image": "https://www.example.com/books/example-novel/cover.jpg",
"sameAs": [
"https://www.goodreads.com/book/show/0000000",
"https://openlibrary.org/works/OL0000000W"
],
"workExample": [
{
"@type": "Book",
"@id": "https://www.example.com/books/example-novel/hardcover#hardcover",
"isbn": "9781234567890",
"bookFormat": "https://schema.org/Hardcover",
"inLanguage": "en",
"datePublished": "2025-09-15",
"potentialAction": {
"@type": "ReadAction",
"target": {
"@type": "EntryPoint",
"urlTemplate": "https://www.example.com/books/example-novel/hardcover/buy",
"actionPlatform": ["https://schema.org/DesktopWebPlatform", "https://schema.org/MobileWebPlatform"]
},
"expectsAcceptanceOf": {
"@type": "Offer",
"category": "purchase",
"price": 28.99,
"priceCurrency": "USD",
"eligibleRegion": { "@type": "Country", "name": "US" }
}
}
},
{
"@type": "Book",
"@id": "https://www.example.com/books/example-novel/ebook#ebook",
"isbn": "9781234567906",
"bookFormat": "https://schema.org/EBook",
"inLanguage": "en",
"potentialAction": { ... }
}
]
}
The parent Book carries the work-level metadata (author, summary, datePublished of the work). Each workExample entry carries edition-specific metadata (ISBN, format, price, purchase URL). Don't confuse this with putting all editions as flat properties on a single Book - the workExample structure is what Google expects.
Chapter 4. bookFormat values
| Edition type | bookFormat value |
|---|---|
| Hardcover | https://schema.org/Hardcover |
| Paperback / softcover | https://schema.org/Paperback |
| Ebook (Kindle, EPUB, PDF, etc.) | https://schema.org/EBook |
| Audiobook | https://schema.org/AudiobookFormat (or use Audiobook subtype - see chapter 5) |
| Graphic novel | https://schema.org/GraphicNovel |
Use the full URL form (https://schema.org/Hardcover) not just the leaf name. Some Google parsers accept both, but the full URL is the canonical form.
Chapter 5. Audiobook subtype and series modeling
Audiobook
Audiobooks have their own subtype that extends both Book and AudioObject. Use @type: "Audiobook" on the audiobook edition rather than Book with bookFormat: AudiobookFormat:
{
"@type": "Audiobook",
"isbn": "9781234567913",
"duration": "PT11H20M",
"readBy": {
"@type": "Person",
"name": "Narrator Name"
},
"abridged": false,
"potentialAction": {
"@type": "ListenAction",
"target": { ... }
}
}
Series
For a book that's part of a series, link via isPartOf to a BookSeries entity:
"isPartOf": {
"@type": "BookSeries",
"name": "The Example Trilogy",
"@id": "https://www.example.com/series/example-trilogy#series",
"numberOfBooks": 3
},
"position": 2 // this is book 2 in the series
Chapter 6. Where do you place Book schema on the site?
One Book record per work. The parent Book lives on the canonical book detail page. workExample editions live nested in the Book - they don't need their own pages, just their own @id + ISBN.
For publishers with deep catalogs, the canonical book page handles the parent Book; each edition's purchase page (if one exists) can carry a focused Book record with just that edition's data, referencing the parent via exampleOfWork.
Chapter 7. The breakages we see most often
Ranked by frequency across 14 publisher and bookseller audits:
- No
workExample- all edition data flat on the Book. 10 of 14. - Same ISBN across multiple editions (hardcover + paperback both showing the hardcover's ISBN). 8 of 14.
- Author as plain string instead of a Person object with sameAs. 6 of 14.
- Audiobook shipped as Book with bookFormat: AudiobookFormat instead of using the Audiobook subtype. 4 of 14.
- No
potentialActionon editions, so the "Buy" / "Read" buttons don't fire in Google Books. 3 of 14. bookFormatas bare string ("Hardcover") instead of the schema.org URL. 2 of 14.
We track these on running sites through our Sentry structured-data rule set.
FAQ
Do I need separate URLs for each edition?
No. The parent Book has one canonical URL; each edition lives inside workExample with just an @id. If individual editions have their own buy pages (publisher-specific), those URLs go in the potentialAction.target.
What if I only sell one edition?
Still ship the Book + workExample structure with a single edition. The pattern is what Google expects, even for single-edition books. The schema is also more future-proof for when you add an ebook or audiobook later.
How do I handle pre-orders?
The edition's potentialAction.expectsAcceptanceOf Offer can have availability: "https://schema.org/PreOrder" and validFrom set to the release date. Google's Book actions surface "Pre-order" in the rich result.
Should I link to Goodreads / OpenLibrary / Wikipedia in sameAs?
Yes. These build the book entity in Google's Knowledge Graph. Goodreads, OpenLibrary, Wikipedia, and LibraryThing are the four highest-leverage sameAs targets for a book.
Do I need Book schema for a textbook or non-fiction?
Yes. Book covers all published books regardless of genre. For textbooks, add educationalUse and typicalAgeRange. For reference books, add about for subject coverage.
What's the difference between Book and CreativeWork?
Book is a subtype of CreativeWork specifically for published books with ISBNs. Use Book unless the work is unpublished / pre-ISBN, in which case CreativeWork or Article is more appropriate.
References
- Schema.org. "Book." schema.org/Book
- Schema.org. "Audiobook." schema.org/Audiobook
- Google Search Central. "Book actions (Book) structured data." developers.google.com/search/docs/appearance/structured-data/book
- Schema.org. "BookFormatType." schema.org/BookFormatType
- Schema.org. "BookSeries." schema.org/BookSeries
- Schema.org. "Schema Markup Validator." validator.schema.org