SAMPLE REPORTScanned October 8, 2026 · 2.7 s · score model v2.3 · 2 pages read

Sample report: web-scraping.dev

A real, unedited result of our free agent readiness test. The store is web-scraping.dev, a public mock store that Scrapfly publishes for testing web crawlers. We picked it so we can show everything without naming a real brand; it isn’t a Specoria customer.

Agent readiness score

75/100 Partly ready

Estimated score once the top three priorities are fixed: 89

23 checks measured · 2 not verifiable · 2 not applicable to this store

Source: Specoria free test, sample report (JSON) ·

Categories

Access100
Product data83
Policies and trust7
Consistency100
Action (cart and orders)82

Two findings, in full

The result page shows the findings that cost the most points as full cards. The first two from this report:

Machine-readable return policy

Failed
NOW

Your return policy isn’t in structured data, so an agent can’t verify a condition like “30-day returns”.

TARGET

The return policy is defined once at organization level (OnlineStore → hasMerchantReturnPolicy) or on the product offer, with the same values as your returns page.

FIX
{
  "@context": "https://schema.org",
  "@type": "OnlineStore",
  "@id": "https://web-scraping.dev/#org",
  "name": "Store Name",
  "url": "https://web-scraping.dev",
  "hasMerchantReturnPolicy": {
    "@type": "MerchantReturnPolicy",
    "applicableCountry": "US",
    "returnPolicyCountry": "US",
    "returnPolicyCategory": "https://schema.org/MerchantReturnFiniteReturnWindow",
    "merchantReturnDays": 30,
    "returnMethod": "https://schema.org/ReturnByMail",
    "returnFees": "https://schema.org/FreeReturn"
  }
}
IMPACT

The return window is an agent filter; a store it can’t verify isn’t recommended to a shopper who wants returns.

EFFORT

1-2 hours · developer (once, at organization level)

HOW TO VERIFY

The Rich Results Test should show the return policy under “Merchant listings”. Note: if it’s set in Google Merchant Center, that setting applies on Google.

Returns page and window

Failed
NOW

No return policy link was found on the homepage or product page; it may be added later by JavaScript.

TARGET

The homepage links to an HTML returns page that states the window, fees and method clearly.

IMPACT

An agent wants to tell the shopper the return window and who pays; if the page isn’t clear it can’t verify the condition.

EFFORT

1 hour · content

HOW TO VERIFY

The returns page should state the window in days, who pays for return shipping and how to return.

All checks

Every check’s status and the sentence the result page shows. Titles link to the check’s permanent page.

Access · 100

Product data · 83

Policies and trust · 7

Consistency · 100

Action (cart and orders) · 82

Information rows (no effect on score)

Training bots (no effect on score)
Training bots aren’t blocked.
Other AI bots (no effect on score)
Applebot-Extended, Meta-ExternalAgent, Amazonbot, MistralAI-User and Bytespider aren’t blocked.
robots.txt group precedence (no effect on score)
No agent group shadowing the general (*) rules was seen.
Content signals · Content-Signal (no effect on score)
robots.txt has no Content-Signal line.
Access with a bot identity (possible block)
A request that identified itself as a bot (SpecoriaBot) opened too.
Cloudflare
Cloudflare wasn’t detected.
llms.txt (no effect on score)
The site has no /llms.txt. Independent studies show AI bots rarely read it, so it isn’t scored.
Agent protocols and discovery files (no effect on score)
No UCP, MCP, A2A agent card, AI Catalog, API Catalog, Web Bot Auth directory, WebMCP or ACP signal was found. Protocols like Google UCP and OpenAI ACP are still early; this doesn’t affect the score.
Merchant Center / Search Console
Shipping and return settings in Google Merchant Center and Search Console can’t be seen from outside. If set there, they apply on Google surfaces; other agents read your pages.
Payment providers
No known payment provider was detected on the page.
Online return request
No online return request (by order number) link was found.
Pop-ups and newsletter
No pop-up markers were seen.

How this scan was run

  • The scan ran from our team’s machine with the free test’s own code (apps/worker/src/scan/run.ts (runScan), commit a5e9875) and took 2.7 seconds.
  • The optional AI step (category and scenario wording) was off; the score and every check are independent of it.
  • No second network was used; the store opened on the first request.
  • The simulation built from the result isn’t shown on this page. In the JSON “sim” block the two competitor prices are placeholders (3% below and 4% above the product price), not real stores.
  • The result object is unedited (none: the result object below is the scan output as produced).

The same report as JSON

The result object our panel returns; you can load it into your own spreadsheet or BI tool. Download the JSON file

