PriceSpecification
PriceSpecification is the parent type for every priced specification in schema.org: UnitPriceSpecification for per-unit and subscription pricing, DeliveryChargeSpecification for shipping rules, PaymentChargeSpecification for payment-method surcharges, CompoundPriceSpecification for bundled breakdowns. It lives on Offer, Product, Demand, and wherever else a priced obligation appears.
Reach for PriceSpecification directly when you need a price range, a future validity window, a minimum order threshold, or a VAT flag but do not need a subtype's additional semantics.
Full example of schema.org/PriceSpecification json-ld markup
The markup is verified as valid with Rich Results Test from Google.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Offer",
"itemOffered": { "@type": "SoftwareApplication", "name": "XooStructured Team" },
"priceSpecification": {
"@type": "PriceSpecification",
"minPrice": 29.00,
"maxPrice": 49.00,
"priceCurrency": "USD",
"valueAddedTaxIncluded": false,
"validFrom": "2026-01-01",
"validThrough": "2026-12-31",
"eligibleQuantity": {
"@type": "QuantitativeValue",
"minValue": 3,
"maxValue": 100,
"unitCode": "C62",
"unitText": "seats"
},
"eligibleTransactionVolume": {
"@type": "PriceSpecification",
"minPrice": 500.00,
"priceCurrency": "USD"
}
}
}
</script>Direct properties (11)
priceandpriceCurrency: the base numeric value and its ISO 4217 currency code.minPrice/maxPrice: range endpoints when the exact price depends on configuration (pick a size, pick a tier).validFrom/validThrough: ISO 8601 window during which the specification is offered.eligibleQuantity: a QuantitativeValue describing the ordering granularity ("from 1 to 10 units, step 1"). Useful for bulk-only or minimum-order offers.eligibleTransactionVolume: a PriceSpecification describing the order-subtotal threshold the rule applies to. The recursive shape is how "free shipping over $50" is written.valueAddedTaxIncluded: Boolean indicating whether the stated price already contains VAT. Required in the EU; advisable everywhere.validForMemberTier: member-only pricing tier.membershipPointsEarned: loyalty-point accrual per purchase.
Picking the right subtype
Use UnitPriceSpecification when price depends on quantity or time (per-kg, per-seat-month). Use DeliveryChargeSpecification when the price is a shipping fee. Use PaymentChargeSpecification when the price is a surcharge for a specific payment method. Use CompoundPriceSpecification when the final price breaks down into labelled components (base + tax + environmental fee). For everything else, PriceSpecification itself is correct.
Minimal valid version
The smallest markup that still produces a valid PriceSpecification 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": "PriceSpecification",
"price": 29.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 docsProduct / Offer rich result (via containing Offer)primary
Common PriceSpecification 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
PriceSpecification when a subtype fits
WrongPriceSpecification for per-month SaaS pricingRightUnitPriceSpecification with unitCode: MONSubtypes carry extra semantics consumers depend on. Only use the parent when no subtype applies.
- 02
price as a string with a symbol
Wrong"price": "$49.00"Right"price": 49.00 plus "priceCurrency": "USD"price is a Number; currency lives on priceCurrency as an ISO 4217 code.
- 03
validThrough in the past
Wrong"validThrough": "2020-01-01"RightRemove the property, or update to a future dateConsumers filter out expired offers; stale validThrough dates will hide the offer entirely.
Schema properties in this example
Also mentioned in 14 other examples
PriceSpecification also appears in CompoundPriceSpecification, DeliveryChargeSpecification, Demand, FoodService, HealthPlanCostSharingSpecification, Invoice, ParkingFacility, PaymentChargeSpecification, and 6 more. See the full PriceSpecification schema page for every reference.
About the example data
XooStructured Team plan listed with a price range, an order-volume threshold for the volume discount, and an explicit VAT-inclusive flag for EU customers.
Comments
Loading comments...