No SoftwareApplication schema
What Is This Issue
SaaS or app product pages are missing SoftwareApplication schema, preventing display of ratings, pricing, and OS compatibility in Google rich results.
Without SoftwareApplication schema:
- Your app/software won’t appear in Google rich results
- Ratings and reviews won’t show for your app
- Pricing information won’t display in search results
- OS compatibility won’t be indicated
- App store links won’t appear in search results
- Users can’t see app details before clicking
A proper SoftwareApplication schema should include: @type (SoftwareApplication, MobileApplication, WebApplication, or VideoGame), name, operatingSystem, applicationCategory, and optionally offers, aggregateRating, downloadUrl, softwareVersion.
Why Is This Important
SoftwareApplication schema is important for app/software visibility:
- Rich results: Enables app ratings, pricing, and compatibility to appear in search results
- App store visibility: Helps your app appear in app store search results
- OS compatibility: Users can see which operating systems are supported
- Pricing display: Shows pricing information directly in search results
- Rating signals: Displays app ratings and review counts
- AI search readiness: AI engines use SoftwareApplication schema to understand and recommend apps
Resolving this issue improves your SEO health score by ensuring app/software products are properly structured for maximum visibility.
How XeoPix Detects This
XeoPix follows these logical steps to detect missing SoftwareApplication schema:
-
Detect app/software pages: The crawler identifies pages with:
- URL patterns (
/app,/software,/product,/download) - App store links (App Store, Google Play, Microsoft Store)
- Software/product descriptions
- URL patterns (
-
Extract structured data: The crawler looks for JSON-LD, Microdata, or RDFa blocks on the page
-
Check for SoftwareApplication schema: The crawler verifies if any schema block has:
@typeset toSoftwareApplication,MobileApplication,WebApplication, orVideoGame- Required properties:
name,operatingSystem,applicationCategory
-
Validate schema completeness: If SoftwareApplication schema is found, the crawler checks for:
operatingSystemdeclaredapplicationCategorydeclareddownloadUrlor app store link presentaggregateRatingnested in block (if reviews exist)
-
Trigger conditions: The issue is flagged when:
- App/software page detected but no SoftwareApplication schema found
- SoftwareApplication schema exists but
operatingSystemis missing - SoftwareApplication schema exists but
applicationCategoryis missing
How To Fix
-
Identify app/software pages: Look for pages with:
- URL patterns (
/app,/software,/product,/download) - App store links (App Store, Google Play, Microsoft Store)
- Software/product descriptions
- URL patterns (
-
Choose the correct subtype:
SoftwareApplication: For desktop applicationsMobileApplication: For iOS/Android appsWebApplication: For SaaS/browser-based applicationsVideoGame: For games
-
Add SoftwareApplication JSON-LD structured data to the page’s
<head>or before</body>:For SaaS/web-based apps:
{ "@context": "https://schema.org", "@type": "WebApplication", "name": "Example SEO Tool", "operatingSystem": "All (Web-based)", "applicationCategory": "BusinessApplication", "offers": { "@type": "Offer", "price": "49.00", "priceCurrency": "USD" }, "aggregateRating": { "@type": "AggregateRating", "ratingValue": "4.6", "reviewCount": "512" } }For mobile apps:
{ "@context": "https://schema.org", "@type": "MobileApplication", "name": "Example Mobile App", "operatingSystem": "iOS, Android", "applicationCategory": "BusinessApplication", "downloadUrl": "https://apps.apple.com/app/example/id123456", "softwareVersion": "2.1.0" } -
Include required properties:
name: App/software nameoperatingSystem: Supported operating systemsapplicationCategory: Category of application (e.g., “BusinessApplication”, “DeveloperApplication”, “EducationApplication”, “FinanceApplication”, “GameApplication”)
-
Add recommended properties:
offers: Pricing information (even for free apps, use"price": "0")aggregateRating: If you have real user reviewsdownloadUrl: Direct download or app store linksoftwareVersion: Keep updated on releases
-
Validate with Google’s Rich Results Test
What We Store
Storage Level
Page Level — This issue is evaluated for each individual URL that contains structured data.
Database Table / Prisma Model
PageStructuredData
Stored Fields
| Field | Type | Description |
|---|---|---|
| schemaType | SchemaType | The type of schema (e.g., Organization, Person) |
| schemaFormat | SchemaFormat | The format of the schema (JSON-LD, Microdata, RDFa) |
| schemaIdentifier | String? | Unique identifier for the schema |
| rawJson | Json? | The raw JSON-LD or structured data content |
| schemaErrors | Json? | Array of validation errors found in the schema |
| isValidSchema | Boolean? | Whether the schema is valid according to validation |
| missingFields | Json? | Array of required fields that are missing |
Detection Dependencies
- The following data sources are required to evaluate this issue:
- HTML Document — The crawler parses the HTML to find structured data (JSON-LD, Microdata, RDFa)
- Structured Data Validation — The extracted schema is validated against Schema.org definitions
- Schema Parser — JSON-LD scripts, Microdata attributes, and RDFa markup are parsed
Examples
Example 1: Missing SoftwareApplication Schema on SaaS Product Page
Problematic state:
<!-- SaaS product page without SoftwareApplication schema -->
<html>
<head>
<title>Example SEO Tool - Free Trial</title>
</head>
<body>
<h1>Example SEO Tool</h1>
<p>Powerful SEO software for agencies and marketers.</p>
<p><strong>Price:</strong> $49/month</p>
<p><strong>Platform:</strong> Web-based (All browsers)</p>
<button>Start Free Trial</button>
</body>
</html>Corrected state:
<!-- SaaS product page with SoftwareApplication schema -->
<html>
<head>
<title>Example SEO Tool - Free Trial</title>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WebApplication",
"name": "Example SEO Tool",
"operatingSystem": "All (Web-based)",
"applicationCategory": "BusinessApplication",
"offers": {
"@type": "Offer",
"price": "49.00",
"priceCurrency": "USD"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.6",
"reviewCount": "512"
}
}
</script>
</head>
<body>
<h1>Example SEO Tool</h1>
<p>Powerful SEO software for agencies and marketers.</p>
<p><strong>Price:</strong> $49/month</p>
<p><strong>Platform:</strong> Web-based (All browsers)</p>
<button>Start Free Trial</button>
</body>
</html>Example 2: MobileApplication Schema for iOS App
Corrected state:
{
"@context": "https://schema.org",
"@type": "MobileApplication",
"name": "Example Analytics App",
"operatingSystem": "iOS, Android",
"applicationCategory": "BusinessApplication",
"downloadUrl": "https://apps.apple.com/app/example-analytics/id123456",
"softwareVersion": "2.1.0",
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.8",
"reviewCount": "1024"
}
}Example 3: Incomplete SoftwareApplication Schema
Problematic state:
{
"@context": "https://schema.org",
"@type": "SoftwareApplication",
"name": "Project Management Tool"
}Missing required properties: operatingSystem, applicationCategory
Corrected state:
{
"@context": "https://schema.org",
"@type": "WebApplication",
"name": "Project Management Tool",
"operatingSystem": "All (Web-based)",
"applicationCategory": "BusinessApplication",
"offers": {
"@type": "Offer",
"price": "0",
"priceCurrency": "USD",
"description": "Free tier available"
}
}Unit Test
Test File
xeopix-crawling-v2/__tests__/seo-audit-checks/structuredDataRichResults/issue-235-softwareapplication-schema.test.js
Purpose
Validates that the crawler correctly validates SoftwareApplication JSON-LD schemas and does not report false positives when the schema is properly formed.
Tested Function
runStructuredDataRichResults()
Issue Information
- Issue Number: 235
- Issue Code:
softwareapplication_schema_missing - Toggle Group:
structuredDataRichResults
Test Scenarios
Positive Test Cases
- Valid SoftwareApplication schema: Page has a
SoftwareApplicationschema withnameandoperatingSystem— no issue reported.
Negative Test Cases
None — the test only validates that valid schemas pass.
Boundary Cases
None.
Edge Cases
- Empty HTML:
<html></html>— no crash.
Expected Outcome
Pass
Issue should not be reported when a valid SoftwareApplication schema with required properties is present.
Fail
No negative test cases are defined.
Validation
- Correct pass-through of valid SoftwareApplication schemas
- Graceful handling of empty HTML
Related Production Files
xeopix-crawling-v2/toggleGroups/structuredDataRichResults.jsxeopix-crawling-v2/issueCodes.jsxeopix-crawling-v2/utils/context.jsxeopix-crawling-v2/utils/issues.jsxeopix-crawling-v2/utils/schema.js
Coverage Summary
- Covers valid SoftwareApplication schema detection
- Covers empty HTML resilience
References
- Schema.org — SoftwareApplication — Schema.org
- Google — Software App Structured Data — Google Search Central