ItemList Schema for Best-Of Lists

ItemList Schema for Best-Of Lists

Key Takeaways

  • ItemList = ranked content: The primary schema for best-of and listicle pages
  • Position property: Explicitly communicates your ranking order
  • Nested items: Can include Product, SoftwareApplication, or other types
  • AI parsing: Clear ItemList structure helps AI accurately cite your rankings

ItemList schema is the foundation of structured data for any ranked content. It tells search engines and AI systems that your page contains an ordered list of items, with explicit positions.

Basic ItemList Structure#

The simplest ItemList includes the list name, number of items, and positioned elements:

basic-itemlist.json
{
  "@context": "https://schema.org",
  "@type": "ItemList",
  "name": "Best Email Marketing Tools 2026",
  "numberOfItems": 5,
  "itemListElement": [
    {
      "@type": "ListItem",
      "position": 1,
      "name": "Mailchimp"
    },
    {
      "@type": "ListItem",
      "position": 2,
      "name": "ConvertKit"
    },
    {
      "@type": "ListItem",
      "position": 3,
      "name": "Klaviyo"
    }
  ]
}

Enhanced Template with Nested Items#

For richer results, nest Product or SoftwareApplication types within each ListItem:

enhanced-itemlist.json
{
  "@context": "https://schema.org",
  "@type": "ItemList",
  "name": "Best Project Management Software 2026",
  "description": "Expert-tested rankings of the top PM tools",
  "numberOfItems": 5,
  "itemListElement": [
    {
      "@type": "ListItem",
      "position": 1,
      "item": {
        "@type": "SoftwareApplication",
        "name": "Notion",
        "applicationCategory": "Project Management",
        "operatingSystem": "Web, iOS, Android, macOS, Windows",
        "offers": {
          "@type": "Offer",
          "price": "8",
          "priceCurrency": "USD",
          "priceValidUntil": "2026-12-31"
        },
        "aggregateRating": {
          "@type": "AggregateRating",
          "ratingValue": "4.8",
          "bestRating": "5",
          "ratingCount": "1250"
        }
      }
    },
    {
      "@type": "ListItem",
      "position": 2,
      "item": {
        "@type": "SoftwareApplication",
        "name": "Asana",
        "applicationCategory": "Project Management",
        "operatingSystem": "Web, iOS, Android",
        "offers": {
          "@type": "Offer",
          "price": "10.99",
          "priceCurrency": "USD"
        }
      }
    }
  ]
}

Best Practices#

  • 1
    Always include position
    The position property is what makes this a ranked list vs. an unordered collection.
  • 2
    Match content to schema
    Your schema positions must match the actual order on the page.
  • 3
    Use appropriate item types
    SoftwareApplication for tools, Product for physical goods, Organization for services.
  • 4
    Include numberOfItems
    Helps search engines understand list completeness.
  • 5
    Add descriptions
    The description property provides context for AI systems.

Common Mistakes to Avoid#

Pros
  • Matching schema positions to page order
  • Using specific item types (Product, SoftwareApplication)
  • Including URLs for each item
  • Adding price and rating data when available
Cons
  • Mismatched positions and page order
  • Using only ListItem without nested types
  • Missing position properties
  • Outdated pricing information

Testing and Validation#

  • Test with Google Rich Results Test (search.google.com/test/rich-results)
  • Validate syntax with Schema.org validator
  • Check Search Console for structured data errors
  • Verify positions match visible page order
  • Ensure prices and ratings are current

Keep Data Current

Outdated schema data (wrong prices, discontinued products) can hurt credibility. Update schema whenever you update page content.

Frequently Asked Questions#

Should every listicle have ItemList schema?

Yes, if the list is ranked or ordered. Even non-comparison lists benefit from ItemList schema for clarity.

Can I use ItemList for unranked lists?

Yes, but omit position for truly unordered lists, or use itemListOrder: "Unordered" to indicate no ranking.

Ready to Optimize for AI Search?

Seenos.ai helps you create content that ranks in both traditional and AI-powered search engines.

Get Started