---
title: "ItemList Schema"
description: "Add Schema.org ItemList structured data to your Sanity-powered site with sanity-plugin-seofields. Power list rich results — top 10s, rankings, collections, and curated guides."
canonical: https://sanity-plugin-seofields.thehardik.in/docs/schema-org/item-list
---

# ItemList

The ItemList schema type describes an ordered or unordered collection of items. Google uses it to render carousel and list rich results — top-10 lists, ranked products, episode guides, and curated round-ups all benefit from this markup.

## About ItemList

ItemList is one of the most flexible schema types. For ranked content (e.g. &quot;Best laptops 2025&quot;), set itemListOrder to ItemListOrderDescending and include explicit position values to lock the order. For navigation breadcrumbs, prefer the more specific  BreadcrumbList  type which Google treats differently in search results.

## Fields

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `name` | string | Yes | The name of the list. |
| `description` | text | No | A description of the list. |
| `itemListOrder` | string | No | How items are ordered: ItemListOrderAscending, ItemListOrderDescending, or ItemListUnordered. |
| `numberOfItems` | number | No | Total number of items in the list. |
| `itemListElement[].position` | number | No | Order in the list (auto-set if not provided). |
| `itemListElement[].name` | string | No | The name of each list item. |
| `itemListElement[].url` | url | No | Link to the item. |
| `itemListElement[].image` | url | No | Image for the list item. |
| `itemListElement[].description` | text | No | Description of the list item. |

## Plugin Registration

```typescript
import { defineConfig } from 'sanity'
import { schemaOrgItemListPlugin } from 'sanity-plugin-seofields/schema'

export default defineConfig({
  plugins: [
    schemaOrgItemListPlugin(),
  ],
})
```

## Schema Usage

Add the `schemaOrgItemList` field to any document schema:

```typescript
import { defineField, defineType } from 'sanity'

export default defineType({
  name: 'roundup',
  title: 'Roundup',
  type: 'document',
  fields: [
    defineField({
      name: 'schemaOrgItemList',
      title: 'ItemList Schema',
      type: 'schemaOrgItemList',
    }),
  ],
})
```

## GROQ Query

```javascript
*[_type == "roundup"][0]{
  schemaOrgItemList {
    name,
    description,
    itemListOrder,
    numberOfItems,
    itemListElement[]{
      position,
      name,
      url,
      image,
      description
    }
  }
}
```

## Next.js Component

```tsx
import { ItemListSchema } from 'sanity-plugin-seofields/schema/next'

export default function Layout({ data }) {
  return <ItemListSchema data={data.schemaOrgItemList} />
}
```

## JSON-LD Output

```json
{
  "@context": "https://schema.org",
  "@type": "ItemList",
  "name": "Top 5 React Frameworks of 2025",
  "description": "Our editor-curated ranking of the most popular React-based frameworks.",
  "itemListOrder": "https://schema.org/ItemListOrderDescending",
  "numberOfItems": 5,
  "itemListElement": [
    {
      "@type": "ListItem",
      "position": 1,
      "name": "Next.js",
      "url": "https://nextjs.org",
      "image": "https://example.com/img/nextjs.png",
      "description": "The React framework for the web."
    },
    {
      "@type": "ListItem",
      "position": 2,
      "name": "Remix",
      "url": "https://remix.run"
    }
  ]
}
```
