SoftwareApplication
SoftwareApplication covers any kind of software: desktop apps, mobile apps, web apps, IDEs, SaaS tools, drivers, games. It has a decent Google rich result for mobile apps (the Play Store and App Store card with install button and screenshots), but desktop and web apps benefit mainly through Knowledge Panel and Google Assistant surfacing. Rich result eligibility varies by device and context, even within a single schema type.
The example is XooStructured, a fictional cross-platform IDE for authoring JSON-LD markup, following the schema.org/SoftwareApplication vocabulary. It's the flagship product of Xoo Code Inc., which resolves the claim on the Organization example that Xoo Code Inc. "codes and sells applications." The publisher, author, and creator all resolve to the Organization @id.
Pattern transfer across domains
The most useful thing to notice in this example is how the offers and aggregateRating composition is identical to what the Product example uses for XooTee. The same Offer pattern that prices a t-shirt also prices a software license with a free tier and a pro tier. This is one of the most valuable insights in schema.org: the primitive types (Offer, Review, AggregateRating, Person, Place) are domain-neutral and compose the same way across physical goods, digital goods, services, and events. Learn the Offer pattern once; use it everywhere.
App-specific properties
For software-specific properties, the example covers applicationCategory, operatingSystem as a multi-value array, softwareVersion, fileSize in bytes (not megabytes, a classic bug), and the difference between downloadUrl and installUrl.
Full example of schema.org/SoftwareApplication json-ld markup
The markup is verified as valid with Rich Results Test from Google.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@id": "https://xoocode.com/xoostructured#software",
"@type": "SoftwareApplication",
"name": "XooStructured",
"alternateName": "XooStructured IDE",
"description": "A cross-platform desktop IDE for authoring, validating, and previewing JSON-LD schema markup. Ships with templates for every schema.org type, live Google Rich Results compatibility checking, and a companion mobile viewer for reviewing markup on the go.",
"url": "https://xoocode.com/xoostructured",
"image": [
"https://xoocode.com/xoostructured/hero-1x1.jpg",
"https://xoocode.com/xoostructured/hero-4x3.jpg",
"https://xoocode.com/xoostructured/hero-16x9.jpg"
],
"screenshot": [
{
"@type": "ImageObject",
"url": "https://xoocode.com/xoostructured/screenshot-editor.jpg",
"caption": "XooStructured editor with live validation panel and type picker"
},
{
"@type": "ImageObject",
"url": "https://xoocode.com/xoostructured/screenshot-preview.jpg",
"caption": "Rich Results preview side-by-side with JSON-LD source"
},
{
"@type": "ImageObject",
"url": "https://xoocode.com/xoostructured/screenshot-graph.jpg",
"caption": "Knowledge graph view showing @id cross-references across a site"
}
],
"applicationCategory": "DeveloperApplication",
"applicationSubCategory": "https://schema.org/DeveloperApplication",
"operatingSystem": [
"Windows 10",
"Windows 11",
"macOS 12+",
"Linux (Debian, Fedora, Arch)",
"iOS 16+",
"Android 12+"
],
"softwareVersion": "3.2.1",
"softwareRequirements": "Modern CPU with AVX2 support, GPU with OpenGL 4.1 or later",
"memoryRequirements": "4 GB RAM minimum, 8 GB recommended",
"storageRequirements": "420 MB for desktop installer, 85 MB for mobile viewer",
"processorRequirements": "Intel / AMD x86_64 or ARM64 (Apple Silicon supported natively)",
"fileSize": "420288000",
"datePublished": "2023-04-20",
"dateModified": "2026-03-15",
"releaseNotes": "3.2.1 — Added Article speakable support, fixed a bug in @id resolution across imported graphs, updated Google Rich Results compatibility rules for the April 2026 changes.",
"downloadUrl": "https://xoocode.com/xoostructured/download",
"installUrl": "https://apps.apple.com/app/xoostructured-mobile/id1234567890",
"permissions": "filesystem:read,filesystem:write,network:outbound,clipboard:read",
"countriesSupported": "Worldwide",
"availableOnDevice": [
"Desktop",
"Tablet",
"Phone"
],
"featureList": [
"Live JSON-LD validation with schema.org and Google Rich Results rules",
"Type picker with templates for 800+ schema.org types",
"Knowledge graph view showing @id cross-references",
"Rich Results preview for Product, Article, Event, LocalBusiness, Recipe, and more",
"Multi-document workspace with cross-file @id resolution",
"Export to JSON-LD, Microdata, or RDFa",
"Mobile viewer for reviewing markup on the go"
],
"softwareHelp": {
"@type": "CreativeWork",
"name": "XooStructured Documentation",
"url": "https://xoocode.com/xoostructured/docs"
},
"author": {
"@id": "https://xoocode.com#organization"
},
"creator": {
"@id": "https://xoocode.com#organization"
},
"publisher": {
"@id": "https://xoocode.com#organization"
},
"copyrightHolder": {
"@id": "https://xoocode.com#organization"
},
"copyrightYear": "2023",
"license": "https://xoocode.com/xoostructured/license",
"offers": [
{
"@type": "Offer",
"@id": "https://xoocode.com/xoostructured#offer-free",
"name": "XooStructured Free",
"description": "Full editor and validator. Up to 3 saved workspaces. Community support.",
"price": "0.00",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock",
"category": "free",
"url": "https://xoocode.com/xoostructured/download"
},
{
"@type": "Offer",
"@id": "https://xoocode.com/xoostructured#offer-pro",
"name": "XooStructured Pro",
"description": "Unlimited workspaces, team @id sync, priority support, early access to new type templates.",
"price": "79.00",
"priceCurrency": "USD",
"priceValidUntil": "2026-12-31",
"availability": "https://schema.org/InStock",
"category": "subscription",
"url": "https://xoocode.com/xoostructured/upgrade",
"seller": {
"@id": "https://xoocode.com#organization"
}
}
],
"aggregateRating": {
"@type": "AggregateRating",
"@id": "https://xoocode.com/xoostructured#rating",
"ratingValue": "4.7",
"reviewCount": "2",
"bestRating": "5",
"worstRating": "1"
},
"review": [
{
"@type": "Review",
"author": {
"@type": "Person",
"name": "Priya Ramanathan"
},
"datePublished": "2026-01-12",
"name": "Finally, an IDE that treats schema markup as a first-class language",
"reviewBody": "I've been writing JSON-LD by hand for six years. XooStructured is the first tool that understands @id resolution across files and actually helps instead of getting in the way. The Rich Results preview alone justifies the upgrade to Pro.",
"reviewRating": {
"@type": "Rating",
"ratingValue": "5",
"bestRating": "5",
"worstRating": "1"
}
},
{
"@type": "Review",
"author": {
"@type": "Person",
"name": "Marcus Thibodeau"
},
"datePublished": "2026-02-28",
"name": "Great editor, mobile viewer needs work",
"reviewBody": "Desktop app is excellent. Mobile viewer is a bit clunky — you can read markup but not really edit it. Still, the desktop experience is worth the free tier alone and I happily upgraded after a month.",
"reviewRating": {
"@type": "Rating",
"ratingValue": "4",
"bestRating": "5",
"worstRating": "1"
}
}
],
"inLanguage": [
"en",
"da",
"de",
"fr",
"es",
"ja"
],
"keywords": "json-ld, schema.org, structured data, seo, rich results, ide, editor, validator",
"isAccessibleForFree": true,
"isFamilyFriendly": true
}
</script>Minimal valid version
The smallest markup that still produces a valid SoftwareApplication entity. Use it as the floor. Reach for the advanced example above when you want search engines and AI agents to understand more about your content.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "SoftwareApplication",
"name": "XooStructured",
"operatingSystem": ["Windows", "macOS", "Linux"],
"applicationCategory": "DeveloperApplication",
"offers": {
"@type": "Offer",
"price": "0.00",
"priceCurrency": "USD"
}
}
</script>Google rich results this unlocks
Markup matching this example makes your page eligible for the following Google Search rich results. The primary target drives the required / recommended property classification in the advanced code block above.
- Google docsSoftware app rich result (mobile-only)primary
- Google docsKnowledge Panel enrichment (desktop apps)
Common SoftwareApplication mistakes
Mistakes that pass validation but silently fail to earn rich results or mislead consumers walking the graph. Avoid these and your markup will be ahead of most sites in the wild.
- 01
fileSize as a human-readable string
Wrong"fileSize": "420 MB"Right"fileSize": "420288000"schema.org/fileSize is specified as bytes expressed as a string. Not megabytes, not kilobytes, not a human-readable label. Tools expect a raw byte count so they can format it themselves for the user's locale. A human-readable string validates but is effectively useless to consumers that walk the graph.
- 02
downloadUrl and installUrl confused
Wrong"installUrl": "https://xoocode.com/xoostructured/download/installer.exe"Right"downloadUrl": "https://xoocode.com/xoostructured/download/installer.exe" "installUrl": "https://apps.apple.com/app/xoostructured/id1234567890"downloadUrl is the direct URL to the installer or binary you serve yourself. installUrl is the app-store deep link (Play Store, App Store, Microsoft Store) that triggers installation through the store. Most software authors know one but not both, and swap them. If you only ship one distribution channel, use only the matching property.
- 03
operatingSystem as a single comma-separated string
Wrong"operatingSystem": "Windows, macOS, Linux"Right"operatingSystem": [ "Windows", "macOS", "Linux" ]A comma-separated string validates but consumers treat it as one single operating system literally named 'Windows, macOS, Linux'. Use an array so each OS is a distinct value. This is a schema.org convention that applies broadly: whenever a property accepts multiple values, prefer the array form over a delimited string.
- 04
Missing softwareVersion
WrongSoftwareApplication markup with no softwareVersionRight"softwareVersion": "3.2.1" "dateModified": "2026-03-15" "releaseNotes": "Brief summary of this release..."Without softwareVersion, search engines and consumers can't distinguish your current release from any previous one, and version-aware rich results (update notifications, compatibility hints) won't work. Always pair softwareVersion with dateModified and, ideally, releaseNotes so the version number has context.
Compare your markup against this exampleruns in your browser
Schema properties in this example
Comments
Loading comments...