If you have a software product — a SaaS tool, a mobile app, a desktop application — the SoftwareApplication schema type gives Google the structured signals it needs to display rich results that include ratings, pricing, and platform information. The visual difference in search results between a plain blue link and a result with aggregate star ratings and a price is measurable, and software application schema markup is the mechanism that enables it. That said, the markup has to be implemented precisely or Google will ignore it — and some common shortcuts, particularly around ratings data, will get the rich result actively suppressed.
What SoftwareApplication Schema Does
The SoftwareApplication type in Schema.org sits under CreativeWork in the type hierarchy. It communicates to search engines what your software is, what it does, what it costs, what platforms it runs on, and how users rate it. Google uses this structured data to generate software app rich results — primarily the star rating display that can appear for app-related queries — and to build a more complete knowledge graph entity for the product itself.
Like all schema types, this is not a direct ranking factor. It does not push your page up the results. What it does is improve the appearance of your listing in the SERP and the machine-readability of your software entity. That second part matters more as AI Overviews and LLM-driven answer layers increasingly use structured data to identify and describe software products in generated responses — without necessarily linking out to the source page at all. A well-formed SoftwareApplication block makes your product surfaceable in those contexts in a way that purely HTML-based content is not.
Core Fields to Include
The fields that matter most for rich result eligibility are name, applicationCategory, operatingSystem, aggregateRating, and offers. Google surfaces aggregateRating most prominently in the SERP, so getting that block right is typically the highest-priority step in any SoftwareApplication implementation.
One important caveat before adding ratings: the rating must reflect genuine user reviews that are visible on the page. Google has been explicit that self-reported ratings without supporting review content will be demoted or not displayed. If you add an aggregateRating block, the corresponding review data needs to be on the page and the reviewCount must match what is visible to users.
name— the software product's name, matching the visible page headingdescription— a plain-text description of what the software doesapplicationCategory— the category string that best describes your softwareoperatingSystem— a string or comma-separated list of supported platformsurl— the canonical URL of the software product pageoffers— a nestedOfferobject withpriceandpriceCurrencyaggregateRating— a nestedAggregateRatingwithratingValue,reviewCount,bestRating, andworstRating
A Working JSON-LD Example
Below is a complete JSON-LD block for a SaaS product with an aggregate rating and a monthly pricing offer. Every required and recommended field is included, and bestRating and worstRating are explicit so Google does not have to guess the rating scale. Leaving those out is a common oversight that leads to incorrect display in the SERP.
<script type='application/ld+json'>
{
'@context': 'https://schema.org',
'@type': 'SoftwareApplication',
'name': 'YourApp',
'description': 'A business workflow tool for managing client projects and billing.',
'applicationCategory': 'BusinessApplication',
'operatingSystem': 'Web, iOS, Android',
'url': 'https://yourapp.com',
'offers': {
'@type': 'Offer',
'price': '29.00',
'priceCurrency': 'USD'
},
'aggregateRating': {
'@type': 'AggregateRating',
'ratingValue': '4.6',
'reviewCount': '312',
'bestRating': '5',
'worstRating': '1'
}
}
</script>
Choosing the Right applicationCategory
Schema.org does not maintain a closed enumeration for applicationCategory, but Google's documentation consistently references a set of values it understands and prefers. The most commonly used categories are:
GameApplicationBusinessApplicationEducationApplicationEntertainmentApplicationUtilitiesApplicationSocialNetworkingApplicationDesignApplicationDeveloperApplication
Use the category that most accurately describes what the software does. If your tool spans multiple categories — say, a project management tool with built-in time tracking — pick the dominant use case. Do not stack categories or use a deliberately broad value to appear for more queries. It does not work that way, and a mismatched category can trigger a quality review.
Handling Free and Freemium Pricing
If the software is free, set price to 0 and still include priceCurrency. For freemium products with paid tiers, you can use an array of Offer objects to represent the free tier and each paid plan separately, or represent the starting price and note the full range in the page copy. Do not omit the offers block entirely — its absence can prevent the rich result from qualifying and removes useful entity signal about what the product costs.
<script type='application/ld+json'>
{
'@context': 'https://schema.org',
'@type': 'SoftwareApplication',
'name': 'YourFreemiumApp',
'applicationCategory': 'BusinessApplication',
'operatingSystem': 'Web',
'offers': [
{
'@type': 'Offer',
'price': '0',
'priceCurrency': 'USD',
'name': 'Free Plan'
},
{
'@type': 'Offer',
'price': '49.00',
'priceCurrency': 'USD',
'name': 'Pro Plan'
}
]
}
</script>
How to Test SoftwareApplication Markup
Run the JSON-LD through Google's Rich Results Test at search.google.com/test/rich-results. For SoftwareApplication, the tool will check whether the aggregateRating block is complete, whether required fields are present, and flag data-type mismatches. The Schema Markup Validator at validator.schema.org is a useful complement — it checks conformance against the Schema.org spec more strictly and catches issues like incorrect property names or values that the Rich Results Test accepts but that technically violate the specification.
After going live, check Google Search Console's Enhancement report for SoftwareApplication to see at scale whether any pages have missing fields or eligibility errors. Search Console is the only tool that shows you how Google actually processed the markup after crawling — not just whether it is syntactically valid, but whether it qualified.
Common SoftwareApplication Schema Mistakes
- Setting
reviewCountto a number that does not match the visible review count on the page. Google cross-checks this and will suppress the rich result if counts are inconsistent with the page content. - Omitting
worstRatingandbestRating, which leaves Google to infer the scale and often produces incorrect display in the SERP. - Using
SoftwareApplicationon a page that does not describe a specific software product — such as a category page, a software comparison page, or a directory listing. The schema type should match the page's primary entity. - Listing
operatingSystemvalues that the product does not actually support, or mixing operating system names with version strings in a way that produces inconsistent values. - Not updating
offers.pricewhen pricing changes, which results in stale pricing data appearing in search results — a trust issue as much as a technical one. - Adding
aggregateRatingwhen the page has no visible user review content to support it. This violates Google's structured data guidelines and will result in the rich result being suppressed or the site receiving a manual action.
SoftwareApplication Schema and AI Search
AI Overviews and LLM-based answer engines increasingly surface software product information — pricing, platform, ratings — directly in generated answers without the user visiting the source page. A well-formed SoftwareApplication block is one of the primary ways to ensure your product is accurately represented in those contexts. The attributes that matter most for AI surfaces are the same ones that matter for rich results: name, description, applicationCategory, operatingSystem, offers, and aggregateRating. Missing or stale values in any of these properties produce inaccurate representations that are difficult to correct after the fact because you do not control when or how AI systems recrawl and update their entity data.
If you are not sure whether your current implementation qualifies for rich results, the testing tools above will give you a clear picture. For a complete site-wide review of structured data health, a schema audit will surface structural or eligibility issues across all your schema types. For broader implementation context, BlogPosting schema markup is a useful contrast in how a different content-type schema is structured, and structured data for SEO covers the strategic layer. For direct project support, see my schema markup consulting page.