CreditClawCreditClawDocs
    View as Markdown

    Scan

    The Scan endpoint lets you programmatically scan any merchant domain and retrieve its ASX Score (Agent Shopping Experience Score) — a 0–100 rating of how well the site supports AI shopping agents.


    Scan a Domain

    Scan a merchant's website and get the ASX Score with a full signal breakdown and recommendations.

    MethodPOST
    Path/api/v1/scan
    AuthOptional — Bearer token for paid tier features

    Request Body

    {
      "domain": "staples.com"
    }
    
    FieldTypeRequiredDescription
    domainstringYesThe merchant domain to scan (e.g. staples.com, gucci.com). Protocol and path are stripped automatically.

    Response

    {
      "domain": "staples.com",
      "score": 72,
      "label": "Good",
      "cached": false,
      "scannedAt": "2026-03-31T12:00:00Z",
      "breakdown": {
        "clarity": {
          "score": 27,
          "max": 35,
          "signals": [
            { "key": "json_ld", "label": "JSON-LD / Structured Data", "score": 12, "max": 15, "detail": "3 JSON-LD blocks found. Product schema detected. Offer/pricing data in schema." },
            { "key": "product_feed", "label": "Product Feed / Sitemap", "score": 7, "max": 10, "detail": "sitemap.xml found. Valid XML sitemap structure. Product URLs detected." },
            { "key": "clean_html", "label": "Clean HTML / Semantic Markup", "score": 8, "max": 10, "detail": "Partial semantic structure (3/7 landmark elements). Good heading hierarchy." }
          ]
        },
        "discoverability": {
          "score": 20,
          "max": 30,
          "signals": [
            { "key": "search_api", "label": "Search API / MCP", "score": 3, "max": 10, "detail": "Versioned API endpoint detected." },
            { "key": "site_search", "label": "Internal Site Search", "score": 8, "max": 10, "detail": "Search form detected. Search autocomplete capability detected." },
            { "key": "page_load", "label": "Page Load Performance", "score": 4, "max": 5, "detail": "Good load time: 1200ms" },
            { "key": "product_page", "label": "Product Page Quality", "score": 5, "max": 5, "detail": "Clear pricing, variant selectors, direct product URLs." }
          ]
        },
        "reliability": {
          "score": 25,
          "max": 35,
          "signals": [
            { "key": "access_auth", "label": "Access & Authentication", "score": 7, "max": 10, "detail": "Guest checkout available. Direct checkout links found." },
            { "key": "order_management", "label": "Order Management", "score": 7, "max": 10, "detail": "Add to cart action detected. Predictable cart URL structure." },
            { "key": "checkout_flow", "label": "Checkout Flow", "score": 8, "max": 10, "detail": "Clearly labeled payment methods detected. Shipping options described." },
            { "key": "bot_tolerance", "label": "Bot Tolerance", "score": 3, "max": 5, "detail": "robots.txt allows general crawling. No CAPTCHA on homepage." }
          ]
        }
      },
      "recommendations": [
        {
          "signal": "search_api",
          "impact": "high",
          "title": "Expose a search API or MCP endpoint",
          "description": "Provide a programmatic search endpoint that AI agents can query directly.",
          "potentialGain": 7
        }
      ]
    }
    

    Caching

    Scan results are cached for 30 days. If a domain was scanned within the last 30 days, the cached result is returned immediately with "cached": true. Authenticated users on paid plans can force a re-scan regardless of cache age.

    Errors

    StatusMeaning
    400Invalid domain format
    422Domain could not be reached or resolved
    429Rate limit exceeded
    500Internal scan error