Show the JSON
{
  "meta": {
    "label": {
      "en": "Sample report",
      "tr": "Örnek rapor"
    },
    "store": "web-scraping.dev",
    "store_about": {
      "owner": "Scrapfly",
      "url": "https://web-scraping.dev/",
      "note": "Public mock e-commerce site published for testing web scrapers; not a Specoria customer."
    },
    "run": {
      "where": "local",
      "code": "apps/worker/src/scan/run.ts (runScan)",
      "commit": "a5e9875",
      "llm": false,
      "relay": false,
      "lang": "en",
      "duration_ms": 2653,
      "run_at": "2026-10-08T11:48:06.279Z"
    },
    "edits": "none: the result object below is the scan output as produced"
  },
  "result": {
    "model": "v2.3",
    "domain": "web-scraping.dev",
    "product_url": "https://web-scraping.dev/product/1",
    "scanned_at": "2026-10-08T11:48:06.279Z",
    "score": 75,
    "raw_score": 75,
    "level": "partial",
    "insufficient": false,
    "blockers": [],
    "categories": [
      {
        "id": "access",
        "score": 100,
        "measured": 5,
        "total": 5
      },
      {
        "id": "product",
        "score": 83,
        "measured": 6,
        "total": 6
      },
      {
        "id": "policy",
        "score": 7,
        "measured": 5,
        "total": 6
      },
      {
        "id": "consistency",
        "score": 100,
        "measured": 3,
        "total": 5
      },
      {
        "id": "action",
        "score": 82,
        "measured": 4,
        "total": 5
      }
    ],
    "checks": [
      {
        "id": "bots_search",
        "status": "pass"
      },
      {
        "id": "waf_access",
        "status": "pass"
      },
      {
        "id": "no_js",
        "status": "pass"
      },
      {
        "id": "sitemap",
        "status": "pass"
      },
      {
        "id": "indexable",
        "status": "pass"
      },
      {
        "id": "product_schema",
        "status": "pass"
      },
      {
        "id": "offer_complete",
        "status": "pass"
      },
      {
        "id": "product_identity",
        "status": "warn",
        "detail": "gtin,sku",
        "credit": 0.35
      },
      {
        "id": "product_media",
        "status": "pass"
      },
      {
        "id": "reviews",
        "status": "pass"
      },
      {
        "id": "variants",
        "status": "warn",
        "detail": "no_productgroup",
        "credit": 0.5
      },
      {
        "id": "returns_machine",
        "status": "fail"
      },
      {
        "id": "returns_human",
        "status": "fail"
      },
      {
        "id": "shipping_machine",
        "status": "fail"
      },
      {
        "id": "shipping_human",
        "status": "fail"
      },
      {
        "id": "org_identity",
        "status": "warn",
        "detail": "contact",
        "credit": 0.66
      },
      {
        "id": "legal_pages",
        "status": "na",
        "reason": "not_applicable"
      },
      {
        "id": "price_match",
        "status": "pass"
      },
      {
        "id": "stock_match",
        "status": "pass"
      },
      {
        "id": "market_match",
        "status": "pass"
      },
      {
        "id": "policy_match",
        "status": "na",
        "reason": "no_data"
      },
      {
        "id": "price_transparency",
        "status": "na",
        "reason": "not_applicable"
      },
      {
        "id": "add_to_cart",
        "status": "pass"
      },
      {
        "id": "cart_accessible",
        "status": "pass"
      },
      {
        "id": "guest_checkout",
        "status": "na",
        "reason": "external"
      },
      {
        "id": "order_tracking",
        "status": "fail"
      },
      {
        "id": "site_search",
        "status": "pass"
      }
    ],
    "info": [
      {
        "id": "training_bots",
        "value": "no"
      },
      {
        "id": "other_bots",
        "value": "no"
      },
      {
        "id": "robots_groups",
        "value": "no"
      },
      {
        "id": "content_signals",
        "value": "no"
      },
      {
        "id": "bot_ua",
        "value": "no"
      },
      {
        "id": "cloudflare",
        "value": "no"
      },
      {
        "id": "llms_txt",
        "value": "no"
      },
      {
        "id": "protocols",
        "value": "no"
      },
      {
        "id": "policy_sources",
        "value": "unknown"
      },
      {
        "id": "payments",
        "value": "no"
      },
      {
        "id": "returns_portal",
        "value": "no"
      },
      {
        "id": "popups",
        "value": "no"
      }
    ],
    "priorities": [
      "returns_machine",
      "returns_human",
      "shipping_machine",
      "product_identity",
      "shipping_human",
      "order_tracking",
      "variants",
      "org_identity"
    ],
    "potential": 89,
    "market": {
      "country": "US",
      "currency": "USD",
      "lang": "en",
      "legal_return_days": null,
      "return_days": null,
      "return_fees": null,
      "free_shipping_over": null,
      "delivery": null,
      "extracted_by": "none"
    },
    "product": {
      "name": "Box of Chocolate Candy",
      "price": 9.99,
      "currency": "USD",
      "availability": "InStock"
    },
    "sim": {
      "product": {
        "name": "Box of Chocolate Candy",
        "price": 9.99,
        "currency": "USD"
      },
      "budget": 20,
      "return_days": 30,
      "scenario": {
        "tr": null,
        "en": null
      },
      "category": {
        "tr": null,
        "en": null
      },
      "slots": {
        "access": "ok",
        "price": "ok",
        "shipping": "bad",
        "returns": "bad"
      },
      "outcome": "eliminated",
      "reason": "shipping_machine",
      "competitors": [
        {
          "price": 9.69
        },
        {
          "price": 10.39
        }
      ]
    },
    "coverage": {
      "pages": 2,
      "measured": 23,
      "unverifiable": 2,
      "not_applicable": 2
    },
    "site_type": {
      "type": "ecommerce",
      "detected": "service",
      "confidence": "low",
      "evidence": [
        "JSON-LD educationalorganization"
      ],
      "source": "default"
    },
    "probes": [
      {
        "id": "1.2",
        "status": "partial",
        "note": "GPTBot: -"
      },
      {
        "id": "1.3",
        "status": "pass",
        "note": "Google-Extended: default allow"
      },
      {
        "id": "1.4",
        "status": "fail",
        "note": "none named"
      },
      {
        "id": "1.10",
        "status": "pass",
        "note": "1407 ms"
      },
      {
        "id": "1.13",
        "status": "pass",
        "note": "HTTP 404"
      },
      {
        "id": "1.19",
        "status": "pass",
        "note": "https"
      },
      {
        "id": "1.21",
        "status": "pass",
        "note": "viewport width=device-width, initial-scale=1, shr"
      },
      {
        "id": "1.28",
        "status": "pass",
        "note": "lang en · hreflang 0"
      },
      {
        "id": "1.29",
        "status": "partial",
        "note": "Cache-Control -"
      },
      {
        "id": "2.20",
        "status": "partial",
        "note": "nav, footer"
      },
      {
        "id": "2.28",
        "status": "pass",
        "note": "sameAs 2"
      },
      {
        "id": "1.20",
        "status": "pass",
        "note": "product canonical same host"
      },
      {
        "id": "1.22",
        "status": "pass",
        "note": "product snippet allowed"
      },
      {
        "id": "1.26",
        "status": "partial",
        "note": "product h1 0 · skipped level"
      },
      {
        "id": "1.27",
        "status": "pass",
        "note": "product title 47 · description 64"
      },
      {
        "id": "2.26",
        "status": "pass",
        "note": "product JSON-LD 1/1"
      },
      {
        "id": "2.11",
        "status": "pass",
        "note": "product JSON-LD 1"
      },
      {
        "id": "2.22",
        "status": "pass",
        "note": "og:title, og:image, og:description"
      },
      {
        "id": "2.21",
        "status": "pass",
        "note": "home yes · product yes"
      },
      {
        "id": "2.7",
        "status": "fail",
        "note": "product FAQPage/QAPage"
      },
      {
        "id": "2.8",
        "status": "fail",
        "note": "product BreadcrumbList"
      },
      {
        "id": "2.13",
        "status": "partial",
        "note": "alt 4/8"
      },
      {
        "id": "2.14",
        "status": "fail",
        "note": "/llms.txt missing"
      },
      {
        "id": "2.23",
        "status": "fail",
        "note": "/AGENTS.md 404"
      },
      {
        "id": "2.25",
        "status": "fail",
        "note": "/llms-full.txt 404"
      },
      {
        "id": "4.4",
        "status": "fail",
        "note": "HTTP 404"
      }
    ]
  }
}

Questions

Is this a real report?

Yes. Every number and sentence on this page is generated from the scan output in the JSON below; nothing was corrected by hand. The date and duration come from that output too.

Why this store?

We didn’t want to use a real brand’s site as an example without permission. This is a mock store published openly for testing crawlers, so we can show it without hiding anything.

If I re-run the test, will I get the same result?

If the rules and the site haven’t changed, yes: the score is rule-based and no AI grades it. If the site changes or the score model is updated, the result changes too; that’s why the report carries a date and a model version.

Test your own store Method and every check →