App Store Landing Stack
Multi-platform app landing pages with MobileApplication + SoftwareApp, reviews, FAQs, and breadcrumb context.
When to use this stack
- Landing pages that promote mobile and web app versions together
- Marketing pages needing trust signals, FAQs, and navigation for app download links
- Pages where reviews and platform details improve eligibility and CTR
What is included
Describes the mobile app, platforms, download links, and offers.
Covers the web/desktop version for multi-platform positioning.
Provides social proof tied to the app.
Answers install, platform availability, pricing, and support questions.
Provides navigation context for the landing page.
Properties across the bundle
Nested properties keep their parent path, such as offers.priceCurrency. Only publish values that match visible page content.
Required properties
- applicationCategory
- author.name
- description
- itemListElement[].name
- itemReviewed.@id
- mainEntity[].@type=Question
- mainEntity[].acceptedAnswer.text
- name
- offers.price
- offers.priceCurrency
- operatingSystem
- reviewBody
- reviewRating.ratingValue
Recommended properties
- aggregateRating.ratingValue
- aggregateRating.reviewCount
- datePublished
- itemListElement[].item
- mainEntity[].acceptedAnswer.text
- mainEntity[].author.name
- mainEntity[].name
- name
- offers.availability
- offers.url
- reviewRating.bestRating
- screenshot
- softwareVersion
Combined JSON-LD
Paste this as one script tag, then replace every example value with data from the live page.
[
{
"@context": "https://schema.org",
"@type": "MobileApplication",
"@id": "https://www.example.com/apps/trip-planner#mobile",
"name": "Trip Planner",
"description": "Plan trips with offline maps, shared itineraries, and live flight alerts.",
"applicationCategory": "TravelApplication",
"operatingSystem": "iOS, Android",
"screenshot": "https://www.example.com/images/trip-planner-mobile.webp",
"offers": {
"@type": "Offer",
"price": "0.00",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock",
"url": "https://apps.example.com/trip-planner"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": 4.8,
"reviewCount": 5200
}
},
{
"@context": "https://schema.org",
"@type": "SoftwareApplication",
"@id": "https://www.example.com/apps/trip-planner#web",
"name": "Trip Planner Web",
"description": "Browser version of Trip Planner with shared itineraries and live flight alerts.",
"applicationCategory": "TravelApplication",
"operatingSystem": "Web",
"softwareVersion": "2.3.1",
"screenshot": "https://www.example.com/images/trip-planner-web.webp",
"offers": {
"@type": "Offer",
"price": "0.00",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock",
"url": "https://www.example.com/apps/trip-planner"
}
},
{
"@context": "https://schema.org",
"@type": "Review",
"@id": "https://www.example.com/reviews/trip-planner-1#review",
"name": "Great for coordinating trips",
"reviewBody": "Shared itineraries with my family and the flight alerts saved us multiple times.",
"datePublished": "2026-02-26",
"reviewRating": {
"@type": "Rating",
"ratingValue": 5,
"bestRating": 5
},
"author": { "@type": "Person", "name": "Jordan K." },
"itemReviewed": { "@id": "https://www.example.com/apps/trip-planner#mobile" }
},
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "Is there a free version?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Yes. The core app is free with in-app purchases for pro features."
}
},
{
"@type": "Question",
"name": "Does it work offline?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Offline maps and saved itineraries are available on mobile. Some live alerts require connectivity."
}
},
{
"@type": "Question",
"name": "Can I sync between mobile and web?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Yes. Sign in with the same account to sync trips across mobile and web."
}
}
]
},
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{ "@type": "ListItem", "position": 1, "name": "Home", "item": "https://www.example.com" },
{ "@type": "ListItem", "position": 2, "name": "Apps", "item": "https://www.example.com/apps" },
{ "@type": "ListItem", "position": 3, "name": "Trip Planner", "item": "https://www.example.com/apps/trip-planner" }
]
}
]Implement and verify
- 01
Start with the live page
Confirm titles, prices, availability, policies, and visible FAQ content before generating markup.
- 02
Add one JSON-LD script
Use the combined example as a template in the document head or before the closing body tag.
- 03
Complete regional details
Fill shipping destinations and timing for every region the page actually serves.
- 04
Link the return policy
Use a stable MerchantReturnPolicy URL and keep its terms synchronized with the page.
- 05
Match visible answers
Add only FAQs that users can read on the same page, with identical answers.
- 06
Validate after changes
Run Rich Results Test after implementation and whenever price, availability, or policy data changes.
Common errors and fixes
- Missing currency or availability
Use ISO currency codes and complete schema.org availability URLs in Offer data.
- Incomplete shipping details
Include shippingDestination.addressCountry and deliveryTime.transitTime with units.
- Return policy is not connected
Reference MerchantReturnPolicy from the Offer and provide a stable public policy URL.
- FAQ answers differ from the page
Keep structured FAQ answers identical to visible answers.
Stack FAQs
Do I need both MobileApplication and SoftwareApplication?
Use both when you promote mobile and web/desktop on the same page. If mobile-only, use MobileApplication alone.
How should I handle pricing?
For free apps, keep price 0.00 and currency. If using freemium or IAP, ensure the page content aligns with the offer.