What does Google say about SEO? /
Quick SEO Quiz

Test your SEO knowledge in 5 questions

Less than a minute. Find out how much you really know about Google search.

🕒 ~1 min 🎯 5 questions

Official statement

When including ticket information for an event, use the 'aggregate offer' element in the event's 'offers' property. Indicate the price and availability.
1:07
🎥 Source video

Extracted from a Google Search Central video

⏱ 1:07 💬 EN 📅 07/12/2011 ✂ 3 statements
Watch on YouTube (1:07) →
Other statements from this video 2
  1. Les extraits enrichis d'événements suffisent-ils vraiment à booster votre visibilité dans la SERP ?
  2. 0:34 Comment structurer correctement le lieu d'un événement en schema.org pour Google ?
📅
Official statement from (14 years ago)
TL;DR

Google recommends using the aggregate offer element within the offers property of events to accurately display ticketing information. This structure allows for grouping multiple price offers while indicating price and availability in a way that the engine can utilize. The goal: to appear in enriched event results without being penalized for incomplete or inconsistent data.

What you need to understand

What is the difference between offer and aggregate offer?

The offer type represents a single offer with a fixed price and specific availability. It is perfect for a standard product sold at a given price. The aggregate offer type, on the other hand, groups multiple offers under one entity: different seating categories, various price ranges, or multiple vendors offering the same event.

For a concert with student, full, and VIP pricing, the aggregate offer can specify the complete price range (lowPrice/highPrice) and indicate overall availability. Google uses this data to create more informative rich results, displaying “Starting at €25” rather than an isolated price that does not reflect the actual offer.

Why does Google require price and availability?

These two properties feed into Google’s search filters and event interfaces. Without a price, it is impossible to display “free events” or sort by budget. Without availability, Google cannot indicate “Sold Out” or “Last Tickets”, critical information for users looking to buy now.

Crawlers check for consistency between the markup and the visible content. A price indicated in schema.org but not visible on the page triggers a warning in Search Console. An “InStock” availability while the page shows “Sold Out” creates an inconsistency that can invalidate the rich snippet. Google has been testing this consistency since the tightening of guidelines on structured data.

What makes this directive different from a simple recommendation?

Google uses prescriptive language here: “use the element” and “indicate price and availability”. It is not a “you may” but a “you must”. The absence of these elements does not prevent the event page from being indexed, but it blocks eligibility for enriched event results in the SERP.

Field tests show that an Event without a properly marked offer or aggregate offer never appears in the enriched events module, even with otherwise perfect Event markup. This is a mandatory eligibility criterion, not optional. Search Console explicitly indicates events without a valid offer as “not eligible for enriched results”.

  • Aggregate offer groups multiple prices or seating categories under a single structured entity
  • Price and availability are mandatory properties for eligibility in enriched event results
  • Consistency between schema.org markup and visible content is checked by Google crawlers
  • An Event without a valid offer will index the page but never activate the rich snippets dedicated to events
  • Search Console explicitly signals gaps in the Rich Results report

SEO Expert opinion

Does this directive truly reflect observed practices?

Among the thousands of events analyzed in Search Console, the correlation between correctly marked aggregate offer and appearance in enriched results is almost perfect. Events that pass Search Console validation but omit price or availability never appear in Google’s events module, even with high organic traffic and strong domain authority.

However, Google remains silent on thresholds: how many offers minimum for an aggregate offer to be considered valid? What granularity of availability is utilized (InStock/SoldOut/PreOrder is enough, or does Google expect specific quantities)? Tests show that an aggregate offer with a single child works technically, but it is likely suboptimal. [To be verified]: Does Google prefer aggregate offers containing at least 3 distinct offers to trigger rich snippets?

What pitfalls should you avoid during implementation?

The most common mistake: using aggregate offer with identical prices for all sub-offers. Google detects this redundancy and may consider the markup artificial. If all seats are at the same price, a simple offer is sufficient. Aggregate offer only makes sense if it reflects a true price diversity.

The second classic error: indicating an availability of “InStock” while the site requires a login to see actual tickets. Google crawls in unauthenticated mode. If the price or availability is only visible after login, the markup will be invalidated. The rule: everything marked must be publicly crawlable.

Note: aggregate offer without defined lowPrice or highPrice generates a blocking error in Search Console. These properties are not optional when using an aggregate offer. A simple offer without price is also rejected.

In what cases can this structure be counterproductive?

If the event offers dynamic pricing like yield management (prices that fluctuate in real-time based on demand), maintaining a consistent aggregate offer becomes complex. The lowPrice can change every hour. An approximate synchronization generates inconsistencies detected by Google, who invalidates the rich snippet.

For free events without a formal ticketing system, some sites add an offer with price=0 and availability=InStock. It works technically, but Google might consider this structure as over-optimization if the event does not have a real reservation system. An Event without any offers indexes correctly and can appear in Maps or Discover, just not in the enriched event results of the standard SERP. A strategic choice must be made according to the priority channel.

