# Structured pricing information

> Structured pricing information: An offer without a price cannot be compared by an agent — you drop out of consideration.

- Source: /checks/pricing-structured
- Site: AgenticWebScore
- Language: English

---
An offer without a price cannot be compared by an agent — you drop out of consideration.

| Property | Value |
| --- | --- |
| Check id | `pricing-structured` |
| Dimension | Protocol Discovery (25%) |
| Tier | Recommended — pool 20 pts |
| Weight inside tier | 2 |
| Impact | High |
| Maturity | Adopted — A ratified standard with real deployment. |
| Conditional | No |
| Publishing skill | `pricing-schema` |
| Standards | schema.org/Offer |

## What is measured

The scanner parses the JSON-LD in the server-rendered homepage and looks for schema.org pricing: an Offer (or a Product or Service with offers) carrying price, priceCurrency and availability, or a priceSpecification (UnitPriceSpecification) with price and priceCurrency for recurring plans. It passes when at least one complete offer states a numeric price and its currency; it partially passes when an offer node exists but omits priceCurrency, or when the price appears only as prose or an image.

## Reproduce it yourself

You do not have to take our word for any of this. Run the same measurement against your own domain:

```bash
DOMAIN=https://your-domain.example
curl -sS "$DOMAIN/" | tr -d '\n' | grep -oE '"(price|priceCurrency|availability|priceSpecification|@type)":("[^"]*"|\{)' | sort -u
```

## The fix

This is the artifact to ship. It is the complete change, not a description of one.

```json
{
  "@context": "https://schema.org",
  "@type": "Service",
  "name": "Agent Readiness Audit",
  "serviceType": "Website agent-readiness audit",
  "provider": { "@type": "Organization", "name": "Example Inc.", "url": "https://your-domain.example" },
  "offers": {
    "@type": "Offer",
    "price": "490.00",
    "priceCurrency": "USD",
    "availability": "https://schema.org/InStock",
    "url": "https://your-domain.example/pricing",
    "priceSpecification": {
      "@type": "UnitPriceSpecification",
      "price": "490.00",
      "priceCurrency": "USD",
      "billingDuration": { "@type": "QuantitativeValue", "value": 1, "unitCode": "MON" }
    }
  }
}
```

> Wrap this in a <script type="application/ld+json"> block in the HTML the server sends: a price rendered only by client-side JavaScript, or shown inside an image, is invisible to the scanner.

## Standards referenced

- `schema.org/Offer`

## Related checks

| Check | Tier | Impact | Same skill |
| --- | --- | --- | --- |
| `mcp-card` — MCP server card | Essential | High | — |
| `openapi` — OpenAPI definition | Essential | High | — |
| `oauth-discovery` — OAuth discovery documents | Essential | High | — |
| `api-catalog` — API catalog | Recommended | Medium | — |
| `agent-skills` — Agent Skills declaration | Recommended | Medium | — |
| `a2a-card` — A2A agent card | Recommended | Medium | — |
| `a2a-signed` — Cryptographically signed agent card | Emerging | Medium | — |
| `auth-md` — /auth.md agent authentication guide | Emerging | Medium | — |
