{
  "object": "doc",
  "title": "Can I read any Cartroute page as JSON?",
  "description": "Content negotiation for every public page, free and keyless.",
  "section": "Concepts",
  "url": "https://cart-route.com/docs/pages-as-json",
  "updated": "2026-09-23",
  "prev": "https://cart-route.com/docs/pagination",
  "next": "https://cart-route.com/docs/mcp",
  "text": "Every public page on cart-route.com (products, categories, retailers, coupons, guides, pricing, status and these docs) returns structured JSON when requested with `Accept: application/json` or `?format=json`. Page views are free, need no key, and are the cheapest way for a browsing agent to read the catalog.\n\n## How do I request JSON?\n\n```\ncurl -H \"Accept: application/json\" https://cart-route.com/p/sony-wh-1000xm6\ncurl \"https://cart-route.com/c/tvs?format=json\"\ncurl \"https://cart-route.com/docs/errors?format=json\"\n```\n\nHTML pages also advertise their JSON form with `Link: <…?format=json>; rel=\"alternate\"; type=\"application/json\"`, and every response carries `Link` headers pointing to the OpenAPI description and the MCP server card.\n\n## Which pages have a JSON form?\n\n| Page | JSON object |\n\n| `/p/{slug}` | `product` with offers, specs and 90-day `price_history` |\n\n| `/c/{category}` | `category` with every product in it |\n\n| `/retailers`, `/retailers/{slug}` | `retailer_list`, `retailer` |\n\n| `/coupons` | `coupon_list` |\n\n| `/search?q=` | `search_result` (anonymous preview: 5 a day) |\n\n| `/guides`, `/guides/{slug}` | `guide_list`, `guide` with live figures |\n\n| `/docs/…` | `doc` with the page text |\n\n| `/pricing`, `/about`, `/status`, `/` | `pricing`, `about`, status, `page` |\n\n## When should an agent use the API instead?\n\nWhen it needs filters, sorting, pagination, idempotent retries or more than five searches a day. Page JSON is for reading known URLs, for example a product link a user pasted."
}