In short. A free app uses the JSON number 0 for offers.price inside its SoftwareApplication Offer.
Definition: As of 17 October 2026, a free app should set
offers.priceto the JSON number0in anOffernested underSoftwareApplication. Google defines this value for an app available without payment.
Key facts
- Google's SoftwareApplication documentation lists
offers.priceas a required property and says to use0when the app is available without payment. - Google describes
offersas an offer to sell the app, with the price applying to a specific app instance when a marketplace supplies the markup. - Schema.org's SoftwareApplication type accepts
OfferorDemandas the value ofoffers. - Schema.org's Offer type defines
priceas the offer price of a product andpriceCurrencyas the currency of that price. - Schema.org's price guidance uses standard currency formats and a full stop for a decimal point.
What value does a free app use?
Google's required property definition gives a direct rule: if the app is available without payment, set offers.price to 0. The value belongs inside an Offer object. The documented fragment is:
"offers": {
"@type": "Offer",
"price": 0
}
The zero is the declared offer price for the app instance. The same documentation presents offers.price as the price of the app and says that, for developers, offers can indicate marketplaces carrying the application. For an app with a price greater than 0, Google recommends adding offers.priceCurrency; the free example does not show that property.
Does the value need a currency?
Schema.org's SoftwareApplication definition lists offers as a property whose expected types include Offer and Demand. In this case, use Offer because the markup describes the app's availability to users. Schema.org's Offer definition describes price as the offer price and permits a Number or Text value for that property.
The Google free-app example uses the JSON number 0. It does not show priceCurrency beside that zero. Schema.org describes priceCurrency as the currency of the price and recommends standard formats such as ISO 4217 codes instead of ambiguous symbols. That guidance matters when an offer has a monetary amount. Google's SoftwareApplication page specifically discusses adding priceCurrency for an app whose price is greater than 0.
How should the markup be checked?
Google's SoftwareApplication instructions say to place the markup in the body of a web page, include the required properties, validate it with the Rich Results Test, and use URL Inspection after deployment. The page should be accessible to Google and should not be blocked by robots.txt, a noindex tag, or login requirements.
The same instructions say that the Rich Results Test can flag critical and non-critical issues, while URL Inspection tests how Google sees the page. They also state that Google may take several days to find and crawl a page after publication. The displayed app information and the structured data therefore need to describe the same free offer.
Related terms
- Offer structured data
- What review or rating data does Google's software app markup require?
- How do required and recommended structured data properties differ?
- Can Google read JSON-LD in the body of a page?
FAQ
Should the value be 0 or a currency amount?
Use the JSON number 0 for an app available without payment. Google's documented free-app example uses 0 inside an Offer.
Should a free app include priceCurrency?
Google's free example contains offers.price set to 0 and does not show priceCurrency. Its currency recommendation is stated for an app with a price greater than 0.
What if the app has paid in-app purchases or a subscription?
Google's SoftwareApplication definition specifies the 0 rule for an app available without payment. It does not define in-app purchase or subscription encoding in that property, so those cases remain an open point for this entry.
Sources
- Google Search Central, "Software app (SoftwareApplication) structured data", 8 September 2026
- Schema.org, "SoftwareApplication", accessed 17 October 2026
- Schema.org, "Offer", accessed 17 October 2026
Check how a page reads to answer engines. Open the GEO score analyzer