ToolAssay

On-page SEO audit of up to 20 websites or pages

On-page SEO audit of up to 20 websites or pages: a 0-100 SEO score, A to F grade and the issues to fix, worst first (missing title or meta description, H1, noindex, HTTPS, mobile viewport, thin content, image alt text, Open Graph, structured data, sitemap, robots.txt), plus optional broken-link check. $0.005 per website, plus $0.0005 per link allowed when checkLinks is on. A call where no website could be audited is not charged. Runs nerolabs/bulk-seo-audit.

Answeringour last check, 2026-10-24
1 of 1checks answered this week
1032 msmedian answer time
$0.005listed price per call
$0.005price it asked us

Paid test badge: not yet. The checks above are free: we call the tool without paying and read the payment request it sends back. The Verified badge needs paid calls whose answers match the promised output, and nobody can buy a badge.

Endpoint

POST https://x402-agent-tools.nerolabs.workers.dev/seo-audit

CategoryImage and media
Provider hostx402-agent-tools.nerolabs.workers.dev
Networkseip155:8453
Payment schemesexact
Self-reported calls, 30 days2 from 1 payers (the provider's figure, not ours)

Our checks, last 30 days

DayResultHTTPAskedTime
2026-10-24 valid payment request 402$0.005 1032 ms

Example input (from the provider)

{
  "body": {
    "websites": [
      "example.com"
    ]
  },
  "bodyType": "json",
  "method": "POST",
  "type": "http"
}

Promised output schema (from the provider)

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "input": {
      "additionalProperties": false,
      "properties": {
        "body": {
          "additionalProperties": false,
          "properties": {
            "checkLinks": {
              "default": false,
              "description": "Also test the links on each audited page and list the broken ones (404, 410, 5xx or no answer). Off by default because it takes longer; charged per link checked.",
              "type": "boolean"
            },
            "checkSite": {
              "default": true,
              "description": "Also check each site once for a robots.txt file and an XML sitemap (from robots.txt, /sitemap.xml or /sitemap_index.xml). Free, a couple of extra requests per site.",
              "type": "boolean"
            },
            "keep": {
              "default": "all",
              "description": "Filtering happens after each page is audited. 'Only scores below the threshold' is the quick way to pull prospects with weak SEO out of a lead list.",
              "enum": [
                "all",
                "audited",
                "below_score",
                "problems"
              ],
              "type": "string"
            },
            "maxLinksPerPage": {
              "default": 20,
              "description": "With checkLinks on, the first this-many links on each page are tested (at most 20 through this shop).",
              "maximum": 20,
              "minimum": 1,
              "type": "integer"
            },
            "scoreThreshold": {
              "default": 70,
              "description": "Used by 'Only scores below the threshold'. Rows scoring below this are kept.",
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            },
            "websites": {
              "description": "Websites or bare domains to check, for example [\"acme.com\", \"https://www.example.org\"].",
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          },
          "required": [
            "websites"
          ],
          "type": "object"
        },
        "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": {
            "count": {
              "type": "number"
            },
            "rows": {
              "items": {
                "properties": {
                  "auditStatus": {
                    "type": "string"
                  },
                  "auditedAt": {
                    "type": "string"
                  },
                  "auditedUrl": {
                    "type": "string"
                  },
                  "brokenLinkCount": {
                    "type": [
                      "number",
                      "null"
                    ]
                  },
                  "brokenLinks": {
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "canonicalIsSelf": {},
                  "canonicalUrl": {},
                  "duplicateOf": {},
                  "externalLinks": {
                    "type": [
                      "number",
                      "null"
                    ]
                  },
                  "finalUrl": {
                    "type": "string"
                  },
                  "grade": {
                    "type": "string"
                  },
                  "h1": {},
                  "h1Count": {
                    "type": [
                      "number",
                      "null"
                    ]
                  },
                  "h2Count": {
                    "type": [
                      "number",
                      "null"
                    ]
                  },
                  "hasFavicon": {
                    "type": "boolean"
                  },
                  "hasOpenGraph": {
                    "type": "boolean"
                  },
                  "hasTwitterCard": {
                    "type": "boolean"
                  },
                  "hasViewport": {
                    "type": "boolean"
                  },
                  "hreflangCount": {
                    "type": [
                      "number",
                      "null"
                    ]
                  },
                  "httpStatus": {
                    "type": [
                      "number",
                      "null"
                    ]
                  },
                  "imageCount": {
                    "type": [
                      "number",
                      "null"
                    ]
                  },
                  "imagesMissingAlt": {
                    "type": [
                      "number",
                      "null"
                    ]
                  },
                  "internalLinks": {
                    "type": [
                      "number",
                      "null"
                    ]
                  },
                  "isHttps": {
                    "type": "boolean"
                  },
                  "issueCount": {
                    "type": [
                      "number",
                      "null"
                    ]
                  },
                  "issueSummary": {
                    "type": "string"
                  },
              

This page as JSON