AggregateOffer Schema: Perfect for Price Comparison Sites
Learn how to implement AggregateOffer Schema to display price ranges, availability across sellers, and product variants in search results. Essential for marketplace and comparison sites.
Price comparison sites, marketplaces, and products with variants need more than simple product schema—they need AggregateOffer Schema. This specialized markup displays price ranges, multiple seller options, and variant availability directly in search results, making your listings stand out and driving comparison shoppers to your site.
This comprehensive guide shows you exactly how to implement AggregateOffer Schema to maximize visibility for products with price variations. Whether you run a marketplace, comparison site, or sell products with multiple configurations, AggregateOffer Schema is essential for capturing price-conscious shoppers.
Why AggregateOffer Schema is Essential for Price Comparison
AggregateOffer Schema transforms how products with price variations appear in search results:
- Display Price Ranges: Show 'From $99 to $299' instead of a single price point
- Multiple Seller Support: Perfect for marketplaces listing the same product from different vendors
- Product Variants: Ideal for products with sizes, colors, or configurations at different prices
- Competitive Pricing Visibility: Shoppers see your competitive price range before clicking
- Higher CTR: Price range snippets attract comparison shoppers actively looking for deals
- Marketplace Optimization: Essential for platforms like Amazon-style marketplaces
The bottom line: if your product has multiple prices or you're aggregating offers from multiple sellers, AggregateOffer Schema is mandatory for proper search display. For foundational product schema knowledge, see our product schema implementation guide.
Understanding AggregateOffer Schema Properties
AggregateOffer Schema extends standard Offer schema with aggregation-specific properties.
Required Properties
- @type: Must be 'AggregateOffer' instead of 'Offer'
- lowPrice: The lowest available price for this product
- highPrice: The highest available price (optional if all offers are same price)
- priceCurrency: Currency code for prices (USD, EUR, GBP, etc.)
- offerCount: Total number of offers being aggregated
Highly Recommended Properties
- availability: Overall availability status across all offers
- offers: Array of individual Offer objects from different sellers
- seller: Information about sellers offering the product
- priceValidUntil: When promotional pricing expires
- url: Link to comparison or product page
Basic AggregateOffer Schema Implementation
Let's start with a simple AggregateOffer Schema for a product with price variations.
Basic Example: Product with Size Variants
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Premium Wireless Headphones",
"image": "https://example.com/images/headphones.jpg",
"description": "High-quality wireless headphones with active noise cancellation and 30-hour battery life.",
"brand": {
"@type": "Brand",
"name": "AudioTech"
},
"offers": {
"@type": "AggregateOffer",
"lowPrice": "199.99",
"highPrice": "249.99",
"priceCurrency": "USD",
"offerCount": 3,
"availability": "https://schema.org/InStock",
"url": "https://example.com/products/wireless-headphones"
}
}
</script>
<!-- This basic AggregateOffer schema includes:
- Product wrapper with basic product info
- AggregateOffer showing price range from $199.99 to $249.99
- offerCount indicating 3 different variants/offers
- Overall availability status
Perfect for products with size/color variants at different prices -->Key Implementation Notes:
- AggregateOffer must be nested within a Product object
- lowPrice and highPrice must be numeric values without currency symbols
- offerCount should reflect actual number of distinct offers or variants
- availability shows overall status—use InStock if ANY variant is available
- Use AggregateOffer when you have 2+ offers at different prices
Intermediate AggregateOffer Schema with Individual Offers
Level up by including individual Offer objects for each seller or variant, showing detailed pricing and availability.
Intermediate Example: Marketplace with Multiple Sellers
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"name": "iPhone 15 Pro - 256GB",
"image": [
"https://example.com/images/iphone-front.jpg",
"https://example.com/images/iphone-back.jpg"
],
"description": "Latest iPhone 15 Pro with 256GB storage, titanium design, and A17 Pro chip.",
"brand": {
"@type": "Brand",
"name": "Apple"
},
"sku": "IPHONE-15-PRO-256",
"gtin13": "0190199559437",
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.8",
"reviewCount": "1247"
},
"offers": {
"@type": "AggregateOffer",
"lowPrice": "999.00",
"highPrice": "1099.00",
"priceCurrency": "USD",
"offerCount": 5,
"availability": "https://schema.org/InStock",
"url": "https://example.com/compare/iphone-15-pro-256gb",
"offers": [
{
"@type": "Offer",
"price": "999.00",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock",
"url": "https://example.com/seller/techdeals/iphone-15-pro",
"seller": {
"@type": "Organization",
"name": "TechDeals Store"
},
"priceValidUntil": "2025-12-31",
"itemCondition": "https://schema.org/NewCondition",
"shippingDetails": {
"@type": "OfferShippingDetails",
"shippingRate": {
"@type": "MonetaryAmount",
"value": "0",
"currency": "USD"
}
}
},
{
"@type": "Offer",
"price": "1029.00",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock",
"url": "https://example.com/seller/electronics-plus/iphone-15-pro",
"seller": {
"@type": "Organization",
"name": "Electronics Plus"
},
"itemCondition": "https://schema.org/NewCondition"
},
{
"@type": "Offer",
"price": "1049.00",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock",
"url": "https://example.com/seller/premium-tech/iphone-15-pro",
"seller": {
"@type": "Organization",
"name": "Premium Tech"
},
"itemCondition": "https://schema.org/NewCondition",
"warranty": {
"@type": "WarrantyPromise",
"durationOfWarranty": {
"@type": "QuantitativeValue",
"value": "2",
"unitCode": "ANN"
}
}
},
{
"@type": "Offer",
"price": "1099.00",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock",
"url": "https://example.com/seller/authorized-reseller/iphone-15-pro",
"seller": {
"@type": "Organization",
"name": "Authorized Apple Reseller"
},
"itemCondition": "https://schema.org/NewCondition"
},
{
"@type": "Offer",
"price": "849.00",
"priceCurrency": "USD",
"availability": "https://schema.org/LimitedAvailability",
"url": "https://example.com/seller/refurb-tech/iphone-15-pro",
"seller": {
"@type": "Organization",
"name": "Certified Refurbished Tech"
},
"itemCondition": "https://schema.org/RefurbishedCondition"
}
]
}
}
</script>
<!-- Intermediate schema adds:
- Individual Offer objects for each seller
- Seller information for each offer
- Different conditions (new vs refurbished)
- Shipping details where applicable
- Warranty information for premium offers
- Direct links to each seller's product page
This transparency helps shoppers compare options -->What Makes This Intermediate:
- Individual Seller Details: Each offer shows which seller is providing it
- Condition Variations: Includes both new and refurbished options
- Shipping Information: Shows free shipping where applicable
- Warranty Details: Premium sellers can highlight extended warranties
- Direct URLs: Each offer links to the specific seller's page
- Price Transparency: Shoppers see all options before clicking through
For more on product schema best practices, see our guide on avoiding common schema mistakes.
Advanced AggregateOffer Schema for Product Variants
Advanced implementations handle complex product variants with different attributes, availability, and pricing structures.
Advanced Example: Product with Color and Size Variants
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Professional Running Shoes - CloudRunner Pro",
"image": [
"https://example.com/images/shoes-blue.jpg",
"https://example.com/images/shoes-black.jpg",
"https://example.com/images/shoes-red.jpg"
],
"description": "Premium running shoes with advanced cushioning technology, available in multiple colors and sizes.",
"brand": {
"@type": "Brand",
"name": "CloudRunner"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.7",
"reviewCount": "892"
},
"offers": {
"@type": "AggregateOffer",
"lowPrice": "139.99",
"highPrice": "169.99",
"priceCurrency": "USD",
"offerCount": 45,
"availability": "https://schema.org/InStock",
"url": "https://example.com/products/cloudrunner-pro",
"priceValidUntil": "2025-12-31",
"offers": [
{
"@type": "Offer",
"price": "139.99",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock",
"url": "https://example.com/products/cloudrunner-pro/blue-size-9",
"itemOffered": {
"@type": "Product",
"name": "CloudRunner Pro - Blue, Size 9",
"color": "Blue",
"size": "9",
"sku": "CRP-BLU-9"
},
"seller": {
"@type": "Organization",
"name": "CloudRunner Official Store"
},
"itemCondition": "https://schema.org/NewCondition"
},
{
"@type": "Offer",
"price": "139.99",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock",
"url": "https://example.com/products/cloudrunner-pro/black-size-10",
"itemOffered": {
"@type": "Product",
"name": "CloudRunner Pro - Black, Size 10",
"color": "Black",
"size": "10",
"sku": "CRP-BLK-10"
},
"seller": {
"@type": "Organization",
"name": "CloudRunner Official Store"
},
"itemCondition": "https://schema.org/NewCondition"
},
{
"@type": "Offer",
"price": "169.99",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock",
"url": "https://example.com/products/cloudrunner-pro/limited-red-size-11",
"itemOffered": {
"@type": "Product",
"name": "CloudRunner Pro - Limited Edition Red, Size 11",
"color": "Red",
"size": "11",
"sku": "CRP-RED-11-LTD",
"additionalProperty": {
"@type": "PropertyValue",
"name": "Edition",
"value": "Limited Edition"
}
},
"seller": {
"@type": "Organization",
"name": "CloudRunner Official Store"
},
"itemCondition": "https://schema.org/NewCondition",
"priceSpecification": {
"@type": "PriceSpecification",
"price": "169.99",
"priceCurrency": "USD",
"valueAddedTaxIncluded": false
}
},
{
"@type": "Offer",
"price": "139.99",
"priceCurrency": "USD",
"availability": "https://schema.org/OutOfStock",
"url": "https://example.com/products/cloudrunner-pro/blue-size-12",
"itemOffered": {
"@type": "Product",
"name": "CloudRunner Pro - Blue, Size 12",
"color": "Blue",
"size": "12",
"sku": "CRP-BLU-12"
},
"seller": {
"@type": "Organization",
"name": "CloudRunner Official Store"
},
"itemCondition": "https://schema.org/NewCondition",
"availabilityStarts": "2026-01-15"
}
]
},
"variesBy": ["color", "size"],
"additionalProperty": [
{
"@type": "PropertyValue",
"name": "Available Colors",
"value": "Blue, Black, Red"
},
{
"@type": "PropertyValue",
"name": "Available Sizes",
"value": "7-13 (US Men's)"
}
]
}
</script>
<!-- Advanced schema includes:
- itemOffered for each variant with specific attributes
- Color and size specifications per variant
- Unique SKU for each configuration
- Limited edition variants at premium pricing
- Out of stock variants with restock dates
- variesBy property indicating variation dimensions
- additionalProperty showing available options
This detail helps shoppers find exact variants they want -->Advanced Features Explained:
- itemOffered: Nested Product objects for each specific variant
- variesBy: Indicates which attributes (color, size) create price/availability variations
- Variant-Specific URLs: Each variant can have its own landing page
- Limited Editions: Premium variants clearly marked with higher pricing
- Restock Information: Out of stock variants show expected availability dates
- Tax Details: priceSpecification can indicate whether tax is included
- Complete Inventory: Shows all 45 combinations even if some are out of stock
When to Use AggregateOffer vs Regular Offer
Choose the right offer type based on your product structure:
Use Regular Offer When:
- Product has single price from single seller
- No variants or all variants have same price
- You're the exclusive seller of the product
Use AggregateOffer When:
- Multiple sellers offering same product at different prices
- Product variants (sizes, colors) have different prices
- Marketplace platform aggregating offers from multiple vendors
- Price comparison site showing options from various retailers
- Product has different conditions (new, refurbished) at different prices
Common AggregateOffer Schema Mistakes
Avoid these errors that prevent proper price range display:
Mistake 1: lowPrice and highPrice Mismatch
The Problem: Setting lowPrice higher than highPrice, or not updating price range when offers change.
The Solution: Ensure lowPrice ≤ highPrice always. Dynamically calculate from actual offers. Update when prices change.
Mistake 2: Incorrect offerCount
The Problem: offerCount doesn't match the actual number of offers in the offers array.
The Solution: Set offerCount to the exact number of distinct offers. Update automatically when offers are added or removed.
Mistake 3: Using AggregateOffer for Single-Price Products
The Problem: Using AggregateOffer when all variants have the same price creates confusing price range display.
The Solution: Only use AggregateOffer when prices actually vary. For same-price variants, use regular Offer with availability aggregation.
Testing Your AggregateOffer Schema
Validate AggregateOffer Schema before deployment:
- Use Google's Rich Results Test to validate syntax
- Verify price range displays correctly (From $X to $Y)
- Check that offerCount matches actual offers
- Ensure lowPrice ≤ highPrice always
- Test individual offer URLs lead to correct pages
- Monitor Search Console for Product enhancement reports
For comprehensive testing guidance, see our schema validation guide.
Related Reading
- How to Implement Product Schema for E-commerce: Boost Sales with Rich Snippets - Master product schema fundamentals
- How to Test Schema Markup: Complete Validation Guide - Ensure error-free implementation
- 10 Schema Markup Mistakes That Are Killing Your SEO - Avoid common AggregateOffer errors
- Schema Markup for WordPress: Complete Guide - Platform-specific implementation
Conclusion: Optimize Price Comparison with AggregateOffer Schema
AggregateOffer Schema is essential for marketplaces, comparison sites, and products with variant pricing. It provides transparency, attracts price-conscious shoppers, and improves how your products appear in search results.
- Use AggregateOffer when products have 2+ prices
- Include individual Offer objects for transparency
- Show seller information for marketplace scenarios
- Handle product variants with itemOffered nested objects
- Keep lowPrice and highPrice dynamically updated
- Test thoroughly and monitor price range display
Don't confuse shoppers with incomplete pricing information. Implement AggregateOffer Schema to show the full price picture and capture comparison shopping traffic.
Ready to generate professional AggregateOffer Schema for your marketplace or variant products? Try SchemaBooster's AI-powered generator to create optimized price comparison schema in seconds. Start free and improve your product listings today.