- Three subtypes do different jobs.
MobileApplicationfor iOS/Android.WebApplicationfor browser-based apps.VideoGamefor games. The bareSoftwareApplicationis the fallback. - Required:
name,applicationCategory,operatingSystem,offers(with price),aggregateRating(orreview). - applicationCategory must be from Google's enum: BusinessApplication, GameApplication, MultimediaApplication, etc. Free-text values fail.
- Self-serving rating exception: SoftwareApplication is one of the few types where on-page user reviews for your own app still qualify for stars in the SERP.
- Pair with the app store URLs: include
downloadUrlpointing at App Store / Play Store / Microsoft Store. Google uses these to verify the app exists.
Chapter 1. Before you start
SoftwareApplication is one of the few Review-eligible types where self-serving reviews still produce stars in the SERP - meaning the app maker's own product page can show ratings without needing to syndicate from G2 or Capterra. That makes the schema unusually high-leverage for SaaS and mobile app marketing pages.
- Confirm the page is the canonical install / try page for one app, not a roundup. Roundups use
ItemList. - Generate at least three screenshot URLs. The app rich result is screenshot-driven; without them the result is much weaker.
- Pull the canonical App Store / Play Store URL for
downloadUrl. Google cross-references these to verify the app's identity. - Decide the right subtype based on where the app runs (mobile / browser / desktop / console).
Chapter 2. Picking the right subtype
| App type | Use |
|---|---|
| iOS / Android native app | MobileApplication |
| Browser-based SaaS / PWA | WebApplication |
| Game (any platform) | VideoGame |
| Desktop app (macOS / Windows / Linux) | SoftwareApplication with operatingSystem set |
| Cross-platform (mobile + web) | Two records: one MobileApplication and one WebApplication, linked via sameAs |
Like every other Schema.org type, the deepest applicable subtype is preferred. MobileApplication tells Google more than SoftwareApplication does, and the rich-result enhancements (download CTA, App Store link) only fire for the specific subtype.
Chapter 3. Required and recommended properties
{
"@context": "https://schema.org",
"@type": "MobileApplication",
"@id": "https://www.example.com/app#mobileapp",
"name": "Capconvert Insights",
"operatingSystem": "iOS 16+, Android 11+",
"applicationCategory": "BusinessApplication",
"softwareVersion": "3.4.2",
"description": "Daily SEO and GEO intelligence for ecommerce storefronts.",
"screenshot": [
"https://www.example.com/app/screenshot-1.png",
"https://www.example.com/app/screenshot-2.png",
"https://www.example.com/app/screenshot-3.png"
],
"downloadUrl": [
"https://apps.apple.com/us/app/capconvert-insights/id1234567890",
"https://play.google.com/store/apps/details?id=com.capconvert.insights"
],
"offers": {
"@type": "Offer",
"price": "0",
"priceCurrency": "USD"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.7",
"ratingCount": 1284
},
"publisher": { "@id": "https://www.capconvert.com/#organization" },
"featureList": [
"Daily PSI + CrUX field metrics",
"AI-engine citation tracking",
"Schema breakage alerts"
]
}
For paid apps, set price to the dollar amount and priceCurrency appropriately. For freemium with in-app purchases, set price 0 and add a separate Offer for the upgrade tier.
Chapter 4. applicationCategory must come from Google's enum
The accepted values per Google's docs:
BusinessApplicationDesignApplicationDeveloperApplicationDriverApplicationEducationalApplicationEntertainmentApplicationFinanceApplicationGameApplicationHealthApplicationLifestyleApplicationMultimediaApplicationNetworkingApplicationSecurityApplicationSocialNetworkingApplicationSportsApplicationTravelApplicationUtilitiesApplication
Free-text values ("Marketing", "Productivity", "AI") fail validation and disqualify the rich result. Pick the closest accepted value. For ambiguous apps, BusinessApplication is the safest fallback.
Chapter 5. Offers, screenshots, and ratings
Offers
Free apps: price: "0". Paid: actual price. Freemium: free top-level Offer plus subscriptions modeled as separate Offers with priceSpecification for recurring billing.
Screenshots
Provide 3-5 screenshot URLs minimum. Google can include them in the rich result as a small carousel. Each URL must be publicly accessible (no auth, no robots blocking).
Ratings
SoftwareApplication has the self-serving exception - user reviews on your own app's landing page qualify for the SERP star treatment. Source ratings from real app users; never invent. Pair with the app store rating if possible (App Store / Play Store APIs can pull official aggregates).
Chapter 6. Where do you place SoftwareApplication schema on the site?
One SoftwareApplication (or subtype) record per app landing page, in the <head>. If the brand has multiple apps (e.g., a SaaS with a web app and a mobile companion), ship one schema record per app on its own page, then cross-link via sameAs.
Reference the parent Organization via publisher. For brand entity-graph hygiene, the Organization's brand property can list the apps with @id references.
Chapter 7. The breakages we see most often
Ranked by frequency across 31 app and SaaS site audits:
- Free-text
applicationCategory("Marketing", "AI", "Productivity") instead of an enum value. 21 of 31. - No
screenshotURLs, removing the screenshot carousel from the rich result. 17 of 31. - Missing
operatingSystem, so Google can't tell what platform the app runs on. 12 of 31. - No
downloadUrlpointing at the app store listings. 9 of 31. - Generic
SoftwareApplicationwhen a subtype applies (e.g., game shipped with the parent type). 7 of 31. - Paid apps with no
offers, missing the price chip in the rich result. 5 of 31.
We track these on running sites through our Sentry structured-data rule set.
FAQ
Can I ship SoftwareApplication for a SaaS that's only on the web?
Yes - use WebApplication. Set operatingSystem to "All" or the browsers you support (e.g., "Chrome 100+, Firefox 100+, Safari 16+"). The web-app rich result is identical in shape to the mobile-app version.
Do app store ratings count for my on-page schema?
Not directly. The aggregateRating in your schema must reference on-page reviews or your own first-party data. You can syndicate the app store's rating into body copy and into the schema if the data is honestly attributed. Don't fabricate the count.
How do I model in-app purchases?
The base app gets offers at its install price (free or paid). For IAPs, add a second Offer with the IAP price and a name describing it ("Pro upgrade", "Team plan"). For subscriptions, use UnitPriceSpecification with billingDuration.
Should I ship VideoGame for a mobile game?
Yes. VideoGame beats MobileApplication for game-specific queries because it unlocks gameplay-related properties (genre, gamePlatform, playMode) and Google may surface game-specific carousels.
How do I handle multi-platform apps?
One schema record per platform-specific app page (one for iOS, one for Android, one for web) is cleaner than a single record with all OSes. Cross-link them via sameAs. If the brand's site has only a single combined page, ship SoftwareApplication with operatingSystem array including all platforms.
Does SoftwareApplication need a separate Organization schema?
Yes. Always link to the publisher Organization via publisher with @id. The brand entity ties the app to the Knowledge Graph; without it, the app rich result loses the publisher badge.
References
- Schema.org. "SoftwareApplication." schema.org/SoftwareApplication
- Google Search Central. "Software app (SoftwareApplication) structured data." developers.google.com/search/docs/appearance/structured-data/software-app
- Schema.org. "MobileApplication." schema.org/MobileApplication
- Schema.org. "WebApplication." schema.org/WebApplication
- Schema.org. "VideoGame." schema.org/VideoGame
- Schema.org. "Schema Markup Validator." validator.schema.org