---
title: "Sample report: web-scraping.dev · Specoria"
description: "A real, unedited result of our free agent readiness test on web-scraping.dev, Scrapfly’s public mock store for testing crawlers. Not a customer of ours."
source_url: "https://specoria.com/reports/sample-report/"
lang: "en"
---

SAMPLE REPORT Scanned 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)](https://specoria.com/reports/sample-report/sample-scan.json) · October 8, 2026

## Categories

Access **100**

Product data **83**

Policies and trust **7**

Consistency **100**

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.

[How this check is measured →](https://specoria.com/method/checks/returns-machine/)

### 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.

[How this check is measured →](https://specoria.com/method/checks/returns-human/)

## All checks

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

#### Access · 100

- Passed **[Search and user agents allowed (robots.txt)](https://specoria.com/method/checks/bots-search/)** robots.txt doesn’t block OAI-SearchBot, ChatGPT-User, Claude, Perplexity, Googlebot, Google-Agent, Bingbot or Applebot on the homepage or the product page.
- Passed **[Is bot protection open to agents?](https://specoria.com/method/checks/waf-access/)** The homepage and product page responded normally to an automated request; we didn’t hit a challenge wall.
- Passed **[Product name and price readable without JavaScript](https://specoria.com/method/checks/no-js/)** The product name and price are in the page’s initial HTML, so agent crawlers that don’t run JavaScript can read them.
- Passed **[Sitemap](https://specoria.com/method/checks/sitemap/)** A sitemap was found, so agents can discover your product pages.
- Passed **[Can the product page be indexed?](https://specoria.com/method/checks/indexable/)** The product page has no noindex and its canonical URL is on your own domain.

#### Product data · 83

- Passed **[Product structured data (schema.org)](https://specoria.com/method/checks/product-schema/)** The product page includes schema.org Product data.
- Passed **[Price, currency, availability and URL](https://specoria.com/method/checks/offer-complete/)** The offer data includes price, currency, availability and the product URL.
- Partial **[Product identity (GTIN/MPN, brand, SKU)](https://specoria.com/method/checks/product-identity/)** Product identity is incomplete: GTIN, SKU.
- Passed **[Images and description](https://specoria.com/method/checks/product-media/)** The product data includes an image and a description of useful length (at least 20 words or 120 characters).
- Passed **[Reviews and rating](https://specoria.com/method/checks/reviews/)** The product data includes a rating and a review count (AggregateRating).
- Partial **[Can variants (size, color) be addressed?](https://specoria.com/method/checks/variants/)** Variants open at their own URLs, but structured data has no ProductGroup + hasVariant.

#### Policies and trust · 7

- Failed **[Machine-readable return policy](https://specoria.com/method/checks/returns-machine/)** Your return policy isn’t in structured data, so an agent can’t verify a condition like “30-day returns”.
- Failed **[Returns page and window](https://specoria.com/method/checks/returns-human/)** No return policy link was found on the homepage or product page; it may be added later by JavaScript.
- Failed **[Machine-readable shipping information](https://specoria.com/method/checks/shipping-machine/)** Shipping time and cost aren’t in structured data, so agents can’t compare your delivery terms.
- Failed **[Shipping cost and time on the page](https://specoria.com/method/checks/shipping-human/)** No shipping cost or delivery time was found on the page.
- Partial **[Business identity](https://specoria.com/method/checks/org-identity/)** Organization data is present but missing: contact details.
- Not applicable **[Legal pages (distance selling, Türkiye)](https://specoria.com/method/checks/legal-pages/)** Doesn’t apply to this store; not counted in the score.

#### Consistency · 100

- Passed **[Price consistency](https://specoria.com/method/checks/price-match/)** The price in structured data matches the price shown on the page.
- Passed **[Stock consistency](https://specoria.com/method/checks/stock-match/)** The availability in structured data matches the page.
- Passed **[Currency and language](https://specoria.com/method/checks/market-match/)** The price currency and page language match the store’s market.
- Not verifiable **[Return window consistency](https://specoria.com/method/checks/policy-match/)** Nothing to compare was found; not counted in the score.
- Not applicable **[Taxes-included wording](https://specoria.com/method/checks/price-transparency/)** Doesn’t apply to this store; not counted in the score.

#### Action (cart and orders) · 82

- Passed **[Add-to-cart button in the initial HTML](https://specoria.com/method/checks/add-to-cart/)** An add-to-cart button or form is in the initial HTML.
- Passed **[Is the cart button accessible?](https://specoria.com/method/checks/cart-accessible/)** Add to cart is a real button with a readable name.
- Not verifiable **[Buying without an account](https://specoria.com/method/checks/guest-checkout/)** Can’t be seen from outside without a real browser; the deep audit report measures it with one.
- Failed **[Order tracking](https://specoria.com/method/checks/order-tracking/)** No order tracking link was found.
- Passed **[Site search that works by URL](https://specoria.com/method/checks/site-search/)** Site search works with a URL parameter (e.g. /search?q=…).

## 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](https://specoria.com/reports/sample-report/sample-scan.json)

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](https://specoria.com/#contact) [Method and every check →](https://specoria.com/method/)
