Schema
SoftwareApplication Schema - JSON-LD Guide & Examples
On this page
SoftwareApplication schema describes a software product with its features, pricing, ratings, and platform compatibility. Supported markup can make an app page eligible for a Google software app rich result.
JSON-LD Example
{
"@context": "https://schema.org",
"@type": "SoftwareApplication",
"name": "Photo Editor Pro",
"operatingSystem": "Windows, macOS",
"applicationCategory": "DesignApplication",
"offers": {
"@type": "Offer",
"price": "9.99",
"priceCurrency": "USD"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.7",
"ratingCount": 1250
}
}
Use the Schema.org Generator to build your structured data visually.
Schema.org SoftwareApp
- Type:
defineSoftwareApp<T extends Record<string, any>>(input?: SoftwareApp & T)
Describes a SoftwareApp.
Useful Links
Defaults and resolves
@typedefaults toSoftwareApplication; a different supported string type is augmented withSoftwareApplication.- A root app receives an ID such as
${canonicalUrl}#/schema/software-application/{n}. offers,aggregateRating, andrevieware resolved with their corresponding nested resolvers.
The input type requires name, offers, and either aggregateRating or review. Each Offer requires a direct price or a price specification. A free app still needs offers.price: 0; Unhead performs no runtime eligibility validation. See Google's SoftwareApplication property table.
Example
defineSoftwareApp({
name: 'Angry Birds',
operatingSystem: 'ANDROID',
applicationCategory: 'GameApplication',
aggregateRating: {
ratingValue: '4.6',
ratingCount: 8864,
},
offers: {
price: '1.00',
priceCurrency: 'USD',
},
})
Types
type ApplicationCategory
= 'GameApplication'
| 'SocialNetworkingApplication'
| 'TravelApplication'
| 'ShoppingApplication'
| 'SportsApplication'
| 'LifestyleApplication'
| 'BusinessApplication'
| 'DesignApplication'
| 'DeveloperApplication'
| 'DriverApplication'
| 'EducationalApplication'
| 'HealthApplication'
| 'FinanceApplication'
| 'SecurityApplication'
| 'BrowserApplication'
| 'CommunicationApplication'
| 'DesktopEnhancementApplication'
| 'EntertainmentApplication'
| 'MultimediaApplication'
| 'HomeApplication'
| 'UtilitiesApplication'
| 'ReferenceApplication'
interface SoftwareAppBase extends Thing {
'@type'?: Arrayable<'SoftwareApplication' | 'MobileApplication' | 'VideoGame' | 'WebApplication'>
/**
* The name of the app.
*/
'name': string
/**
* An offer to sell the app.
* For developers, offers can indicate the marketplaces that carry the application.
* For marketplaces, use offers to indicate the price of the app for a specific app instance.
*/
'offers': NodeRelations<Offer>
/**
* The type of app (for example, BusinessApplication or GameApplication). The value must be a supported app type.
*/
'applicationCategory'?: ApplicationCategory
/**
* The operating system(s) required to use the app (for example, Windows 7, OSX 10.6, Android 1.6)
*/
'operatingSystem'?: string
/**
* A description of the app.
*/
'description'?: string
/**
* URL to download the app.
*/
'downloadUrl'?: string
/**
* The version of the app.
*/
'softwareVersion'?: string
/**
* A list of features offered by the app.
*/
'featureList'?: string[]
}
type SoftwareAppRating
= | {
aggregateRating: NodeRelation<AggregateRating>
review?: NodeRelation<Review>
}
| {
aggregateRating?: NodeRelation<AggregateRating>
review: NodeRelation<Review>
}
export type SoftwareAppSimple = SoftwareAppBase & SoftwareAppRating
Related Schemas
- Organization: App developer/publisher
- Person: App author
Did this page help you?