SoftwareApplication Schema

How to implement SoftwareApplication schema (schema.org/SoftwareApplication) for Google's Software App rich result — the required name/offers/rating fields, the applicationCategory enum, choosing WebApplication vs MobileApplication, when to use it instead of Product schema, and the genuine-rating rules that keep you out of trouble.

First published: Jul 1, 2026 · Last updated: Jul 18, 2026 · Advanced
demand #24 in Structured Data#54 in On-Page#243 in Technical SEO#339 on the site

SoftwareApplication schema (schema.org/SoftwareApplication) is structured data that tells search engines an app's name, category, operating system, price, and rating so the page can qualify for Google's Software App rich result — the star rating, review count, price, and OS shown in the snippet. Google's required fields are narrow: name, offers (with a price; set it to 0 for free apps), and at least one of aggregateRating or review; applicationCategory and operatingSystem are recommended. The two things most guides get wrong: they present the whole schema.org property list (downloadUrl, fileSize, screenshot) as if it affects the rich result when it doesn't, and they blur SoftwareApplication with Product schema — but they're separate types with separate rich-result surfaces, so a paid SaaS or web app should generally use SoftwareApplication (or a WebApplication/MobileApplication subtype), not Product. And the ratings have to be genuine and user-sourced; fabricated or incentivized stars risk a manual action, not just a validation warning.

TL;DR — schema.org/SoftwareApplication markup (usually JSON-LD) makes an app or software page eligible for Google’s Software App rich result (rating, review count, price, OS in the snippet). Google’s required fields are narrow: name, offers (with price; 0 for free apps, priceCurrency recommended once price

0), and at least one of aggregateRating or review. applicationCategory (from a fixed enum) and operatingSystem are recommended. The rest of the large schema.org property list (downloadUrl, fileSize, screenshot, permissions…) is spec-valid but SEO-inert for this result. Prefer the most specific subtype (WebApplication, MobileApplication, VideoGame) over generic SoftwareApplication. It’s a separate type from Product with a separate rich-result surface — a paid SaaS/web app should generally use SoftwareApplication, not Product. Ratings must be genuine and user-sourced; fabricated or misleading review markup violates Google’s structured-data policies.

Evidence for this claim Schema.org SoftwareApplication describes a software application and includes application category, operating system, offers, and review metadata. Scope: Schema.org vocabulary. Confidence: high · Verified: Schema.org: SoftwareApplication Evidence for this claim Google's software app feature requires name, offers.price, and either aggregateRating or review; markup must describe a real app visible on the page. Scope: Current Google Software app structured-data requirements and policies. Confidence: high · Verified: Google Search Central: Software app structured data

What SoftwareApplication schema unlocks

The concrete payoff is the Software App rich result — Google’s enhanced listing for app and software pages that can surface the star rating, review count, price, and supported operating system in the snippet. schema.org describes the type itself in a single line — “A software application.” — and Google’s Search Central docs turn that into a specific eligibility spec for the rich result. The whole point of getting this markup right is to be eligible for that snippet; valid markup only puts you in the running, it doesn’t guarantee display — and it doesn’t promise downloads, rankings, CTR, star visibility, or AI-search citations either. Google says it plainly: “Google does not guarantee that your structured data will show up in search results, even if your page is marked up correctly.”

Google’s requirements here are refreshingly narrow — narrower than most third-party guides make them look. Here’s the actual split from Google’s Software App docs:

PropertyStatusNotes
nameRequired”The name of the app.”
offersRequired”An offer to sell the app.” Use price: 0 for free apps.
aggregateRating or reviewRequired (one of)An average score or a single review — at least one.
applicationCategoryRecommended”The type of app (for example, BusinessApplication or GameApplication).”
operatingSystemRecommended”The operating system(s) required to use the app (for example, Windows 7, OSX 10.6, Android 1.6).”
priceCurrency (in offers)Recommended (when price > 0)Google will try to infer currency if you omit it, but set it.

That’s the entire eligibility surface. name + offers + one-of-rating/review, with applicationCategory and operatingSystem as the two recommendations worth adding every time.

Handling free apps vs. paid apps

Google is explicit about free apps: “If the app is available without payment, set offers.price to 0.” Don’t drop offers entirely because the app is free — offers is on the required list; a free app should include it with price: 0, not omit it. And for paid apps: “If the app has a price greater than 0, we recommend also including the offers.priceCurrency property (or Google will try to find the right currency).” So set priceCurrency to a valid ISO 4217 code like USD once you’re charging anything.

