Skip to content
Issue docs

No SoftwareApplication schema

Importantsoftwareapplication_schema_missingIssue 111

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.

  1. 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
  2. Choose the correct subtype:

    • SoftwareApplication: For desktop applications
    • MobileApplication: For iOS/Android apps
    • WebApplication: For SaaS/browser-based applications
    • VideoGame: For games
  3. 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"
    }
  4. Include the properties this check requires:

    • name: App/software name (required for every subtype)
    • operatingSystem: Supported operating systems (required for SoftwareApplication and MobileApplication; not required for WebApplication)
  5. 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 reviews
    • downloadUrl: Direct download or app store link
    • softwareVersion: Keep updated on releases
  6. 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

  1. Read the declared structured data: every JSON-LD block is parsed, and @graph wrappers are flattened.

  2. Select declared entities: any schema block whose @type is SoftwareApplication, MobileApplication or WebApplication. 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.

  3. Check the required properties:

    • SoftwareApplication and MobileApplication — name and operatingSystem must both be present
    • WebApplication — only name is required (a web app has no meaningful operatingSystem)
  4. 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, downloadUrl and a nested aggregateRating are 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

Further reading