{
  "name": "Agentic commerce benchmark across all stores",
  "category": "all",
  "url": "https://ottom.io/benchmarks/all",
  "summary": "Across 251 stores Ottom measured at every stage in the 90 days to 25 September 2026, in every category and including stores whose category could not be determined, the median agentic readiness score was 55 out of 100. 2% of them let an AI shopping agent reach the payment step.",
  "scope": "This benchmark pools every store Ottom has scanned, across all categories, including stores whose category could not be determined. Each store is counted once, whichever category it is in.",
  "caveat": "A store enters Ottom’s survey only if a catalogue of at least ten products can be read from it in one request, which in practice means Shopify and WooCommerce storefronts. These figures therefore describe the storefronts Ottom can read in bulk rather than online retail as a whole.",
  "window": {
    "start": "2026-06-27",
    "end": "2026-09-25",
    "days": 90
  },
  "storesMeasuredAtEveryStage": 251,
  "storesScanned": 254,
  "storesLeftOutForScoringVersion": 0,
  "methodologyVersion": "bench-v4",
  "methodology": "https://ottom.io/benchmarks/methodology",
  "updatedAt": "2026-09-25T03:20:06.545Z",
  "license": "https://creativecommons.org/licenses/by/4.0/",
  "attribution": "Ottom, Agentic commerce benchmark across all stores, 27 June 2026 to 25 September 2026, methodology bench-v4. https://ottom.io/benchmarks/all. Licensed CC BY 4.0.",
  "metrics": {
    "score": {
      "p25": 52,
      "median": 55,
      "p75": 57
    },
    "stages": [
      {
        "stage": "discover",
        "median": 75,
        "passRate": 39,
        "storeCount": 251
      },
      {
        "stage": "evaluate",
        "median": 88,
        "passRate": 87,
        "storeCount": 251
      },
      {
        "stage": "compare",
        "median": 100,
        "passRate": 91,
        "storeCount": 251
      },
      {
        "stage": "buy",
        "median": 0,
        "passRate": 2,
        "storeCount": 251
      }
    ],
    "checkout": {
      "completionRate": 2,
      "storeCount": 251
    },
    "stalls": [
      {
        "code": "missing_gtin",
        "title": "Products have no GTIN or MPN to match against",
        "stage": "evaluate",
        "storeShare": 66
      },
      {
        "code": "hover_only_variant_picker",
        "title": "Size or colour can only be chosen by hovering",
        "stage": "buy",
        "storeShare": 61
      },
      {
        "code": "no_sitemap",
        "title": "No sitemap for agents to crawl",
        "stage": "discover",
        "storeShare": 57
      },
      {
        "code": "cart_requires_js",
        "title": "Add to cart needs JavaScript the agent cannot run",
        "stage": "buy",
        "storeShare": 17
      },
      {
        "code": "no_variant_data",
        "title": "Variants are not described in structured data",
        "stage": "evaluate",
        "storeShare": 13
      },
      {
        "code": "popup_blocks_flow",
        "title": "A popup blocks the path to the cart",
        "stage": "buy",
        "storeShare": 10
      },
      {
        "code": "missing_schema_org",
        "title": "Product pages have no schema.org markup",
        "stage": "discover",
        "storeShare": 9
      },
      {
        "code": "payment_step_unreachable",
        "title": "Agent could not reach the payment step",
        "stage": "buy",
        "storeShare": 9
      },
      {
        "code": "missing_shipping_terms",
        "title": "Shipping cost cannot be determined before checkout",
        "stage": "compare",
        "storeShare": 7
      },
      {
        "code": "bot_wall",
        "title": "Bot protection blocks the agent before the storefront loads",
        "stage": "discover",
        "storeShare": 6
      }
    ],
    "withheldStallCodes": 4,
    "observedStoreCount": 254,
    "otherScorerStoreCount": 0
  },
  "readability": {
    "name": "Can AI agents read these stores?",
    "url": "https://ottom.io/benchmarks#readability",
    "alsoOn": "https://ottom.io/benchmarks/all#readability",
    "summary": "Before an AI agent can compare or buy anything, it has to be let in and find something it can read. These figures come from the first step of every scan, across the 253 online stores Ottom scanned in the 90 days to 25 September 2026, in every category.",
    "caveat": "Each share is counted over the stores that reached the point where it is checked, which the sentence names. A share is withheld when fewer than 5 stores show it. A store enters Ottom’s survey only if its catalogue can be read, so these are mostly stores an agent can reach, and blocking may well be more common across online retail as a whole.",
    "window": {
      "start": "2026-06-27",
      "end": "2026-09-25",
      "days": 90
    },
    "storesScanned": 253,
    "taxonomyVersion": "stall-v2",
    "methodologyVersion": "bench-v4",
    "methodology": "https://ottom.io/benchmarks/methodology#readability",
    "updatedAt": "2026-09-25T03:20:06.667Z",
    "license": "https://creativecommons.org/licenses/by/4.0/",
    "attribution": "Ottom, Can AI agents read these stores?, 27 June 2026 to 25 September 2026, methodology bench-v4. https://ottom.io/benchmarks. Licensed CC BY 4.0.",
    "cohorts": {
      "scanned": 253,
      "allowed": 253,
      "opened": 238,
      "read": 237
    },
    "checks": [
      {
        "code": "robots_blocks_agent",
        "title": "robots.txt blocks AI shopping agents",
        "basis": "scanned",
        "storeCount": 253,
        "share": null,
        "withheld": "too_few_stores",
        "sentence": "Withheld. Fewer than 5 of the 253 online stores Ottom scanned in the 90 days to 25 September 2026 showed this, too few to report a share without pointing at a store."
      },
      {
        "code": "bot_wall",
        "title": "Bot protection blocks the agent before the storefront loads",
        "basis": "allowed",
        "storeCount": 253,
        "share": 6,
        "withheld": null,
        "sentence": "Of the 253 stores Ottom scanned in the 90 days to 25 September 2026 whose robots.txt lets AI agents in, 6% stop an AI agent with bot protection before the storefront loads."
      },
      {
        "code": "no_product_feed",
        "title": "No machine-readable product feed",
        "basis": "opened",
        "storeCount": 238,
        "share": null,
        "withheld": "too_few_stores",
        "sentence": "Withheld. Fewer than 5 of the 238 stores Ottom scanned in the 90 days to 25 September 2026 whose storefront an AI agent could open showed this, too few to report a share without pointing at a store."
      },
      {
        "code": "no_llms_txt",
        "title": "No llms.txt to orient agents",
        "basis": "opened",
        "storeCount": 238,
        "share": 3,
        "withheld": null,
        "sentence": "Of the 238 stores Ottom scanned in the 90 days to 25 September 2026 whose storefront an AI agent could open, 3% publish no llms.txt."
      },
      {
        "code": "missing_schema_org",
        "title": "Product pages have no schema.org markup",
        "basis": "read",
        "storeCount": 237,
        "share": 10,
        "withheld": null,
        "sentence": "Of the 237 stores Ottom scanned in the 90 days to 25 September 2026 whose product pages an AI agent could read, 10% carry no schema.org Product markup on those pages."
      },
      {
        "code": "missing_shipping_terms",
        "title": "Shipping cost cannot be determined before checkout",
        "basis": "read",
        "storeCount": 237,
        "share": 7,
        "withheld": null,
        "sentence": "Of the 237 stores Ottom scanned in the 90 days to 25 September 2026 whose product pages an AI agent could read, 7% give no shipping costs an agent can read before checkout."
      }
    ]
  }
}