{
  "x402Version": 2,
  "id": 38721,
  "slug": "38721",
  "resource": "https://scrapecheck.fly.dev/verify",
  "description": "Checks whether a value you did not fetch yourself is actually on the page it came from. Independently re-fetches the source and returns a signed pass/fail/unverifiable verdict. A claim is never certified unless the re-fetched page contains it, and anything unconfirmed is unverifiable, never pass. Server-rendered pages only. $0.01 per check. First 100 checks per client are free: resend this exact request with header X-Use-Free-Allowance: yes and no payment to use them.",
  "type": "http",
  "serviceName": "ScrapeCheck",
  "resourceType": "Utilities",
  "accepts": [
    {
      "scheme": "exact",
      "network": "eip155:8453",
      "payTo": "0x455F20eC147477CAFcd6D77C1604529f3c4Ff665",
      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "amount": "10000",
      "amountUsd": 0.01,
      "maxTimeoutSeconds": 300
    },
    {
      "scheme": "exact",
      "network": "eip155:137",
      "payTo": "0x455F20eC147477CAFcd6D77C1604529f3c4Ff665",
      "asset": "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359",
      "amount": "10000",
      "amountUsd": 0.01,
      "maxTimeoutSeconds": 300
    },
    {
      "scheme": "exact",
      "network": "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",
      "payTo": "4HuSbgqgKkeUM5jEzAzLGpxtivCGda9eEtYc2Sp1fLpM",
      "asset": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
      "amount": "10000",
      "amountUsd": 0.01,
      "maxTimeoutSeconds": 300
    }
  ],
  "outputSchema": {
    "properties": {
      "example": {
        "properties": {
          "check_type": {
            "description": "The check contract used, e.g. web_field_v1.",
            "type": "string"
          },
          "confidence": {
            "description": "The engine's confidence in the verdict, 0 to 1.",
            "type": "number"
          },
          "engine": {
            "description": "Engine name and version digest that produced the verdict.",
            "type": "string"
          },
          "evidence": {
            "description": "What the re-fetch observed.",
            "properties": {
              "lens_votes": {
                "description": "Boolean votes is_real, is_current, does_answer from the judging lenses.",
                "properties": {
                  "does_answer": {
                    "type": "boolean"
                  },
                  "is_current": {
                    "type": "boolean"
                  },
                  "is_real": {
                    "type": "boolean"
                  }
                },
                "type": "object"
              },
              "refetch_excerpt": {
                "description": "Excerpt of the re-fetched page content the verdict was judged against.",
                "type": "string"
              },
              "refetched_at": {
                "description": "UTC timestamp of the engine's own fetch of the page.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "key_id": {
            "description": "Identifier of the signing key; resolve against GET /pubkey.",
            "type": "string"
          },
          "reasons": {
            "description": "The stated reasons for the verdict.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "signature": {
            "description": "ed25519 signature over canonical sorted-key JSON of every field except signature.",
            "type": "string"
          },
          "source_hash": {
            "description": "sha256 of the normalized page text the verdict judged; null when no anchor text was obtained.",
            "type": [
              "string",
              "null"
            ]
          },
          "verdict": {
            "description": "One of pass, fail, unverifiable.",
            "enum": [
              "pass",
              "fail",
              "unverifiable"
            ],
            "type": "string"
          },
          "verdict_id": {
            "description": "Unique identifier for this verdict; its issuance is confirmable at GET /verdicts/{verdict_id}.",
            "type": "string"
          },
          "verifier_url": {
            "description": "The issuing service's URL; display only, never a trust root.",
            "type": "string"
          }
        },
        "required": [
          "verdict_id",
          "verdict",
          "confidence",
          "reasons",
          "evidence",
          "check_type",
          "engine",
          "key_id",
          "verifier_url",
          "source_hash",
          "signature"
        ],
        "type": "object"
      },
      "type": {
        "type": "string"
      }
    },
    "required": [
      "type"
    ],
    "type": "object"
  },
  "extensions": {
    "bazaar": {
      "info": {
        "input": {
          "body": {
            "asked": "get the current price and stock status of A Light in the Attic",
            "claim": {
              "in_stock": true,
              "price": "£51.77"
            },
            "url": "https://books.toscrape.com/catalogue/a-light-in-the-attic_1000/index.html"
          },
          "bodyType": "json",
          "method": "POST",
          "type": "http"
        },
        "output": {
          "example": {
            "check_type": "web_field_v1",
            "confidence": 0.97,
            "engine": "web_field_v1/0.2.1+6739b7f9ebf8",
            "evidence": {
              "lens_votes": {
                "does_answer": true,
                "is_current": true,
                "is_real": true
              },
              "refetch_excerpt": "…$29.99…",
              "refetched_at": "2026-07-31T17:38:14.697Z"
            },
            "key_id": "k2",
            "reasons": [
              "claimed price £51.77 found in re-fetched page; page shows \"in stock\""
            ],
            "signature": "ed25519:…",
            "source_hash": "sha256:…",
            "verdict": "pass",
            "verdict_id": "965abecd-a85f-45c7-98a2-49bde4bb9c51",
            "verifier_url": "https://scrapecheck.fly.dev"
          },
          "type": "json"
        }
      },
      "schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "input": {
            "additionalProperties": false,
            "properties": {
              "body": {
                "properties": {
                  "asked": {
                    "description": "the original request, plain text",
                    "type": "string"
                  },
                  "claim": {
                    "description": "the scraper's claimed field values",
                    "type": "object"
                  },
                  "url": {
                    "description": "source page the scraper claims to have read (public http/https)",
                    "type": "string"
                  }
                },
                "required": [
                  "url",
                  "claim",
                  "asked"
                ]
              },
              "bodyType": {
                "enum": [
                  "json",
                  "form-data",
                  "text"
                ],
                "type": "string"
              },
              "method": {
                "enum": [
                  "POST"
                ],
                "type": "string"
              },
              "type": {
                "const": "http",
                "type": "string"
              }
            },
            "required": [
              "type",
              "method",
              "bodyType",
              "body"
            ],
            "type": "object"
          },
          "output": {
            "properties": {
              "example": {
                "properties": {
                  "check_type": {
                    "description": "The check contract used, e.g. web_field_v1.",
                    "type": "string"
                  },
                  "confidence": {
                    "description": "The engine's confidence in the verdict, 0 to 1.",
                    "type": "number"
                  },
                  "engine": {
                    "description": "Engine name and version digest that produced the verdict.",
                    "type": "string"
                  },
                  "evidence": {
                    "description": "What the re-fetch observed.",
                    "properties": {
                      "lens_votes": {
                        "description": "Boolean votes is_real, is_current, does_answer from the judging lenses.",
                        "properties": {
                          "does_answer": {
                            "type": "boolean"
                          },
                          "is_current": {
                            "type": "boolean"
                          },
                          "is_real": {
                            "type": "boolean"
                          }
                        },
                        "type": "object"
                      },
                      "refetch_excerpt": {
                        "description": "Excerpt of the re-fetched page content the verdict was judged against.",
                        "type": "string"
                      },
                      "refetched_at": {
                        "description": "UTC timestamp of the engine's own fetch of the page.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "key_id": {
                    "description": "Identifier of the signing key; resolve against GET /pubkey.",
                    "type": "string"
                  },
                  "reasons": {
                    "description": "The stated reasons for the verdict.",
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "signature": {
                    "description": "ed25519 signature over canonical sorted-key JSON of every field except signature.",
                    "type": "string"
                  },
                  "source_hash": {
                    "description": "sha256 of the normalized page text the verdict judged; null when no anchor text was obtained.",
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "verdict": {
                    "description": "One of pass, fail, unverifiable.",
                    "enum": [
                      "pass",
                      "fail",
                      "unverifiable"
                    ],
                    "type": "string"
                  },
                  "verdict_id": {
                    "description": "Unique identifier for this verdict; its issuance is confirmable at GET /verdicts/{verdict_id}.",
                    "type": "string"
                  },
                  "verifier_url": {
                    "description": "The issuing service's URL; display only, never a trust root.",
                    "type": "string"
                  }
                },
                "required": [
                  "verdict_id",
                  "verdict",
                  "confidence",
                  "reasons",
                  "evidence",
                  "check_type",
                  "engine",
                  "key_id",
                  "verifier_url",
                  "source_hash",
                  "signature"
                ],
                "type": "object"
              },
              "type": {
                "type": "string"
              }
            },
            "required": [
              "type"
            ],
            "type": "object"
          }
        },
        "required": [
          "input"
        ],
        "type": "object"
      }
    },
    "errorNote": "A page that cannot be verified is NOT an error: unverifiable (or fail on /verify-presence) is a signed 200 verdict. 4xx means the request never reached the engine.",
    "errors": [
      {
        "body": {},
        "name": "Payment Required",
        "note": "the x402 v2 challenge is not in the body; it is base64-encoded JSON in the PAYMENT-REQUIRED response header",
        "status": 402,
        "when": "any request without valid payment, a free-allowance header, or a service key — including requests with malformed bodies: payment is checked before input validation"
      },
      {
        "body": {
          "details": [
            "url: Invalid url",
            "claim: Required",
            "asked: Required"
          ],
          "error": "invalid input contract"
        },
        "name": "Bad Request",
        "note": "details lists one entry per failing field, in the form \"<field>: <problem>\"",
        "status": 400,
        "when": "payment or allowance has cleared but the body does not match the input contract"
      },
      {
        "body": {
          "error": "rate limit exceeded — try again shortly"
        },
        "name": "Too Many Requests",
        "status": 429,
        "when": "requests exceed the per-minute rate limit, paid or not"
      }
    ]
  },
  "tags": [
    "verification",
    "scraping",
    "data-quality",
    "trust",
    "web",
    "bazaar",
    "errorNote",
    "errors"
  ],
  "sourceHost": "scrapecheck.fly.dev",
  "lastUpdated": "2026-10-02T15:34:54.904Z",
  "quality": {
    "calls30d": 3,
    "uniquePayers30d": 3,
    "lastCalledAt": "2026-10-02T15:34:54.768Z"
  },
  "metadata": {
    "serviceName": "ScrapeCheck",
    "extensions": {
      "bazaar": {
        "info": {
          "input": {
            "body": {
              "asked": "get the current price and stock status of A Light in the Attic",
              "claim": {
                "in_stock": true,
                "price": "£51.77"
              },
              "url": "https://books.toscrape.com/catalogue/a-light-in-the-attic_1000/index.html"
            },
            "bodyType": "json",
            "method": "POST",
            "type": "http"
          },
          "output": {
            "example": {
              "check_type": "web_field_v1",
              "confidence": 0.97,
              "engine": "web_field_v1/0.2.1+6739b7f9ebf8",
              "evidence": {
                "lens_votes": {
                  "does_answer": true,
                  "is_current": true,
                  "is_real": true
                },
                "refetch_excerpt": "…$29.99…",
                "refetched_at": "2026-07-31T17:38:14.697Z"
              },
              "key_id": "k2",
              "reasons": [
                "claimed price £51.77 found in re-fetched page; page shows \"in stock\""
              ],
              "signature": "ed25519:…",
              "source_hash": "sha256:…",
              "verdict": "pass",
              "verdict_id": "965abecd-a85f-45c7-98a2-49bde4bb9c51",
              "verifier_url": "https://scrapecheck.fly.dev"
            },
            "type": "json"
          }
        },
        "schema": {
          "$schema": "https://json-schema.org/draft/2020-12/schema",
          "properties": {
            "input": {
              "additionalProperties": false,
              "properties": {
                "body": {
                  "properties": {
                    "asked": {
                      "description": "the original request, plain text",
                      "type": "string"
                    },
                    "claim": {
                      "description": "the scraper's claimed field values",
                      "type": "object"
                    },
                    "url": {
                      "description": "source page the scraper claims to have read (public http/https)",
                      "type": "string"
                    }
                  },
                  "required": [
                    "url",
                    "claim",
                    "asked"
                  ]
                },
                "bodyType": {
                  "enum": [
                    "json",
                    "form-data",
                    "text"
                  ],
                  "type": "string"
                },
                "method": {
                  "enum": [
                    "POST"
                  ],
                  "type": "string"
                },
                "type": {
                  "const": "http",
                  "type": "string"
                }
              },
              "required": [
                "type",
                "method",
                "bodyType",
                "body"
              ],
              "type": "object"
            },
            "output": {
              "properties": {
                "example": {
                  "properties": {
                    "check_type": {
                      "description": "The check contract used, e.g. web_field_v1.",
                      "type": "string"
                    },
                    "confidence": {
                      "description": "The engine's confidence in the verdict, 0 to 1.",
                      "type": "number"
                    },
                    "engine": {
                      "description": "Engine name and version digest that produced the verdict.",
                      "type": "string"
                    },
                    "evidence": {
                      "description": "What the re-fetch observed.",
                      "properties": {
                        "lens_votes": {
                          "description": "Boolean votes is_real, is_current, does_answer from the judging lenses.",
                          "properties": {
                            "does_answer": {
                              "type": "boolean"
                            },
                            "is_current": {
                              "type": "boolean"
                            },
                            "is_real": {
                              "type": "boolean"
                            }
                          },
                          "type": "object"
                        },
                        "refetch_excerpt": {
                          "description": "Excerpt of the re-fetched page content the verdict was judged against.",
                          "type": "string"
                        },
                        "refetched_at": {
                          "description": "UTC timestamp of the engine's own fetch of the page.",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "key_id": {
                      "description": "Identifier of the signing key; resolve against GET /pubkey.",
                      "type": "string"
                    },
                    "reasons": {
                      "description": "The stated reasons for the verdict.",
                      "items": {
                        "type": "string"
                      },
                      "type": "array"
                    },
                    "signature": {
                      "description": "ed25519 signature over canonical sorted-key JSON of every field except signature.",
                      "type": "string"
                    },
                    "source_hash": {
                      "description": "sha256 of the normalized page text the verdict judged; null when no anchor text was obtained.",
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "verdict": {
                      "description": "One of pass, fail, unverifiable.",
                      "enum": [
                        "pass",
                        "fail",
                        "unverifiable"
                      ],
                      "type": "string"
                    },
                    "verdict_id": {
                      "description": "Unique identifier for this verdict; its issuance is confirmable at GET /verdicts/{verdict_id}.",
                      "type": "string"
                    },
                    "verifier_url": {
                      "description": "The issuing service's URL; display only, never a trust root.",
                      "type": "string"
                    }
                  },
                  "required": [
                    "verdict_id",
                    "verdict",
                    "confidence",
                    "reasons",
                    "evidence",
                    "check_type",
                    "engine",
                    "key_id",
                    "verifier_url",
                    "source_hash",
                    "signature"
                  ],
                  "type": "object"
                },
                "type": {
                  "type": "string"
                }
              },
              "required": [
                "type"
              ],
              "type": "object"
            }
          },
          "required": [
            "input"
          ],
          "type": "object"
        }
      },
      "errorNote": "A page that cannot be verified is NOT an error: unverifiable (or fail on /verify-presence) is a signed 200 verdict. 4xx means the request never reached the engine.",
      "errors": [
        {
          "body": {},
          "name": "Payment Required",
          "note": "the x402 v2 challenge is not in the body; it is base64-encoded JSON in the PAYMENT-REQUIRED response header",
          "status": 402,
          "when": "any request without valid payment, a free-allowance header, or a service key — including requests with malformed bodies: payment is checked before input validation"
        },
        {
          "body": {
            "details": [
              "url: Invalid url",
              "claim: Required",
              "asked: Required"
            ],
            "error": "invalid input contract"
          },
          "name": "Bad Request",
          "note": "details lists one entry per failing field, in the form \"<field>: <problem>\"",
          "status": 400,
          "when": "payment or allowance has cleared but the body does not match the input contract"
        },
        {
          "body": {
            "error": "rate limit exceeded — try again shortly"
          },
          "name": "Too Many Requests",
          "status": 429,
          "when": "requests exceed the per-minute rate limit, paid or not"
        }
      ]
    }
  },
  "liveness": {
    "reliability": null
  },
  "verified": false,
  "featured": false,
  "provider": {
    "host": "scrapecheck.fly.dev",
    "manifest_name": "scrapecheck.fly.dev",
    "source": "cdp-mirror",
    "source_manifest_url": "https://api.cdp.coinbase.com/platform/v2/x402/discovery/resources",
    "submitted_at": "2026-10-14T01:15:01.050Z"
  },
  "exampleResponse": {
    "example": {
      "check_type": "string",
      "confidence": 0,
      "engine": "string",
      "evidence": {
        "lens_votes": {
          "does_answer": true,
          "is_current": true,
          "is_real": true
        },
        "refetch_excerpt": "string",
        "refetched_at": "string"
      },
      "key_id": "string",
      "reasons": [
        "string"
      ],
      "signature": "string",
      "source_hash": "string",
      "verdict": "pass",
      "verdict_id": "string",
      "verifier_url": "string"
    },
    "type": "string"
  }
}