What price should a free app declare in SoftwareApplication markup?

The Citead team, updated

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.price to the JSON number 0 in an Offer nested under SoftwareApplication. Google defines this value for an app available without payment.

Key facts

  • Google's SoftwareApplication documentation lists offers.price as a required property and says to use 0 when the app is available without payment.
  • Google describes offers as 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 Offer or Demand as the value of offers.
  • Schema.org's Offer type defines price as the offer price of a product and priceCurrency as 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.

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

  1. Google Search Central, "Software app (SoftwareApplication) structured data", 8 September 2026
  2. Schema.org, "SoftwareApplication", accessed 17 October 2026
  3. Schema.org, "Offer", accessed 17 October 2026

Check how a page reads to answer engines. Open the GEO score analyzer

Test a page and see what to fix first

The analysis usually takes less than 10 seconds and needs no account.

400,000+ pages scored in the public benchmark