The short version
- The types worth adding are
SoftwareApplication(orWebApplication),OrganizationandWebSiteon the homepage, andBreadcrumbListon inner pages. - Google’s software app rich result requires a name, a price, and a rating or review. Without real user ratings shown on the page, you aren’t eligible, and inventing them breaks the rules.
- Google stopped showing FAQ rich results in May 2026, so FAQ markup no longer earns anything in Google Search.
- Mark up only what a visitor can see on the page. Hidden or misleading markup can bring a manual action.
- Valid markup makes a page eligible for a rich result. Google doesn’t guarantee to show one.
What structured data does
Google describes structured data as a standardised format for providing information about a page and classifying its content (source). Most of it uses the schema.org vocabulary, and some types make a page eligible for a richer search result: stars, a price, a breadcrumb trail.
Three things from Google’s documentation set expectations:
- Google’s docs decide, not schema.org. schema.org defines many more types and properties than Google uses. Google says to rely on Search Central as definitive for Google Search behaviour. Its search gallery lists the features it currently supports.
- JSON-LD is the recommended format. It goes in a
<script>tag in the head or body. Google can read JSON-LD injected by JavaScript, but putting it in the server’s HTML avoids depending on rendering. - Nothing is guaranteed. Google does not guarantee that your structured data will show up in results, even when it passes Google’s own test (source).
Which types fit a SaaS site
SoftwareApplication
The type for the product itself. schema.org defines it simply as a software application, with WebApplication and MobileApplication among its more specific types (schema.org). Google supports both subtypes for its software app feature (source), and its general guideline is to use the most specific type that applies, so a browser-based product is a WebApplication.
Organization
Describes the company or maker behind the product. Google says it uses this to understand your organisation’s details and tell it apart from others, and that the logo property can influence which logo appears in results and in a knowledge panel. There are no required properties. Google recommends putting it on the home page or an about page, not on every page (source).
WebSite
Google builds the site name shown in results automatically, and says WebSite structured data on the home page is the most important way to state a preference (source).
BreadcrumbList
For pages below the homepage: docs, blog posts, feature and comparison pages. It needs at least two ListItem entries, each with a position, a name and an item URL, which the last entry may omit. Google documents the feature as available on desktop (source). A homepage doesn’t need one.
What to leave out
FAQPage. Google’s documentation changelog records that the FAQ rich result stopped appearing in Google Search from 7 May 2026, and that its documentation was removed on 15 June 2026 (source). The same changelog shows several other types retired during 2025, so check the gallery before adding a type an older article recommends.
Product, for the company. Google’s list of structured data manual actions includes “Company marked as product” (source). Describe the company as an Organization and the software as a SoftwareApplication.
What Google requires for a software app
From Google’s software app documentation, as of November 2026. Required:
name.offers.price. If the app is available without payment, set it to0. For a price above zero, Google recommends addingoffers.priceCurrency.- Either
aggregateRatingorreview.
Recommended:
applicationCategory, which must be one of the values Google lists, such asBusinessApplication,DeveloperApplication,DesignApplication,FinanceApplicationorUtilitiesApplication.operatingSystem, the operating systems required to use the app.
The third requirement is the one a newly launched product usually can’t meet. An item missing a required property isn’t eligible for a rich result (source), so a product with no ratings can’t get the software app result. Leave the rating out until you have one.
The rules on ratings and reviews
Star ratings come with more conditions than anything else here. From Google’s review snippet documentation:
- Ratings must come directly from users. Don’t write the number yourself.
- They must be on the page. If you mark up an
AggregateRating, a visitor should be able to see that rating on the same page, and it must be obvious that the page has review content. - Don’t aggregate from other websites. Copying your score from a review site or an app store into your own markup is against the guidelines.
- An
AggregateRatingneeds aratingValueand at least one ofratingCountorreviewCount. AReviewneeds anauthorwith a valid name and areviewRating.
Then there is the self-serving reviews rule. If the entity being reviewed controls the reviews about itself, pages using LocalBusiness or any other Organization type are ineligible for the star feature. Google’s example is a review of entity A placed on entity A’s own website, whether directly in the markup or through an embedded third-party widget. So putting testimonials about your company inside your Organization markup earns no stars.
SoftwareApplication is a separate entry on the list of types eligible for review snippets, so ratings of the app itself can qualify. The other conditions still apply, and Google’s manual actions list includes “Review written by the site or person providing the service” and “No mechanism for submitting a new review” (source). That leaves one safe setup: ratings collected from your users, displayed on the page, with a way to leave one.
A JSON-LD example
For a homepage. Two separate blocks, one for the company and one for the product:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "Acme Invoices",
"url": "https://yoursite.com",
"logo": "https://yoursite.com/logo.png",
"description": "Recurring invoicing software for freelancers.",
"sameAs": [
"https://github.com/acme-invoices",
"https://www.linkedin.com/company/acme-invoices"
]
}
</script>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebApplication",
"name": "Acme Invoices",
"url": "https://yoursite.com",
"description": "Send recurring invoices and see who still owes you.",
"applicationCategory": "BusinessApplication",
"offers": {
"@type": "Offer",
"price": 9.00,
"priceCurrency": "USD"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": 4.6,
"ratingCount": 87
}
}
</script>Before you use it:
- Delete the
aggregateRatingblock unless that exact rating and count appear on the page and come from your own users. Keep it in step with the page as the numbers change. - The price must match the price a visitor sees. Google’s documentation shows a single
offers.priceand doesn’t describe how to mark up several subscription tiers, so we haven’t shown that here. - The logo must be at least 112 × 112 pixels, at a crawlable and indexable URL (source).
- Generate the JSON from the same data that renders the visible price and rating, and render it on the server so it’s in the HTML.
How to test it
Google points to two tools (source):
- Rich Results Test. Google recommends starting here. It shows which Google rich results a page’s markup can generate. Test the live URL once it’s deployed, not only a pasted snippet, so you’re testing what your server actually sends.
- Schema Markup Validator. At validator.schema.org. It validates all schema.org markup without Google-specific warnings, which is useful for types Google has no rich result for, such as a plain
Organization. - URL Inspection in Search Console. After Google has crawled the page, this confirms that it found the structured data (source).
A pass means the page is eligible. Whether a rich result appears is Google’s decision.
Mistakes that lead to manual actions
Google’s structured data guidelines say a violation can bring a manual action, which makes the page ineligible for rich results. Google adds that this kind of action doesn’t affect how the page ranks in web search. The rules that software sites break most easily:
- Marking up content that isn’t visible. “Don’t mark up content that is not visible to readers of the page.” A rating, price or review that exists only in the JSON is the standard case, and “Structured data found on hidden content” is a named manual action.
- Fake or self-written ratings. The guidelines call out fake reviews by name.
- Markup that doesn’t match the page. Structured data must be a true representation of the page’s content. Stale prices and review counts drift into this.
- Blocking the page. The guidelines say not to block pages that carry structured data from Googlebot with robots.txt, noindex or other access controls. The indexability checker tests for both.
If you do receive a structured data manual action, it appears in Search Console. Google’s process is to fix or remove the markup and then request a review (source).
Structured data sits beside the rest of the head, not in place of it. The title, description and canonical are covered in meta tags that matter.
More guides
- How to get your site indexed by Google and BingSet up Search Console and Bing Webmaster Tools, submit a sitemap, fix robots.txt, noindex and canonical mistakes, use IndexNow, and check whether your pages are indexed.
- Meta tags that matter on a product landing pageWhich head tags Google supports and which it ignores, how it rewrites titles and snippets, the Open Graph tags to add, and a head block to copy.
- Open Graph images: sizes, caching and debuggingThe og:image tags, the sizes and file limits Meta and LinkedIn document, why an old image keeps showing, how to refresh it, and how to debug a broken card.
- Canonical tag mistakes on Next.js and single-page appsThe canonical tag mistakes common on Next.js sites and single-page apps, what Google says about each, and how to set canonicals with the Next.js metadata API.
- “Crawled – currently not indexed”: causes and fixesWhat “Crawled – currently not indexed” means in Search Console, how it differs from similar statuses, what to check and fix, and when to leave it alone.
- Sitemap and robots.txt for a small SaaSWhat belongs in a sitemap and robots.txt on a small SaaS, what to block and what never to block, with working examples and Next.js code.
- Alternatives and comparison pages without thin contentHow to publish “X alternatives” and “A vs B” pages that help buyers: Google’s policies, what makes each page distinct, fairness, and upkeep.