No SoftwareApplication schema
What is this issue?
This issue reports a SoftwareApplication, MobileApplication or
WebApplication schema block your page already declares that is missing a
required property — not an app or software page with no such schema at all.
SoftwareApplication and MobileApplication require name and operatingSystem;
WebApplication requires only name.
What this issue is not: it does not guess that a page under /app or
/download, or one linking to an app store, ought to declare this schema. A page
with none declared is never reported. applicationCategory, downloadUrl and a
nested aggregateRating are recommended, not checked.
Why it matters
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 to fix it
If this issue was raised, your page already declares a SoftwareApplication,
MobileApplication or WebApplication missing a required property — open the
finding for which one (name and operatingSystem, except WebApplication needs
only name). The steps below are for a page that declares none yet: worthwhile to
add, and never reported as a defect while absent.
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 the properties this check requires:
name: App/software name (required for every subtype)operatingSystem: Supported operating systems (required forSoftwareApplicationandMobileApplication; not required forWebApplication)
Add recommended properties (not verified by this check, but expected by Google for the rich result):
applicationCategory: Category of application (e.g., "BusinessApplication", "DeveloperApplication", "EducationApplication", "FinanceApplication", "GameApplication")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
Examples
Example 1: No Schema Declared — Not This Issue
<!-- SaaS product page with full copy, but no 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>
<button>Start Free Trial</button>
</body>
</html>Nothing is reported, however clearly the page sells software.
Example 1b: The Same Page, With a Valid WebApplication (passes)
{
"@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" }
}Only name is required for WebApplication — operatingSystem and
applicationCategory here are good practice, not required by this check.
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: SoftwareApplication Missing operatingSystem (fails)
Problematic state:
{
"@context": "https://schema.org",
"@type": "SoftwareApplication",
"name": "Project Management Tool"
}Reported: operatingSystem missing. A missing applicationCategory is not
part of this finding — it is recommended, not checked.
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"
}
}How PixyScan detects this
Read the declared structured data: every JSON-LD block is parsed, and
@graphwrappers are flattened.Select declared entities: any schema block whose
@typeisSoftwareApplication,MobileApplicationorWebApplication. A page that declares none of these is not examined — this check does not infer an app or software page from its URL (/app,/download) or the presence of app-store links.Check the required properties:
SoftwareApplicationandMobileApplication—nameandoperatingSystemmust both be presentWebApplication— onlynameis required (a web app has no meaningfuloperatingSystem)
This is reported when: the page declares one of these types missing the required property or properties above. A page describing downloadable software with no such schema at all is never reported.
applicationCategory,downloadUrland a nestedaggregateRatingare recommended but are not checked.
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? | Reserved for future use — the crawler always writes null here today; no check currently populates it |
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