AggregateOffer Schema – Complete Guide for Product Pricing & Rich Results
AggregateOffer schema markup is essential for e-commerce sites and marketplaces that aggregate pricing from multiple sellers. It enables rich shopping results in Google Search, showing price ranges and availability across different retailers.
What is AggregateOffer Schema?
AggregateOffer schema describes aggregated pricing information for products or services available from multiple sellers. It tells search engines about price ranges, availability, and seller information across different retailers or service providers.
Why AggregateOffer Schema Matters
AggregateOffer schema is crucial for marketplaces and comparison shopping sites because it enables rich product results in Google Search, showing price ranges and helping users find the best deals across multiple sellers.
The key insight: AggregateOffer transforms individual product listings into aggregated shopping experiences that help users compare prices and find products across multiple retailers.
What AggregateOffer Schema Includes
SEO Benefits You Get
AggregateOffer Schema Implementation
Complete AggregateOffer Schema Example
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"@id": "https://example.com/products/wireless-headphones/#product",
"name": "Premium Wireless Headphones",
"description": "High-quality wireless headphones with active noise cancellation...",
"brand": {
"@type": "Brand",
"name": "AudioTech"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.5",
"ratingCount": "1289"
},
"offers": {
"@type": "AggregateOffer",
"@id": "https://example.com/products/wireless-headphones/#offers",
"lowPrice": "149.99",
"highPrice": "299.99",
"priceCurrency": "USD",
"offerCount": 12,
"availability": "https://schema.org/InStock",
"priceValidUntil": "2025-12-31",
"seller": {
"@type": "Organization",
"@id": "https://example.com/#organization",
"name": "TechStore"
},
"shippingDetails": {
"@type": "OfferShippingDetails",
"shippingRate": {
"@type": "MonetaryAmount",
"value": "0",
"currency": "USD"
},
"deliveryTime": {
"@type": "ShippingDeliveryTime",
"handlingTime": {
"@type": "QuantitativeValue",
"minValue": 1,
"maxValue": 2,
"unitText": "DAY"
}
}
}
}
}
</script>Service AggregateOffer Example
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Service",
"name": "Professional Web Design Services",
"description": "Custom website design and development services for businesses.",
"provider": {
"@type": "Organization",
"name": "WebDesign Pro"
},
"offers": {
"@type": "AggregateOffer",
"lowPrice": "2500",
"highPrice": "15000",
"priceCurrency": "USD",
"offerCount": 8,
"priceSpecification": [
{
"@type": "UnitPriceSpecification",
"price": "2500",
"priceCurrency": "USD",
"referenceQuantity": {
"@type": "QuantitativeValue",
"value": "1",
"unitText": "Basic Website"
}
}
]
}
}
</script>Required vs Recommended Properties
Required Properties
- •
lowPrice- Minimum price in range - •
highPrice- Maximum price in range - •
priceCurrency- Currency code
Recommended Properties
- •
offerCount- Number of offers aggregated - •
availability- Overall availability status - •
seller- Primary seller information - •
priceValidUntil- Price validity date
AggregateOffer Schema Best Practices
Content & Accuracy
Advanced Features
Common AggregateOffer Schema Mistakes
❌ Incorrect Price Ranges
Mistake: Using artificially wide price ranges or including discontinued products.
Fix: Base price ranges on currently available, legitimate offers from active sellers.
❌ Outdated Offer Counts
Mistake: Not updating offerCount when products go out of stock or new offers are added.
Fix: Maintain accurate offer counts and update them regularly based on real inventory data.
❌ Missing Seller Information
Mistake: Using generic seller information that doesn't identify the marketplace or aggregator.
Fix: Clearly identify the marketplace or comparison site as the seller, with proper organization details.
❌ Inconsistent Currency
Mistake: Mixing different currencies in price ranges or not specifying currency clearly.
Fix: Use consistent currency codes (ISO 4217) for all price information in the aggregate offer.
Validate Your AggregateOffer Schema
Testing Tools & Resources
Official Google Tools
Commerce Testing
- • Test price ranges appear in search
- • Verify offer count accuracy
- • Check shipping details display
- • Validate seller information
Additional JSON-LD Examples
E-commerce Marketplace Product
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"@id": "https://example.com/products/wireless-headphones/#product",
"name": "Premium Wireless Headphones",
"image": "https://example.com/products/wireless-headphones-main.jpg",
"description": "High-quality wireless headphones with active noise cancellation, 30-hour battery life, and premium sound quality.",
"brand": {
"@type": "Brand",
"name": "AudioTech"
},
"category": "Electronics > Audio > Headphones",
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.3",
"ratingCount": "847",
"bestRating": "5",
"worstRating": "1"
},
"offers": {
"@type": "AggregateOffer",
"@id": "https://example.com/products/wireless-headphones/#aggregate-offer",
"lowPrice": "89.99",
"highPrice": "249.99",
"priceCurrency": "USD",
"offerCount": 12,
"availability": "https://schema.org/InStock",
"seller": {
"@type": "Organization",
"name": "TechMarketplace"
},
"priceValidUntil": "2025-12-31",
"shippingDetails": {
"@type": "OfferShippingDetails",
"shippingRate": {
"@type": "MonetaryAmount",
"value": "0",
"currency": "USD"
},
"shippingDestination": {
"@type": "DefinedRegion",
"addressCountry": "US"
},
"deliveryTime": {
"@type": "ShippingDeliveryTime",
"handlingTime": {
"@type": "QuantitativeValue",
"minValue": 1,
"maxValue": 3,
"unitText": "DAY"
},
"transitTime": {
"@type": "QuantitativeValue",
"minValue": 2,
"maxValue": 7,
"unitText": "DAY"
}
}
},
"hasMerchantReturnPolicy": {
"@type": "MerchantReturnPolicy",
"applicableCountry": "US",
"returnPolicyCategory": "https://schema.org/MerchantReturnFiniteReturnWindow",
"merchantReturnDays": 30,
"returnMethod": "https://schema.org/ReturnByMail",
"returnFees": "https://schema.org/FreeReturn"
}
},
"additionalProperty": [
{
"@type": "PropertyValue",
"name": "Battery Life",
"value": "30 hours"
},
{
"@type": "PropertyValue",
"name": "Connectivity",
"value": "Bluetooth 5.0"
},
{
"@type": "PropertyValue",
"name": "Weight",
"value": "250g"
}
]
}
</script>Service Marketplace Pricing
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Service",
"@id": "https://example.com/services/house-cleaning/#service",
"name": "Professional House Cleaning Service",
"description": "Comprehensive house cleaning services including deep cleaning, regular maintenance, and specialized cleaning for homes and apartments.",
"serviceType": "Home Cleaning",
"areaServed": {
"@type": "City",
"name": "San Francisco"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.6",
"ratingCount": "1250",
"bestRating": "5",
"worstRating": "1"
},
"offers": {
"@type": "AggregateOffer",
"@id": "https://example.com/services/house-cleaning/#aggregate-offer",
"lowPrice": "120.00",
"highPrice": "350.00",
"priceCurrency": "USD",
"offerCount": 8,
"availability": "https://schema.org/InStock",
"priceSpecification": {
"@type": "PriceSpecification",
"price": "120-350",
"priceCurrency": "USD",
"valueAddedTaxIncluded": false,
"description": "Price range for standard 3-bedroom house cleaning"
},
"seller": {
"@type": "Organization",
"name": "CleanHome Services Marketplace"
},
"priceValidUntil": "2025-12-31",
"eligibleQuantity": {
"@type": "QuantitativeValue",
"value": "1",
"unitText": "service"
},
"additionalProperty": [
{
"@type": "PropertyValue",
"name": "Service Duration",
"value": "2-4 hours"
},
{
"@type": "PropertyValue",
"name": "Cancellation Policy",
"value": "24-hour cancellation required"
},
{
"@type": "PropertyValue",
"name": "Payment Methods",
"value": "Credit card, cash, online payment"
}
]
},
"hasOfferCatalog": {
"@type": "OfferCatalog",
"name": "Cleaning Services",
"itemListElement": [
{
"@type": "Offer",
"itemOffered": {
"@type": "Service",
"name": "Deep Cleaning",
"description": "Thorough cleaning of all surfaces and hard-to-reach areas"
}
},
{
"@type": "Offer",
"itemOffered": {
"@type": "Service",
"name": "Regular Cleaning",
"description": "Standard weekly or bi-weekly cleaning maintenance"
}
},
{
"@type": "Offer",
"itemOffered": {
"@type": "Service",
"name": "Move-in/Move-out Cleaning",
"description": "Specialized cleaning for property transitions"
}
}
]
},
"provider": {
"@type": "Organization",
"@id": "https://example.com/#organization",
"name": "CleanHome Services Marketplace"
}
}
</script>SEO & Rich Results Notes
SEO Benefits
AggregateOffer schema enhances marketplace and multi-seller visibility:
- • Rich product listings with price ranges and seller counts
- • Enhanced marketplace search result appearance
- • Improved comparison shopping features
- • Better targeting for price-conscious search queries
- • Enhanced product discovery and availability signals
Rich Results Eligibility
AggregateOffer schema enables enhanced marketplace displays:
- • Product rich snippets with price ranges
- • "from $X" pricing displays in search results
- • Seller count and availability information
- • Enhanced Google Shopping integration
- • Price comparison features and displays
Reference: Google's Search Central recommends AggregateOffer markup for marketplace and multi-seller product listings.
Important Warnings
- Price Accuracy: Price ranges must reflect actual current offers. Misleading price information can result in rich result removal and trust issues.
- Availability Truthfulness: offerCount and availability must accurately represent current selling conditions. Inflated seller counts harm user experience.
- Currency Consistency: All prices must use the same currency. Mixed currencies can cause display issues and user confusion.
- Regular Updates: Price ranges and availability change frequently in marketplaces. Regular updates are essential for maintaining rich result eligibility.
Official Documentation
- Schema.org: AggregateOffer specification
- Google Search Central: Product markup guide
- Rich Results Test: Validate AggregateOffer markup
Frequently Asked Questions
What is AggregateOffer schema used for?
AggregateOffer schema describes aggregated pricing information across multiple sellers or offers for the same product or service. It provides price ranges and availability summaries when products are sold by multiple vendors.
How do I add AggregateOffer schema to my product pages?
Add JSON-LD structured data with offers property containing lowPrice, highPrice, and offerCount. Include priceCurrency and availability information for comprehensive pricing data.
What are the required properties for AggregateOffer schema?
Required properties include priceCurrency and at least one of: lowPrice/highPrice (for ranges) or price (for single aggregated price). offerCount is recommended for multiple offers.
When should I use AggregateOffer vs individual Offer schemas?
Use AggregateOffer when showing combined pricing from multiple sellers (like marketplaces). Use individual Offer schemas when displaying specific offers from single sellers with detailed terms.
Does AggregateOffer schema enable rich results?
Yes! AggregateOffer enables rich product listings with price ranges and seller counts in Google Shopping and product search results, significantly improving marketplace visibility.
How do I handle different currencies in AggregateOffer?
Specify priceCurrency for the primary currency. For international marketplaces, consider separate AggregateOffer instances for different currency regions or use conversion information.
Can AggregateOffer include shipping information?
Yes, include shippingDetails with shipping rates and regions. However, for multiple sellers with different shipping policies, focus on common shipping information or omit if highly variable.
What's the difference between AggregateOffer and Product with multiple offers?
AggregateOffer provides summary pricing across sellers, while Product with multiple offers shows detailed individual seller information. Use AggregateOffer for marketplace overviews.
How do I specify availability in AggregateOffer?
Use availability with values like "InStock", "OutOfStock", or "PreOrder". Include offerCount to show how many sellers have the item available.
Can AggregateOffer work for services?
Yes! AggregateOffer works for any service with multiple providers, such as freelance platforms, repair services, or consulting marketplaces. Include service-specific pricing information.
How do I handle price ranges in AggregateOffer?
Use lowPrice for minimum price and highPrice for maximum price across all offers. Ensure prices reflect actual current offers to maintain accuracy.
Does AggregateOffer improve marketplace SEO?
Yes, AggregateOffer significantly enhances marketplace visibility by enabling rich product listings with price ranges and seller counts, improving click-through rates and conversion tracking.
How often should I update AggregateOffer schema?
Update when pricing changes, new offers are added, or availability changes. Keep price ranges and offer counts current to maintain search result accuracy.
Related Schema Types
Related: Product, Offer, Organization, LocalBusiness, Review, AggregateRating