nuxt-x-schema
Offer
Schema.org Offer JSON-LD component for pricing and product availability structured data.
Offer
The XSchemaOffer component injects a <script type="application/ld+json"> tag for offer/pricing structured data. No visible output — SEO only.
Components
<XSchemaOffer />
Use on pages for products, plans, or services with a price. Can also be embedded within Product or Service schemas as a nested object.
<XSchemaOffer
name="Premium Plan"
:price="49.99"
price-currency="USD"
availability="InStock"
url="https://example.com/premium"
/>
Props
| Prop | Type | Required | Default | Description |
|---|---|---|---|---|
name | String | Yes | — | Offer name |
description | String | No | — | Offer description |
price | String | Number | Yes | — | Price value |
priceCurrency | String | No | "USD" | ISO 4217 currency code |
availability | String | No | "InStock" | InStock, OutOfStock, PreOrder, etc. |
url | String | No | — | Offer URL |
seller | Organization | No | — | Seller Organization object |
validFrom | String | No | — | ISO 8601 offer start date |
validThrough | String | No | — | ISO 8601 offer end date |
priceValidUntil | String | No | — | ISO 8601 price expiry date |
itemCondition | String | No | "NewCondition" | NewCondition, UsedCondition, RefurbishedCondition |
AI Context
component: XSchemaOffer
package: "@xenterprises/nuxt-x-schema"
output: JSON-LD script tag in <head>
use-when: Adding Offer structured data for products, plans, or services with pricing
place: In page-level components (pages/ or layouts/), NOT in shared headers
notes:
- Renderless component — no visible DOM output; purely SEO metadata
- Injects JSON-LD server-side via useHead — SSR-safe, visible to crawlers on first paint
- priceCurrency defaults to USD; use ISO 4217 codes for other currencies