Evidence for this claim offers.price is required; use 0 for an app available without payment, and for price above 0 Google recommends priceCurrency or may infer it. Scope: structured data and commerce Confidence: high · Verified: SoftwareApplication structured data

The applicationCategory enum — and the quiet mistake it causes

applicationCategory only accepts values from Google’s documented list. The accepted values are:

GameApplication · SocialNetworkingApplication · TravelApplication · ShoppingApplication · SportsApplication · LifestyleApplication · BusinessApplication · DesignApplication · DeveloperApplication · DriverApplication · EducationalApplication · HealthApplication · FinanceApplication · SecurityApplication · BrowserApplication · CommunicationApplication · DesktopEnhancementApplication · EntertainmentApplication · MultimediaApplication · HomeApplication · UtilitiesApplication · ReferenceApplication

You can also use the schema.org URL form (e.g. https://schema.org/GameApplication), but the plain text string is standard practice. Here’s the trap: a value outside that list — say a descriptive "Productivity Software" — isn’t a hard error. Google just silently ignores it, so the rest of your markup validates and you never see a warning, but the field isn’t doing anything. That quiet no-op is one of the most common mistakes I’d expect to find auditing app pages.

Choose the most specific subtype

SoftwareApplication has several more specific subtypes in schema.org — its “More specific Types” are MobileApplication, WebApplication, VideoGame, OperatingSystem, and RuntimePlatform. Where one fits, use it instead of the generic type:

  • WebApplication — a browser-based SaaS tool (this is the common case for the audience I write for).
  • MobileApplication — a native iOS/Android app.
  • VideoGame — a game, but see the caveat belowVideoGame alone isn’t enough for the rich result.

Google’s Software App eligibility docs treat SoftwareApplication, MobileApplication, and WebApplication interchangeably, so specificity costs you nothing in eligibility for those three and adds precision. VideoGame is the one exception: Google is explicit that “Google doesn’t show a rich result for Software Apps that only have the VideoGame type. To make sure that your Software App is eligible for display as a rich result, co-type the VideoGame type with another type” — Google’s own example co-types it with MobileApplication, e.g. "@type": ["VideoGame", "MobileApplication"]. So a game page needs VideoGame plus another eligible application type in the same @type array, not VideoGame on its own. If you run a SaaS product, WebApplication is usually the honest, precise choice.

SoftwareApplication vs. Product schema — the disambiguation that matters

This is the confusion I most want to clear up, because SaaS marketers reach for Product schema reflexively — the app is “a thing you buy,” so Product feels right. It usually isn’t the right pick. The right call follows what the page’s entity actually is and which Google feature you’re targeting — not a blanket rule that every SaaS, boxed-software, subscription, or app-marketplace page defaults to one type.

SoftwareApplication and Product are separate schema.org types with separate required/recommended fields and separate Google rich-result surfaces:

  • SoftwareApplication cares about operatingSystem and applicationCategory, and feeds the Software App rich result.
  • Product cares about gtin/mpn/sku/brand, availability, shipping and returns, and feeds product snippets and merchant listings — surfaces built around physical, purchasable goods and (optionally) a Google Merchant Center feed.

Those Product-side conventions — GTIN/MPN catalog matching, shipping details, merchant feeds — don’t map cleanly onto software. A downloadable app or a SaaS subscription doesn’t have a UPC or a shipping policy. So for installable or runnable software with an OS and a category, use SoftwareApplication (or a subtype). Reach for Product schema only when the item genuinely behaves like a generic sellable good — for instance boxed software sold like a retail SKU, or a subscription you’re deliberately modeling as a plain purchasable product rather than as the application itself. Picking the wrong type means Google checks for fields your markup doesn’t have and misses the ones that actually drive the result you want. (The Product schema article on this site goes deep on that side; this is the app-native counterpart to it.)

These aren’t always forced either/or nodes, either. Google’s own worked example for VideoGame co-types it with MobileApplication in the same @type array rather than picking one — proof that a single entity can carry more than one type when it genuinely is more than one thing. The same logic applies here: if a page’s entity truthfully is both an application and a generically sellable good, co-typing (or a @graph with both nodes) can be the honest answer. Don’t reach for that as a default hedge — do it because the entity actually supports both, and document why.

Reviews and ratings — the eligibility rules that actually matter

Because aggregateRating/review is part of the required set, the ratings rules are load-bearing here, and Google incorporates its general Review snippet guidelines by reference: the aggregateRating and review docs both say to “Follow the Review snippet guidelines and list of required and recommended” properties. The rules that bite:

  • Ratings must come from real users. Google: “Ratings must be sourced directly from users.”
  • Don’t pull in other sites’ ratings. Google: “Don’t aggregate reviews or ratings from other websites.”
  • If you show individual reviews, also show an aggregate. Google: “If you include multiple individual reviews, also include an aggregate rating of the individual reviews.”

One nuance worth getting right, because it’s easy to over-state. There’s a self-serving-reviews ineligibility rule that gets quoted a lot — “If the entity that’s being reviewed controls the reviews about itself, their pages that use LocalBusiness or any other type of Organization structured data are ineligible for star review feature.” Note what it’s scoped to: LocalBusiness/Organization markup. Google’s review-snippet docs list SoftwareApplication among the normal reviewable item types (alongside Product, Book, Course, Game, Movie, Recipe, and others), and it is not swept into that specific LocalBusiness/Organization ban. So app schema ratings on your own page are eligible — but that’s not a loophole. They still have to be genuine and user-sourced, and Google’s broader fake-review enforcement (removal at scale, spam policies, manual actions) applies to app ratings just like everything else.

Which leads to the warning I want to make loudly, because most competitor guides skip it entirely: fabricated, incentivized, or editorially-curated ratings are a manual action risk, not just a validation problem. Google’s own guidelines section on the Software App page ties back to Search Essentials and the general structured-data policies: “If your site violates one or more of these guidelines, then Google may take manual action against it. Once you have remedied the problem, you can submit your site for reconsideration.” And it’s worth understanding how much a rich-result manual action can escalate — see the Quotes tab for Danny Sullivan’s general statement that a rich-result manual action can lead to your rich results being removed and can widen into a broader spam manual action that affects ranking. That’s general rich-result policy, not a SoftwareApplication-specific ruling — but it’s exactly why casually faking app stars is a bad trade.

Other schema.org properties worth knowing — but not required

schema.org gives SoftwareApplication a big property list beyond the required set: downloadUrl, installUrl, fileSize, screenshot, featureList, softwareVersion, permissions, memoryRequirements, storageRequirements, operatingSystem, applicationSubCategory, applicationSuite, and more. A few, with schema.org’s own descriptions:

  • downloadUrl“If the file can be downloaded, URL to download the binary.”
  • fileSize“Size of the application / package (e.g. 18MB). In the absence of a unit (MB, KB etc.), KB will be assumed.”
  • permissions“Permission(s) required to run the app (for example, a mobile app may require full internet access or may run only on wifi).”
  • screenshot“A link to a screenshot image of the app.”

These are all valid and can help other consumers (AI agents, aggregators, your own tooling) understand the app — but none of them are required or recommended by Google’s Software App rich-result docs, and none of them affect rich-result eligibility. I’m calling this out because third-party guides routinely pad their “requirements” lists with downloadUrl, screenshot, and fileSize to look comprehensive, leaving readers polishing fields that do nothing for the snippet they’re chasing. Add them if they’re useful for other reasons; don’t add them thinking they’ll earn or improve the rich result.

Bing and other engines

Bing supports schema.org and JSON-LD broadly and validates markup through its Markup Validator, but it doesn’t publish a dedicated “Software App” required/recommended property table or a distinct app rich-result surface the way Google does. So schema.org/SoftwareApplication is valid, generically-supported markup on Bing — there’s just no bespoke Bing app rich result to target. Bing recognizing the same vocabulary isn’t feature parity with Google’s Software App result: don’t assume the same markup earns you an equivalent rating/price/OS snippet on Bing, since Bing hasn’t documented that it builds one.

Where this sits in the bigger picture

SoftwareApplication is one type in the wider structured data / schema markup world, and the ratings mechanics it leans on are shared with the review and aggregateRating vocabularies. For a paid app, the Product schema article is its closest neighbor and the place to go when you decide the item really is a generic sellable good rather than the application itself. And if your implementer is a SaaS marketing team, this markup usually lives on the same pricing and landing pages that the broader SaaS SEO work covers.

Add an expert note

Pin an expert quote

New person? Create their unclaimed profile at /admin/experts/ → Pin an expert quote first.