In short. Use price 0 and include the offer's three-letter ISO 4217 priceCurrency code.
Definition: For an event with admission that has no payment, fees or service charges, Google Search Central documents an
Offerwithpriceset to0. ItspriceCurrencyvalue is a three-letter ISO 4217 currency code, even though the price is zero.
Key facts
- Google places
offersin the Event structured data table as a nestedOffer, with one offer for each ticket type. Google's Event documentation places this field among recommended properties. - For an event available without payment, fees or service charges, Google's
offers.priceguidance says to setpriceto0. - Google's
offers.priceCurrencyguidance defines the value as a three-letter ISO 4217 currency code. - Schema.org defines
priceas the offer price of a product or a price component attached toPriceSpecificationand its subtypes. ItspriceCurrencyproperty describes the currency of that price.
What should the JSON-LD contain?
Use a nested Offer under the event's offers property. The free admission value is numeric 0. The currency code remains a separate string property, because the code identifies the currency associated with the offer even when the amount is zero.
"offers": {
"@type": "Offer",
"price": 0,
"priceCurrency": "USD"
}
This combines Google's documented price and priceCurrency examples with the documented zero value for admission without payment. Replace USD with the three-letter ISO 4217 code for the currency used by the event page. Schema.org's Offer guidance says to use priceCurrency with standard formats instead of putting an ambiguous symbol such as $ in the price value.
If an event has separate ticket types, create one nested Offer for each type. Each nested offer can carry the price that applies to that ticket type. The Google page gives the one-offer-per-ticket-type rule, while the zero-price instruction applies to an event available without payment, fees or service charges.
Is priceCurrency a required property for a free Event?
Google's page separates Event properties into a Required properties table and a Recommended properties table. It lists location, location.address, name and startDate as required properties. It lists offers, offers.price and offers.priceCurrency in the recommended table. Therefore, the page does not present priceCurrency as a top-level required Event property.
When an offers object is present, include priceCurrency with the offer's currency code. Schema.org describes the property as the currency of the price and gives USD as an ISO 4217 example. The currency field remains a machine-readable currency code alongside the numeric zero.
What else should be checked?
The price value represents the lowest available ticket price and includes service charges and fees, according to Google's Event documentation. Update it when prices change or tickets sell out. For a wholly free event, the documented condition for 0 is the absence of payment, fees and service charges.
Schema.org's Offer definition allows price to be a Number or Text, while Google's Event property table identifies offers.price as a Number. The JSON-LD example above follows Google's Event type for this use. Schema.org also recommends a decimal point rather than a comma for decimal values and permits machine-readable values in Microdata and RDFa through a content attribute.
Related terms
- Offer structured data
- Structured data
- How do I mark a postponed event in structured data?
- How do I mark an online event's attendance mode and location?
FAQ
Should a free ticket use the text free as its price?
No. Google's Event documentation specifies 0 for an event available without payment, fees or service charges. Schema.org describes price as a Number or Text, but Google's Event property table identifies offers.price as a Number.
Which currency should a free event use?
Use the three-letter ISO 4217 code for the currency associated with the offer. Google's example uses USD; the code is still separate from the numeric 0.
Should a free event omit the offers object?
Google documents offers as a nested Offer, with one offer for each ticket type, and documents the zero-price value for admission without payment. The page places these fields in its recommended properties table, so it does not state that every Event must contain offers.
Sources
- Google Search Central, "Event structured data", updated 8 September 2026
- Schema.org, "Offer", undated
Check how a page reads to answer engines. Open the GEO score analyzer