Practical impact and recommendations

What should you implement on your event pages?

Add a schema.org type Event block containing an offers property with an AggregateOffer object. Define at least lowPrice, highPrice, priceCurrency (ISO 4217, e.g. EUR), and availability (InStock, SoldOut, PreOrder). If multiple categories of tickets exist, list them in the offers property of the AggregateOffer as an array of individual Offer objects.

Ensure that each price listed in the markup corresponds to a visible price on the page for a non-logged-in user. Google compares the content of the JSON-LD or microdata with the rendered DOM. A difference of more than 10% between marked price and displayed price triggers a warning. Test with the rich results test tool and validate in Search Console under Rich Results > Events.

What errors block eligibility for enriched results?

The absence of price or availability generates a “Missing required field” error that completely invalidates the rich snippet. A missing or incorrect priceCurrency (e.g. “euros” instead of “EUR”) also causes a rejection. The value of availability must be a valid schema.org term: InStock, OutOfStock, SoldOut, PreOrder, PreSale, Discontinued. Custom terms (“Available”, “Sold Out”) are not recognized.

Using offer in singular while multiple prices exist creates a semantic inconsistency. Google will then display a single price that does not reflect reality, or worse, completely ignore the markup. Conversely, aggregate offer with a single price works but is redundant: it’s better to use a simple offer for clarity. Follow the logic: one price = offer, multiple prices = aggregate offer.

How can you verify that your implementation is correct and utilized by Google?

Use Google’s rich results test tool on your event URLs. It detects syntax errors, missing properties, and simulates the rendering of the rich snippet. Complement this with Search Console: the Rich Results > Events section lists all detected pages, those validated, and those with errors or warnings.

Monitor impressions in the rich results through the Performance report filtered on “Appearance in Search Results” > “Enriched Event Results”. If your Event pages never appear there despite validated markup, it means Google does not consider them relevant for the detected queries, or the competition for those queries is too strong. The markup is a necessary condition but not sufficient for display.

  • Implement schema.org Event with offers of type AggregateOffer if multiple prices exist
  • Mandatory fields: lowPrice, highPrice, priceCurrency, availability in AggregateOffer
  • Check strict consistency between marked prices and displayed prices visible without login
  • Use official schema.org values for availability (InStock, SoldOut, etc.)
  • Test each page with the rich results test tool before production
  • Monitor the Rich Results > Events report in Search Console for errors and warnings
Proper integration of aggregate offer for ticketed events requires a permanent synchronization between actual inventory, displayed prices, and structured markup. Sites managing hundreds of events simultaneously with dynamic pricing can quickly end up with inconsistencies that are hard to trace manually. An SEO agency specializing in structured data can audit your current implementation, automate the generation of coherent markup from your CMS or ticketing service, and set up continuous monitoring to detect anomalies before they impact your visibility in enriched results.

❓ Frequently Asked Questions

Peut-on utiliser offer simple au lieu d'aggregate offer si un seul tarif existe ?
Oui, c'est même recommandé. Aggregate offer n'a de sens que s'il regroupe plusieurs offres tarifaires distinctes. Un tarif unique doit utiliser offer simple avec price et availability directement renseignés.
Google exploite-t-il la propriété validFrom pour afficher les dates de mise en vente ?
Les tests montrent que Google affiche parfois "En vente à partir du..." dans les résultats enrichis si validFrom est renseigné, mais ce n'est pas systématique. Cette propriété reste optionnelle et n'impacte pas l'éligibilité au rich snippet.
Faut-il dupliquer le prix dans le HTML visible et dans le balisage schema.org ?
Oui, absolument. Google vérifie la cohérence entre le prix balisé et le prix affiché dans le contenu crawlable. Une différence significative invalide le résultat enrichi, même si le balisage est techniquement correct.
Que se passe-t-il si la disponibilité change entre le crawl et l'affichage du rich snippet ?
Google met à jour les résultats enrichis avec un délai variable (quelques heures à quelques jours). Si un événement passe à SoldOut, mettez à jour le balisage immédiatement. Search Console peut signaler une incohérence temporaire, mais elle se résout au prochain crawl.
Les événements gratuits doivent-ils avoir un balisage offer avec price 0 ?
Ce n'est pas obligatoire pour l'indexation. Un Event sans offers indexe normalement. Par contre, pour apparaître dans les résultats enrichis événements avec la mention "Gratuit", un offer avec price=0, priceCurrency=EUR et availability=InStock améliore les chances d'affichage.
🏷 Related Topics
E-commerce

🎥 From the same video 2

Other SEO insights extracted from this same Google Search Central video · duration 1 min · published on 07/12/2011

🎥 Watch the full video on YouTube →

Related statements

💬 Comments (0)

Be the first to comment.

2000 characters remaining
🔔

Get real-time analysis of the latest Google SEO declarations

Be the first to know every time a new official Google statement drops — with full expert analysis.

No spam. Unsubscribe in one click.