{
  "data": {
    "a": {
      "slug": "qovia",
      "name": "Qovia",
      "vendor": "Qovia",
      "vendorUrl": "https://qovia.ai",
      "kind": "http-api",
      "category": "web-scrapers",
      "summary": "Qovia is a hosted API that returns posts, comments, creator profiles, hot lists and product reviews from Douyin, Xiaohongshu, Weibo, Bilibili, TikTok, YouTube, X and other platforms as one JSON envelope, with a cross-platform search and a remote MCP server.",
      "url": "https://www.anchorterminal.com/tools/qovia",
      "markdownUrl": "https://www.anchorterminal.com/tools/qovia.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/qovia.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/qovia.json",
      "dns": "qovia.grade.anchorterminal.com",
      "repo": "https://github.com/qovia/qovia-mcp",
      "license": "Proprietary hosted service under a one-paragraph Terms of Service summary that defers to a signed agreement. The qovia/qovia-mcp repository (setup guide, examples, Python client) and the qovia package on PyPI are MIT; the service's source is not public",
      "transports": [
        "http",
        "streamable-http"
      ],
      "remoteUrl": "https://api.qovia.ai",
      "packages": [
        {
          "registry": "pypi",
          "name": "qovia"
        }
      ],
      "auth": "api-key",
      "authNotes": "An API key created in the console (prefix `sk-qovia-` plus 43 characters), sent as `Authorization: Bearer` or `x-api-key` to https://api.qovia.ai; the docs say the key is read from those two headers only, never from the URL or a cookie, and browser requests from other sites are refused by CORS. A key carries one or more scopes chosen at creation (`*`, `search`, `raw:*` or `raw:\u003cplatform\u003e` for each of 24 platform groups), an optional expiry, and is revoked in the console; the server stores a hash and shows the full key once. 30 failed authentications from one IP in a minute answer 429 `too_many_auth_failures`. The MCP server at https://api.qovia.ai/mcp takes the same key as a Bearer header; its `search_endpoints` and `get_endpoint` tools need no key, `call_endpoint` and `get_account` do. No OAuth metadata is served (404 on /.well-known/oauth-protected-resource per the 1 November listing check).",
      "pricing": "usage",
      "pricingNotes": "50 trial calls for a new account, counted only when a call returns data, then a prepaid balance in USD topped up by card or Alipay through Stripe (4.4 per cent plus $0.30 fee) or USDT on TRC-20 (2 per cent plus $0.30), no monthly fee (1 November 2026). Only an HTTP 200 with a non-empty result is charged; empty results, errors, timeouts and upstream failures are refunded. Cross-platform search is $5 per 1,000 calls. Raw endpoints are priced per endpoint, from $0.5 per 1,000 (8 Douyin, 5 Bilibili and 2 Xingtu endpoints) through $1 (61 endpoints), $1.5 (Cili Juxing, Huahuo), $2 (3 Instagram), $5 (WeChat, Xiaohongshu, 1 Pugongying), $10 (11 Xingtu, 10 Pugongying), $13.5 (Taobao reviews) to $19.5 (JD.com reviews); Tieba, Fliggy and the six coming-soon endpoints are on a tiered $1.5 rate that drops to $1 after 5,000,000 billed calls in a month. Top-ups are non-refundable except within 7 days when the vendor confirms a paid endpoint cannot be used. Datasets and bulk or custom data are quoted. Five Actors by the same vendor on the Apify Store are paid through Apify per section.",
      "priceSummary": "$5 / 1k req",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 on qovia.ai, in the docs, llms.txt, the OpenAPI file or the repository (checked 2026-11-01). Top-ups take card and Alipay through Stripe or USDT on TRC-20 from a console session; USDT is a payment method, not a machine payment protocol. The only route without a Qovia account is the vendor's five Actors on the Apify Store (profile `qovia`, Qovia Data), paid through Apify.",
        "endpoints": []
      },
      "toolCount": 141,
      "popularity": {
        "githubStars": 0,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-11-01"
      },
      "docsUrl": "https://qovia.ai/docs/",
      "llmsTxt": "https://qovia.ai/llms.txt",
      "openapi": "https://qovia.ai/openapi.json",
      "registryName": "ai.qovia/qovia",
      "capabilities": [
        "web.extract",
        "social.analytics",
        "web.search"
      ],
      "tags": [
        "hosted",
        "official",
        "closed-source",
        "openapi",
        "llms-txt",
        "mcp",
        "python",
        "free-trial",
        "prepaid",
        "usage-priced",
        "api-key",
        "beta",
        "new"
      ],
      "lastRelease": "2026-10-28",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 61.2,
        "grade": "C",
        "agentReady": false,
        "rank": 558,
        "ranked": true,
        "rankOf": 1253,
        "categoryRank": 14,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 77,
          "maintenance": 77,
          "payments": 55,
          "reliability": 40,
          "schema": 86,
          "security": 60,
          "transparency": 30
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-11-01"
        },
        "negative": 0,
        "verdict": "An OpenAPI 3.1 file with 144 operations, one envelope and 20 error codes, per-endpoint prices with failed and empty calls refunded, scoped keys and a four-tool MCP server that keeps the catalogue out of context. No status page, no legal entity, one-paragraph terms and privacy pages, and a product ten days old at the check.",
        "bestFor": "Agents that need structured public data from Chinese platforms (Douyin, Xiaohongshu, Weibo, Bilibili, Kuaishou, Zhihu, WeChat official accounts, Taobao and JD reviews) or the Xingtu and Pugongying creator marketplaces, with TikTok, YouTube, Instagram, X and Reddit beside them, paid per successful call from a prepaid balance.",
        "strengths": [
          "A public OpenAPI 3.1 file with 144 operations, patterns or enums on parameters, a response example on every operation and the error responses declared on each",
          "One envelope on every call, `request_id`, `data` and `meta` with the charge and balance, and 20 error codes sorted into not charged and refunded, with `Retry-After` on the retryable ones",
          "Only HTTP 200 with a non-empty result is charged; empty results, 404s, timeouts and upstream failures are refunded, and 50 trial calls come with a new account",
          "API keys carry per-platform scopes and an optional expiry, are read from headers only, and the docs tell users to give AI tools a separate scoped key",
          "The MCP server loads four tools by default and lets an agent find, read and call any of 137 endpoints, with `?tools=` subsets for direct tools; listed in the official registry under ai.qovia/qovia",
          "Published limits of 60 and 600 requests a minute with `X-RateLimit-*` headers, and a documented empty-call throttle"
        ],
        "weaknesses": [
          "No status page, incident history or SLA; the terms promise nothing about uptime and the Python client is the only retry guidance beyond `Retry-After`",
          "The terms and privacy policy are one paragraph each, name no legal entity, address, retention period or subprocessor, and say a signed agreement governs",
          "Every endpoint is marked `beta` in the OpenAPI file while the docs call it Live, and the API version is 0.1.0",
          "No security.txt, disclosure policy beyond a SECURITY.md, bug bounty or certification; the only support channels are Telegram, WhatsApp, WeChat and one mailbox",
          "Every response is third-party platform content and the docs carry no guidance on treating it as untrusted; four endpoint groups read login-gated creator marketplaces",
          "The changelog has two dated days, the domain is four months old, and the GitHub account was created the week of the request with nine forked lists beside the one repository"
        ],
        "agentNotes": [
          "Send `Authorization: Bearer sk-qovia-...` to https://api.qovia.ai and check `meta.empty` on every HTTP 200; `data` may be `null` or an empty structure and nothing is charged for it.",
          "Branch on `error.code`, never on `message`. Retry only `rate_limited`, `too_many_unbilled`, `endpoint_busy`, `upstream_busy` and `too_many_auth_failures` after `Retry-After`; `endpoint_unavailable` has none and will not clear.",
          "Stay under 60 requests a minute (600 after the first top-up) across every key on the account, and keep empty or not-found calls under 80 per cent of the last 10 minutes or expect 429 `too_many_unbilled`.",
          "Pass the previous page's `cursor` (and `search_id` on Douyin and Zhihu search) back unchanged and stop when `has_more` is false; each page is a separate charge, and unknown parameters answer 400.",
          "For MCP, connect to https://api.qovia.ai/mcp over Streamable HTTP; call `search_endpoints` then `get_endpoint` before `call_endpoint`, or add `?tools=douyin,kuaishou` for typed direct tools. Catalogue tools need no key."
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "C",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 61.2
          }
        ],
        "editorialScores": {
          "ergonomics": 77,
          "maintenance": 77,
          "payments": 55,
          "reliability": 40,
          "schema": 86,
          "security": 60,
          "transparency": 23
        },
        "provenanceScore": 36,
        "checked": {
          "categories": {
            "ergonomics": "2026-11-01",
            "maintenance": "2026-11-01",
            "payments": "2026-11-01",
            "reliability": "2026-11-01",
            "schema": "2026-11-01",
            "security": "2026-11-01",
            "transparency": "2026-11-01"
          },
          "last": "2026-11-01",
          "oldest": "2026-11-01",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "install": "pip install qovia",
        "http": "curl \"https://api.qovia.ai/v1/raw/weibo/hot_search\" -H \"Authorization: Bearer $QOVIA_API_KEY\"",
        "claudeCode": "claude mcp add --transport http qovia https://api.qovia.ai/mcp --header \"Authorization: Bearer $QOVIA_API_KEY\""
      },
      "letme": {
        "capability": "https://letme.dev/web.extract",
        "tool": "https://letme.dev/qovia"
      },
      "area": "web-data",
      "unitPrices": [
        {
          "item": "Cross-platform search",
          "unit": "1k-requests",
          "usd": 5,
          "note": "POST /v1/search, successful non-empty calls only, pricing page and OpenAPI file checked 1 November 2026"
        },
        {
          "item": "Lowest raw endpoints (Douyin, Bilibili, Xingtu keywords)",
          "unit": "1k-requests",
          "usd": 0.5,
          "note": "15 fixed-price endpoints at $0.0005 a successful call"
        },
        {
          "item": "Most raw endpoints (TikTok, YouTube, X, Reddit, Weibo, Zhihu, Kuaishou and others)",
          "unit": "1k-requests",
          "usd": 1,
          "note": "61 fixed-price endpoints at $0.001 a successful call"
        },
        {
          "item": "Tiered raw endpoints (Tieba, Fliggy, coming-soon platforms)",
          "unit": "1k-requests",
          "usd": 1.5,
          "note": "$1 per 1,000 after 5,000,000 billed calls in a calendar month"
        },
        {
          "item": "Xiaohongshu and WeChat endpoints",
          "unit": "1k-requests",
          "usd": 5,
          "note": "11 fixed-price endpoints at $0.005 a successful call"
        },
        {
          "item": "Xingtu and Pugongying creator marketplace endpoints",
          "unit": "1k-requests",
          "usd": 10,
          "note": "21 fixed-price endpoints at $0.01 a successful call"
        },
        {
          "item": "JD.com product reviews",
          "unit": "1k-requests",
          "usd": 19.5,
          "note": "the dearest endpoint; Taobao and Tmall reviews are $13.5"
        },
        {
          "item": "Apify Store, Xingtu Actor premium section",
          "unit": "record",
          "usd": 0.06,
          "note": "per creator per section, paid through Apify with no Qovia account; basic sections $0.01, video sections $0.03"
        }
      ],
      "provenance": {
        "legalEntity": "",
        "domain": "qovia.ai",
        "domainRegistered": "2026-07-04",
        "endpointOnVendorDomain": true,
        "terms": "https://qovia.ai/terms/",
        "privacy": "https://qovia.ai/privacy/",
        "statusPage": "",
        "changelog": "https://qovia.ai/changelog/",
        "securityTxt": "none",
        "checked": "2026-11-01",
        "notes": [
          "No legal entity is named anywhere read. The terms and privacy pages are one paragraph each, say Delaware law governs and that the signed agreement governs where it differs, and name no company, address or jurisdiction beyond the state. The footer reads © 2026 QoviaAI, a brand name, not an entity, so legalEntity is left empty.",
          "RDAP for qovia.ai gives a registration date of 2026-07-04 through GoDaddy with a Domains By Proxy registrant and Cloudflare nameservers. The Wayback Machine's only capture before the check is the home page of 11 September 2026, which advertised sign-up with a free 1,000 calls a month, 25+ platforms, a 99.95 per cent enterprise SLA and a team@ mailbox; none of those claims is on the current site.",
          "firstReleased is the changelog's first dated entry, 21 October 2026, when the search, Xiaohongshu, WeChat, Taobao and JD endpoints are recorded as live; the remaining platforms are dated 22 October, the registry entry is 22 October and the GitHub account and repository were created on 23 October 2026. The 11 September page sold an API key but dates nothing live.",
          "https://qovia.ai/.well-known/security.txt, https://qovia.ai/security.txt and https://api.qovia.ai/.well-known/security.txt answer 404. The repository's SECURITY.md gives a Telegram handle and a mailbox for reports and says it covers qovia.ai and api.qovia.ai.",
          "api.qovia.ai has no robots.txt (404); only its OAuth metadata (404) and /mcp (405 on GET) were touched, both by the 1 November listing check. qovia.ai's robots.txt disallows /console/, /account/, /order/ and /admin/ and their /zh/ twins, which were not fetched."
        ],
        "score": 36
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/qovia.json",
      "live": {
        "slug": "qovia",
        "probe": {
          "target": "https://api.qovia.ai",
          "method": "get",
          "lastAt": "2026-11-01T22:08:43.664510387Z",
          "lastOk": true,
          "lastStatus": 200,
          "lastMs": 491,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 521,
          "p95ms24h": 626,
          "samples24h": 25,
          "samples30d": 25,
          "days": [
            {
              "date": "2026-11-01",
              "probes": 25,
              "ok": 25
            }
          ]
        },
        "updatedAt": "2026-11-01T22:08:43.664510387Z"
      }
    },
    "answer": "ZenRows scores 75.9 (BB) on agent readiness against Qovia's 61.2 (C), and leads in 6 of 7 scored categories. Qovia leads on security \u0026 auth.",
    "b": {
      "slug": "zenrows",
      "name": "ZenRows",
      "vendor": "ZenRows",
      "vendorUrl": "https://www.zenrows.com",
      "kind": "http-api",
      "category": "web-scrapers",
      "summary": "Scraping API (Fetch, formerly Universal Scraper API) with JavaScript rendering, residential proxies and anti-bot bypass, plus Extract for structured JSON, Crawl for following a site's links, Batch for bulk URL jobs and hosted Browser Sessions.",
      "url": "https://www.anchorterminal.com/tools/zenrows",
      "markdownUrl": "https://www.anchorterminal.com/tools/zenrows.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/zenrows.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/zenrows.json",
      "dns": "zenrows.grade.anchorterminal.com",
      "transports": [
        "http",
        "streamable-http",
        "stdio"
      ],
      "remoteUrl": "https://api.zenrows.com/v1/",
      "packages": [
        {
          "registry": "npm",
          "name": "@zenrows/mcp"
        },
        {
          "registry": "npm",
          "name": "zenrows"
        },
        {
          "registry": "pypi",
          "name": "zenrows"
        }
      ],
      "auth": "mixed",
      "authNotes": "The Fetch API takes the key as the apikey query parameter, so it ends up in the request URL. Batch takes it in an X-API-Key header, Crawl and Extract take either, and the hosted MCP at mcp.zenrows.com takes a Bearer header, or OAuth in clients that support it. An account can hold up to 10 keys, each with optional credit caps. The local stdio server reads ZENROWS_API_KEY, and with none set it provisions a Free account through POST https://app.zenrows.com/api/agent/signup, stores the key under ~/.zenrows/ and prints a claim URL, unless ZENROWS_AUTO_SIGNUP=false.",
      "pricing": "freemium",
      "pricingNotes": "Free 5,000 credits a month, no card, 5 concurrent requests. Build from $19 a month (45,000 credits), Launch from $69 (250,000), Growth from $199 (1.2 million), Scale from $549 (5 million), about 17 per cent less billed yearly. A standard request costs 1 credit, JavaScript rendering 5, premium proxies 10, both 25. Browser Sessions and residential proxies cost 25,000 credits a GB plus 5 credits a session-minute. Only successful requests are billed (https://www.zenrows.com/pricing).",
      "priceSummary": "$19 / mo",
      "where": "both",
      "x402": {
        "level": "partial",
        "evidence": "An agent storefront at agents.zenrows.com sells plans and prepaid credit ($5 minimum) settled over x402 (USDC on Base), MPP or card. It runs on ZeroClick's platform with its own buyer terms and proxies calls through a per-session storefront path. There's no per-call x402 price on api.zenrows.com (https://agents.zenrows.com/llms.txt, checked 2026-09-30).",
        "endpoints": []
      },
      "toolCount": 63,
      "popularity": {
        "githubStars": 21,
        "npmWeekly": 34642,
        "pypiWeekly": null,
        "asOf": "2026-09-30"
      },
      "docsUrl": "https://docs.zenrows.com",
      "llmsTxt": "https://docs.zenrows.com/llms.txt",
      "openapi": "https://www.zenrows.com/openapi.json",
      "registryName": "io.github.ZenRows/zenrows-mcp",
      "capabilities": [
        "web.scrape",
        "web.extract",
        "browser.hosted",
        "scraping.proxies",
        "scraping.js-render",
        "scraping.anti-bot",
        "scraping.screenshot"
      ],
      "tags": [
        "hosted",
        "freemium",
        "free-tier",
        "no-card",
        "mcp",
        "llms-txt",
        "proxies",
        "x402",
        "python",
        "typescript"
      ],
      "lastRelease": "2026-10-30",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 75.9,
        "grade": "BB",
        "agentReady": true,
        "rank": 41,
        "ranked": true,
        "rankOf": 1253,
        "categoryRank": 2,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 79,
          "maintenance": 90,
          "payments": 80,
          "reliability": 87,
          "schema": 93,
          "security": 50,
          "transparency": 79
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-11-01"
        },
        "negative": -3,
        "negativeNotes": [
          "2026-10-20. MCP v2.15.0, a minor release after v2.14.0, removed extract's automatic fallback to autoparse, so a call on a domain not yet prepared that returned autoparse JSON now returns REQS007, and `fallback_autoparse`, documented with a default of true, is now ignored. The same release stopped returning the page HTML unless `include_html` is set. The commit is a plain `feat`, not marked breaking, the repository keeps no changelog, and the README described the fallback as current until that release, so no advance notice was found. The API's autoparse parameter still works and the new error names the next step, so 3 points, the floor, by the 1 November 2026 rule and as shotstack was read for an unmarked break. https://github.com/ZenRows/zenrows-mcp/commit/c71f9a6d0e16d447f8e4df507bf7e7a485351709"
        ],
        "verdict": "No incidents in the 90 days to 1 November 2026 on a six-component Better Stack status page, and an OpenAPI 3.1 file with coded errors. The Fetch API only takes the key in the query string.",
        "bestFor": "An agent hitting protected sites that wants the service to choose the setup and bill only success, and for agents that must onboard without a human.",
        "strengths": [
          "No incidents in the 90 days to 1 November 2026 on a six-component Better Stack status page",
          "OpenAPI 3.1 file, 35 coded errors with fixes, and a twelve-month deprecation policy with Sunset headers",
          "5,000 free credits a month with no card, and a stdio MCP that can provision a free account by itself",
          "Up to 10 keys per account, each with its own credit cap",
          "Every MCP tool carries readOnlyHint and destructiveHint, and the scrape tool says when to use extract instead"
        ],
        "weaknesses": [
          "The Fetch API only takes the key in the query string",
          "A protected request costs 25 credits, so real costs sit well above the headline rate",
          "63 MCP tools load at once, 38 of them for the browser",
          "No prompt-injection guidance for the pages it returns",
          "x402 runs only through a third-party storefront, and the 2026 product renames aren't in the changelog"
        ],
        "agentNotes": [
          "Start with mode=auto and let it escalate. Force js_render or premium_proxy only when you know the site needs it",
          "Prefer the extract tool over scrape when you need fields, since it returns far fewer tokens than a full page",
          "On REQS007 from extract, read `reason`. Call prepare_domain for domain_not_prepared, or fall back to css_extractor; extract no longer falls back to autoparse",
          "Read the Concurrency-Remaining response header before fanning out, as extra requests get 429",
          "On a 402 with AUTH014, only this key hit its cap. Read X-Key-Credits-Remaining and don't tell the user to buy credits",
          "Set ZENROWS_AUTO_SIGNUP=false in stdio configs so a missing key fails loudly instead of creating an account",
          "Pass `idempotency_key` to `crawl_create` and `batch_create` so a retried call returns the same job instead of starting and billing a second one"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 8,
        "avgRating": 3.8,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "BB",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 75.9
          }
        ],
        "editorialScores": {
          "ergonomics": 79,
          "maintenance": 90,
          "payments": 80,
          "reliability": 87,
          "schema": 93,
          "security": 50,
          "transparency": 65
        },
        "provenanceScore": 92,
        "checked": {
          "categories": {
            "ergonomics": "2026-11-01",
            "maintenance": "2026-11-01",
            "payments": "2026-11-01",
            "reliability": "2026-11-01",
            "schema": "2026-11-01",
            "security": "2026-11-01",
            "transparency": "2026-11-01"
          },
          "last": "2026-11-01",
          "lastMoved": "2026-11-01",
          "oldest": "2026-11-01",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "http": "curl \"https://api.zenrows.com/v1/?apikey=$ZENROWS_API_KEY\u0026url=https%3A%2F%2Fexample.com\u0026mode=auto\"",
        "claudeCode": "claude mcp add --transport http zenrows https://mcp.zenrows.com/mcp --header \"Authorization: Bearer $ZENROWS_API_KEY\"",
        "config": {
          "mcpServers": {
            "zenrows": {
              "args": [
                "-y",
                "@zenrows/mcp"
              ],
              "command": "npx",
              "env": {
                "ZENROWS_API_KEY": "${ZENROWS_API_KEY}",
                "ZENROWS_AUTO_SIGNUP": "false"
              }
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/web.scrape",
        "tool": "https://letme.dev/zenrows"
      },
      "area": "web-data",
      "unitPrices": [
        {
          "item": "Build plan (B1)",
          "unit": "month",
          "usd": 19,
          "note": "45,000 credits, 20 concurrent. $16 a month billed yearly"
        },
        {
          "item": "Launch plan (L1)",
          "unit": "month",
          "usd": 69,
          "note": "250,000 credits, 50 concurrent. $57 a month billed yearly"
        },
        {
          "item": "Growth plan (G1)",
          "unit": "month",
          "usd": 199,
          "note": "1.2 million credits, 100 concurrent"
        },
        {
          "item": "Standard request on Build B1",
          "unit": "1k-requests",
          "usd": 0.42,
          "note": "1 credit each, successful requests only"
        },
        {
          "item": "Protected request on Build B1",
          "unit": "1k-requests",
          "usd": 10.56,
          "note": "JavaScript rendering plus premium proxies, 25 credits each"
        }
      ],
      "provenance": {
        "legalEntity": "ZENROWS, S.L.",
        "domain": "zenrows.com",
        "domainRegistered": "2020-08-05",
        "endpointOnVendorDomain": true,
        "terms": "https://www.zenrows.com/legal/terms",
        "privacy": "https://www.zenrows.com/legal/privacy",
        "statusPage": "https://status.zenrows.com",
        "changelog": "https://www.zenrows.com/changelog",
        "securityTxt": "valid",
        "checked": "2026-11-01",
        "notes": [
          "The privacy policy gives a registered address in Getxo, Bizkaia, Spain, and tax ID B10660298, and the DPA names Zenrows SL with the same number.",
          "www.zenrows.com/.well-known/security.txt served a file on 1 November 2026 expiring 2027-11-01, with Contact security@zenrows.com and a Policy link to the information security policy. app.zenrows.com's robots.txt now allows /.well-known/.",
          "The dated changelog is at www.zenrows.com/changelog. The Intercom news page at eu.intercom.news/zenrows stops at 14 July 2026.",
          "The website returns 403 to plain curl without a browser user agent."
        ],
        "score": 92
      },
      "requirements": {
        "agentAlone": true,
        "card": "no",
        "freeTier": true,
        "credential": "api-key",
        "euResidency": "unknown",
        "trainsOnData": "unknown",
        "zeroRetention": "unknown",
        "certifications": [
          "SOC 2 Type II",
          "ISO 27001",
          "GDPR"
        ],
        "dpa": true,
        "selfHost": "no"
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/zenrows.json",
      "live": {
        "slug": "zenrows",
        "probe": {
          "target": "https://api.zenrows.com/v1/",
          "method": "get",
          "lastAt": "2026-11-01T22:08:54.784400154Z",
          "lastOk": true,
          "lastStatus": 400,
          "lastMs": 330,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 355,
          "p95ms24h": 855,
          "samples24h": 250,
          "samples30d": 8145,
          "days": [
            {
              "date": "2026-10-01",
              "probes": 276,
              "ok": 276
            },
            {
              "date": "2026-10-02",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-03",
              "probes": 271,
              "ok": 271
            },
            {
              "date": "2026-10-04",
              "probes": 272,
              "ok": 272
            },
            {
              "date": "2026-10-05",
              "probes": 272,
              "ok": 272
            },
            {
              "date": "2026-10-06",
              "probes": 272,
              "ok": 272
            },
            {
              "date": "2026-10-07",
              "probes": 272,
              "ok": 272
            },
            {
              "date": "2026-10-08",
              "probes": 268,
              "ok": 268
            },
            {
              "date": "2026-10-09",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-10-10",
              "probes": 247,
              "ok": 247
            },
            {
              "date": "2026-10-11",
              "probes": 247,
              "ok": 247
            },
            {
              "date": "2026-10-12",
              "probes": 247,
              "ok": 247
            },
            {
              "date": "2026-10-13",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-14",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-15",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-16",
              "probes": 252,
              "ok": 252
            },
            {
              "date": "2026-10-17",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-18",
              "probes": 256,
              "ok": 256
            },
            {
              "date": "2026-10-19",
              "probes": 255,
              "ok": 255
            },
            {
              "date": "2026-10-20",
              "probes": 252,
              "ok": 252
            },
            {
              "date": "2026-10-21",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-22",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-23",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-24",
              "probes": 251,
              "ok": 251
            },
            {
              "date": "2026-10-25",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-10-26",
              "probes": 252,
              "ok": 252
            },
            {
              "date": "2026-10-27",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-28",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-10-29",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-30",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-31",
              "probes": 251,
              "ok": 251
            },
            {
              "date": "2026-11-01",
              "probes": 230,
              "ok": 230
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.zenrows.com",
          "indicator": "unknown",
          "summary": "no machine-readable status found",
          "checkedAt": "2026-11-01T22:10:21.488395429Z"
        },
        "versions": [
          {
            "registry": "mcp-registry",
            "name": "io.github.ZenRows/zenrows-mcp",
            "version": "2.18.0",
            "seenAt": "2026-11-01T16:10:44.053973489Z"
          },
          {
            "registry": "npm",
            "name": "@zenrows/mcp",
            "version": "2.18.0",
            "seenAt": "2026-11-01T17:45:12.968762108Z"
          },
          {
            "registry": "npm",
            "name": "zenrows",
            "version": "2.6.0",
            "seenAt": "2026-11-01T17:45:15.07922581Z"
          },
          {
            "registry": "pypi",
            "name": "zenrows",
            "version": "1.12.0",
            "released": "2026-10-30",
            "seenAt": "2026-11-01T17:45:16.360739177Z"
          }
        ],
        "npmWeekly": 1892,
        "pypiWeekly": 26152,
        "securityTxt": {
          "url": "https://zenrows.com/.well-known/security.txt",
          "state": "valid",
          "expires": "2027-11-01T15:40:55Z",
          "checkedAt": "2026-11-01T15:42:20.137616972Z"
        },
        "llmsTxt": {
          "url": "https://docs.zenrows.com/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-11-01T15:15:22.633263436Z"
        },
        "domain": {
          "domain": "zenrows.com",
          "registered": "2020-08-05",
          "source": "https://rdap.verisign.com/com/v1/domain/zenrows.com",
          "checkedAt": "2026-11-01T14:24:52.056264093Z"
        },
        "pages": [
          {
            "url": "https://eu.intercom.news/zenrows",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-10-16T22:24:02.345281967Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "a9b3543b3e4d"
          },
          {
            "url": "https://www.zenrows.com/changelog",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-11-01T07:07:02.066478487Z",
            "changedAt": "2026-10-27T04:07:42.794542723Z",
            "fingerprint": "db501e9abfd5"
          },
          {
            "url": "https://www.zenrows.com/pricing",
            "kind": "pricing",
            "status": 200,
            "checkedAt": "2026-11-01T07:07:08.174451732Z",
            "changedAt": "2026-10-30T06:03:03.347271998Z",
            "fingerprint": "9b31c87dd86f"
          },
          {
            "url": "https://www.zenrows.com/legal/privacy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-11-01T07:07:04.140294786Z",
            "changedAt": "2026-10-27T04:07:44.844845004Z",
            "fingerprint": "f60343d2a429"
          },
          {
            "url": "https://www.zenrows.com/legal/terms",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-11-01T07:07:06.234142876Z",
            "changedAt": "2026-10-27T04:07:46.940493846Z",
            "fingerprint": "37b38df84d2f"
          }
        ],
        "updatedAt": "2026-11-01T22:10:21.488395429Z"
      }
    },
    "edges": [
      {
        "by": 49,
        "category": "transparency",
        "leads": "zenrows",
        "name": "Transparency \u0026 trust",
        "reasons": {
          "a": "Closed service. The Terms of Service is one paragraph that names no legal entity, address or liability terms, says Delaware law governs and that the page is a summary with the signed agreement governing; the repository's client is MIT. Between the closed and unclear bands (7 of 30). The privacy policy is one paragraph. Account information is used to deliver and bill, personal information is not sold, requests and results are not resold, deletion requests go to the support mailbox, and the agreement governs where it differs. No retention periods, no subprocessors, no DPA, and no statement about the cache the prov.source flag implies; the SECURITY.md repeats the same points (8 of 30). A 410 endpoint_disabled code exists for retired endpoints and the changelog is dated, but there is no deprecation policy or notice period and nothing is marked deprecated (5 of 20). Stripe is named on the pricing page as the card and Alipay processor; no other provider, data location or transfer basis is stated (3 of 20). 7+8+5+3 = 23.",
          "b": "Closed service, with ZENROWS, S.L. named in full (Getxo, Spain, tax ID B10660298). The MCP is MIT (15 of 30). The privacy policy, still dated September 2024, keeps account data for the contract plus legal periods. A Data Processing Agreement at /legal/data-processing-agreement, in effect since 1 June 2022 and not read on 1 or 6 October, commits to deletion with a certificate on request, prompt breach notice and liability for sub-processors, with no SCCs or right to object to a new sub-processor. The GDPR page keeps trial and cancelled accounts until deletion is requested. Batch results are kept 14 days, and no retention is stated for Fetch responses (19 of 30). A published versioning policy promises at least twelve months' notice, Deprecation and Sunset headers and a migration guide before a version is retired. The 2026 renames carried no dated notices (15 of 20). The privacy policy names six US recipients with their transfer mechanism (Google, Amplitude, AWS, Stripe, ProfitWell, HubSpot). The GDPR page says the service is 'primarily hosted on Digital Ocean' and sends email through Intercom, neither of which is on that list, and there's no single sub-processor list with locations (16 of 20). 15+19+15+16 = 65."
        },
        "scores": {
          "a": 30,
          "b": 79
        }
      },
      {
        "by": 47,
        "category": "reliability",
        "leads": "zenrows",
        "name": "Reliability",
        "reasons": {
          "a": "Hosted reading, for the REST API with the MCP server described. No public status page was found. https://qovia.ai/status/ answers 404, status.qovia.ai does not resolve and neither the docs nor the footer links one (0). No readable incident history, so 5 by the rubric (5). Limits are published with numbers on the quickstart's rate-limits section, 60 requests a minute per account before the first top-up and 600 after on a sliding 60-second window, with X-RateLimit-Limit and X-RateLimit-Remaining headers, a 64 KiB body cap, an empty-call throttle (50 calls in 10 minutes with over 80 per cent empty, not found or rejected) and a per-second cap per endpoint without a number (15). Retry-After is declared on too_many_auth_failures, rate_limited, too_many_unbilled, endpoint_busy and upstream_busy, the error table marks the retryable codes, the docs say a 503 endpoint_unavailable carries none and will not clear, and the Python client retries 429 and 503 honouring the header. Every operation is a read, including POST /v1/search, and a failed or timed-out call is refunded, so idempotency keys are not needed (15). No SLA. The terms summary says nothing about uptime and the pricing FAQ excludes outages, rate limits and platform changes from refunds; the 11 September 2026 archived home page advertised a 99.95 per cent enterprise SLA that the current pages have dropped (0). The endpoints are sold and labelled Live on the docs and coverage pages, but every one of the 143 carries x-qovia-status beta in the OpenAPI file, the API version is 0.1.0 and the MCP server reports 0.1.0 (5 of 10). 0+5+15+15+0+5 = 40.",
          "b": "Better Stack status page with 6 components (Fetch standard, Fetch headless, Proxies, Residential Proxies, Browser Sessions, website) (20). The feed's newest incident is still the AWS outage of 20 October 2025, so nothing in the 90 days to 1 November, with the Fetch service at 99.998 per cent and the website at 100 on 1 November (30). Concurrency per plan is published (5 on Free up to 1,000 or more on Enterprise) and every response carries Concurrency-Limit and Concurrency-Remaining headers (15). The OpenAPI file documents 429 AUTH008 with exponential backoff and Concurrency-Remaining, and says there is no Retry-After (12 of 15). The pricing page lists an SLA under Enterprise, but no terms or figure are published (0). Fetch is generally available. Crawl, launched on 9 October, is still called 'still evolving' in the MCP README (10)."
        },
        "scores": {
          "a": 40,
          "b": 87
        }
      },
      {
        "by": 25,
        "category": "payments",
        "leads": "zenrows",
        "name": "Payments \u0026 pricing",
        "reasons": {
          "a": "No x402, MPP or L402 on Qovia's own endpoints; USDT on TRC-20 is a top-up method from a console session, not a machine payment protocol. The vendor's five Actors on the Apify Store under the profile qovia (Qovia Data, the same Telegram handle and mailbox as the site), such as the Xingtu Actor at $0.01 to $0.06 a section, can be paid through Apify, whose prepaid token is sold over x402, so partial credit for a third-party route on part of the catalogue (10 of 40). Per-call prices are published without a login, per endpoint in the OpenAPI file, llms.txt and the docs, search at $5 and raw endpoints from $0.5 to $19.5 per 1,000, with the tier rule and payment fees stated (20). 50 trial calls for a new account, counted only when a call returns data; the quickstart says to top up when they run out and the docs ask for no card at sign-up, though no account was created to confirm it (20). A person signs up in a browser and creates a key; the MCP catalogue tools work without a key but data calls do not, and the Apify route reaches four platforms without a Qovia account (5 of 20). 10+20+20+5 = 55.",
          "b": "x402 and MPP through an agent storefront at agents.zenrows.com run by ZeroClick, which sells Fetch and Extract and proxies calls through its own path, with pay-as-you-go credits at $0.50 per 1,000 (10,000 minimum) per the pricing docs. Nothing on api.zenrows.com itself (20 of 40). Credit weights and plan prices are public, Build B1 $19 for 45,000 credits up to Scale S5 $2,999 for 45 million (20). 5,000 free credits a month, no card (20). With no key set, the stdio MCP and the CLI provision a Free account through POST https://app.zenrows.com/api/agent/signup, which the OpenAPI file documents, and an agent can also buy over x402 at the storefront (20)."
        },
        "scores": {
          "a": 55,
          "b": 80
        }
      },
      {
        "by": 13,
        "category": "maintenance",
        "leads": "zenrows",
        "name": "Maintenance \u0026 community",
        "reasons": {
          "a": "The newest changes are the registry entry ai.qovia/qovia 0.1.1 and the repository's tools snapshot and plugin manifests on 28 October 2026, after the Python client 0.1.1 on PyPI on 27 October; the repository was pushed on 1 November (30). Eight changelog entries on 21 and 22 October, two registry versions (22 and 28 October) and two PyPI releases (25 and 27 October) are more than three dated entries in 90 days, all within ten days (20). Closed service with a public changelog. Support is Telegram, WhatsApp, WeChat and one mailbox, with a one-business-day reply promised for email; GitHub issues are enabled on the repository with none opened, and no forum, Discord or community was found (7 of 15). ai.qovia/qovia is in the official MCP registry under a DNS-verified reverse-DNS namespace at 0.1.1, marked latest, and the Python client is an official package on PyPI (15). The client is standard-library Python with a test file, MIT, no dependencies and no CI workflow in the repository tree; the account's other nine repositories are forks of lists and directories (5 of 10). 30+20+7+15+5 = 77.",
          "b": "MCP v2.18.0 on 2026-10-30 (30). Seven MCP minor releases from 18 to 30 October alone (v2.12.0 to v2.18.0), and dated changelog entries on 2, 5 and 9 October (20). We couldn't read GitHub issues. PRs are merged within days and the dated changelog on zenrows.com runs to 9 October (15 of 25). In the official MCP registry as io.github.ZenRows/zenrows-mcp, with 2.18.0 published on 30 October and marked latest (15). CI runs typecheck, lint and tests on a Node matrix, and a check that server.json matches the package version (10)."
        },
        "scores": {
          "a": 77,
          "b": 90
        }
      },
      {
        "by": 10,
        "category": "security",
        "leads": "qovia",
        "name": "Security \u0026 auth",
        "reasons": {
          "a": "API keys with scopes chosen at creation (every endpoint, search, every raw endpoint or one of 24 platform groups), an optional expiry, revocation in the console and hashed storage; the docs say the key is read from the Authorization or x-api-key header only, never the URL or a cookie, and 30 failed authentications from one IP in a minute are throttled. No OAuth and no rotation feature beyond creating another key (24 of 30). The whole surface is read-only retrieval, scopes restrict a key to platforms, the two MCP catalogue tools need no key, and the docs and SECURITY.md tell users to give AI tools a separate scoped key (17 of 20). Every response is third-party platform text, and the only related statement is that error messages never contain the data source's own text; nothing on treating returned content as untrusted (3 of 15). request_id is the usage record ID on every answer, the console lists every charge in a usage log, X-Qovia-Charged and X-Qovia-Balance headers report each call, and GET /v1/account returns the key's scopes and balance at no charge; no exportable audit log or per-call endpoint was found (11 of 15). No security.txt on qovia.ai or api.qovia.ai (404), no bug bounty, SOC 2 or ISO 27001; the repository's SECURITY.md names a Telegram handle and a mailbox for reports covering both hosts (5 of 20). 24+17+3+11+5 = 60.",
          "b": "The Fetch API takes the key only as the apikey query parameter, as the OpenAPI security schemes still show on 1 November. Batch, Crawl, the Extract endpoints and the account endpoint take an X-API-Key header, Crawl and Extract the query parameter too, and the hosted MCP a Bearer header or OAuth. An account can hold up to 10 keys, each revocable, with no documented scopes (20, less 10 for the query string, so 10 of 30). Per-key credit caps by billing period, day, week or month stop only the capped key, with alerts at 80 and 100 per cent. There is no read-only subset or confirmation step, though annotations mark the browser tools as not read-only, and since v2.15.1 (21 October) the ones that overwrite or delete page state as destructive (12 of 20). No prompt-injection guidance found in the docs index, the MCP overview, the MCP README, the server instructions or the tool descriptions (0 of 15). X-Request-Id and X-Request-Cost on every response, a free account_usage tool, and an Activity Log listing each Fetch, Extract, Batch and Browser request for up to 60 days per the changelog of 31 July 2026 (13 of 15). security.txt on www.zenrows.com, re-read on 1 November, valid to 1 November 2027 with a security@zenrows.com contact and a linked information security policy. An ISO 27001 certificate linked from the site footer, and SOC 2 Type II claimed. No bug bounty found (15 of 20)."
        },
        "scores": {
          "a": 60,
          "b": 50
        }
      },
      {
        "by": 7,
        "category": "schema",
        "leads": "zenrows",
        "name": "Schema \u0026 documentation",
        "reasons": {
          "a": "An OpenAPI 3.1.0 file (version 0.1.0, 1 MB) is public at qovia.ai/openapi.json with 144 paths and 144 operations, two security schemes, typed query parameters, a response example on every operation and the error responses declared on each. The data payload itself is typed only as object, array or null with per-endpoint examples, and the MCP call_endpoint tool takes a free params object, so 22 of 25 (22). llms.txt (75 KB, one line per endpoint with price and status) and llms-full.txt (331 KB, the whole documentation as text) are served, and the quickstart's billing, limits and error sections are in both (10). Every operation has a summary and a description; most say what the data holds, how to page, which ids to pass, which fields are unavailable and what answers 404 or empty, and the MCP server's instructions say to find, read then call. Guidance on when not to use an endpoint is thin, mostly pointers such as replies coming from another endpoint (16 of 20). 321 parameters, 75 with enums, patterns on ids, min and max on strings and integers, 117 operations with one required parameter and 16 with none, the POST body typed with additionalProperties false, and unknown parameters rejected with 400 (14 of 15). A response example on all 144 operations, 20 error codes with every message variant listed, response headers documented per error, and cURL, Python, JavaScript and raw HTTP samples; the examples are catalogue samples the docs say are not live data (14 of 15). Paths are under /v1, a 410 endpoint_disabled code exists for retired endpoints, and the changelog is dated, but it has two days (21 and 22 October 2026), nothing is marked deprecated and no notice period is stated (10 of 15). 22+10+16+14+14+10 = 86.",
          "b": "OpenAPI 3.1 at www.zenrows.com/openapi.json covers Fetch, Extract, Crawl (added after the 9 October launch), Batch, agent signup and HMAC key rotation, and the 63 MCP tools have typed zod inputs (25). llms.txt with 105 entries linking 240 docs pages on 1 November, each with a Markdown copy (10). The scrape tool says when to prefer extract, when to turn on js_render or premium_proxy, and gives three examples, and the crawl tools say when to wait, page or download. The browser tools are terser (18 of 20). Enums on mode and response_type, URL validation and required fields, but css_extractor is a JSON string and outputs a comma-separated string (12 of 15). Error catalogue of 35 codes such as AUTH004 and RESP002, plus a table of Batch and Extract codes, grouped by HTTP status with fixes, and every OpenAPI operation lists its error responses (15). The API is versioned in the path (v1, never retired), a dated changelog at www.zenrows.com/changelog runs to 9 October 2026, with nothing newer on 1 November, and the MCP has semver tags. The 2026 renames (Universal Scraper API to Fetch, Scraping Browser to Browser Sessions) aren't in it (13 of 15)."
        },
        "scores": {
          "a": 86,
          "b": 93
        }
      }
    ],
    "facts": [
      {
        "a": "HTTP API",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "Qovia",
        "b": "ZenRows",
        "name": "Vendor"
      },
      {
        "a": "https://api.qovia.ai",
        "b": "https://api.zenrows.com/v1/",
        "name": "Hosted endpoint"
      },
      {
        "a": "HTTP, Streamable HTTP",
        "b": "HTTP, Streamable HTTP, stdio",
        "name": "Transports"
      },
      {
        "a": "API key",
        "b": "OAuth or key",
        "name": "Auth"
      },
      {
        "a": "Pay per use",
        "b": "Freemium",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "payer tooling only",
        "name": "x402"
      },
      {
        "a": "Proprietary hosted service under a one-paragraph Terms of Service summary that defers to a signed agreement. The qovia/qovia-mcp repository (setup guide, examples, Python client) and the qovia package on PyPI are MIT; the service's source is not public",
        "b": "none",
        "name": "Licence"
      },
      {
        "a": "141",
        "b": "63",
        "name": "Tools exposed"
      },
      {
        "a": "no",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "ai.qovia/qovia",
        "b": "io.github.ZenRows/zenrows-mcp",
        "name": "MCP registry"
      },
      {
        "a": "2026-10-28",
        "b": "2026-10-30",
        "name": "Last release"
      },
      {
        "a": "not read yet",
        "b": "2025-07-01",
        "name": "Terms last updated"
      },
      {
        "a": "not read yet",
        "b": "2024-09-01",
        "name": "Privacy policy last updated"
      },
      {
        "a": "not read yet",
        "b": "not found in the text",
        "name": "Customer content may train models"
      },
      {
        "a": "not read yet",
        "b": "not found in the text",
        "name": "Terms restrict automated access"
      },
      {
        "a": "not read yet",
        "b": "not found in the text",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "not read yet",
        "b": "yes",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "not read yet",
        "b": "not found in the text",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "0 stars",
        "b": "21 stars, 35k npm/wk",
        "name": "Popularity"
      },
      {
        "a": "none",
        "b": "3.8/5 (8)",
        "name": "Agent reviews"
      }
    ],
    "faq": [
      {
        "answer": "ZenRows scores 75.9 (BB) on agent readiness against Qovia's 61.2 (C), and leads in 6 of 7 scored categories. Qovia leads on security \u0026 auth.",
        "question": "Which is better for AI agents, Qovia or ZenRows?"
      },
      {
        "answer": "Qovia needs an API key. ZenRows takes an API key or an OAuth sign-in.",
        "question": "Do Qovia and ZenRows need an API key?"
      },
      {
        "answer": "Yes. Qovia has a hosted endpoint at https://api.qovia.ai and ZenRows at https://api.zenrows.com/v1/.",
        "question": "Can an agent call Qovia and ZenRows without installing anything?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Security \u0026 auth, 60 against 50"
        ],
        "also": [
          "No incidents deducted, where ZenRows loses 3 points for them"
        ],
        "goodFor": "Agents that need structured public data from Chinese platforms (Douyin, Xiaohongshu, Weibo, Bilibili, Kuaishou, Zhihu, WeChat official accounts, Taobao and JD reviews) or the Xingtu and Pugongying creator marketplaces, with TikTok, YouTube, Instagram, X and Reddit beside them, paid per successful call from a prepaid balance.",
        "slug": "qovia",
        "watchFor": "No status page, incident history or SLA; the terms promise nothing about uptime and the Python client is the only retry guidance beyond `Retry-After`"
      },
      {
        "aheadOn": [
          "Reliability, 87 against 40",
          "Schema \u0026 documentation, 93 against 86",
          "Payments \u0026 pricing, 80 against 55",
          "Maintenance \u0026 community, 90 against 77",
          "Transparency \u0026 trust, 79 against 30"
        ],
        "also": [
          "Agent-ready, a grade of BB or better",
          "Runs on your own machine",
          "Free to start without a card"
        ],
        "goodFor": "An agent hitting protected sites that wants the service to choose the setup and bill only success, and for agents that must onboard without a human.",
        "slug": "zenrows",
        "watchFor": "The Fetch API only takes the key in the query string"
      }
    ],
    "history": {
      "qovia": null,
      "zenrows": [
        {
          "causes": [
            "event"
          ],
          "date": "2026-11-01",
          "delta": -3,
          "from": 78.9,
          "fromGrade": "A",
          "to": 75.9,
          "toGrade": "BB"
        },
        {
          "causes": [
            "method"
          ],
          "date": "2026-10-27",
          "delta": 0.1,
          "from": 78.8,
          "fromGrade": "A",
          "to": 78.9,
          "toGrade": "A"
        },
        {
          "causes": [
            "product",
            "evidence"
          ],
          "date": "2026-10-17",
          "delta": 4,
          "from": 74.8,
          "fromGrade": "BB",
          "to": 78.8,
          "toGrade": "A"
        }
      ]
    },
    "job": {
      "capability": "web.extract",
      "name": "Extraction"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/bright-data-vs-qovia.json",
        "title": "Bright Data vs Qovia",
        "url": "https://www.anchorterminal.com/compare/bright-data-vs-qovia"
      },
      {
        "json": "https://www.anchorterminal.com/compare/firecrawl-mcp-vs-qovia.json",
        "title": "Firecrawl MCP vs Qovia",
        "url": "https://www.anchorterminal.com/compare/firecrawl-mcp-vs-qovia"
      },
      {
        "json": "https://www.anchorterminal.com/compare/apify-mcp-vs-zenrows.json",
        "title": "Apify MCP Server vs ZenRows",
        "url": "https://www.anchorterminal.com/compare/apify-mcp-vs-zenrows"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bright-data-vs-zenrows.json",
        "title": "Bright Data vs ZenRows",
        "url": "https://www.anchorterminal.com/compare/bright-data-vs-zenrows"
      },
      {
        "json": "https://www.anchorterminal.com/compare/context-dev-vs-zenrows.json",
        "title": "Context.dev vs ZenRows",
        "url": "https://www.anchorterminal.com/compare/context-dev-vs-zenrows"
      },
      {
        "json": "https://www.anchorterminal.com/compare/jevcrawl-vs-zenrows.json",
        "title": "jevcrawl vs ZenRows",
        "url": "https://www.anchorterminal.com/compare/jevcrawl-vs-zenrows"
      },
      {
        "json": "https://www.anchorterminal.com/compare/jina-reader-vs-zenrows.json",
        "title": "Jina Reader vs ZenRows",
        "url": "https://www.anchorterminal.com/compare/jina-reader-vs-zenrows"
      },
      {
        "json": "https://www.anchorterminal.com/compare/olostep-vs-zenrows.json",
        "title": "Olostep vs ZenRows",
        "url": "https://www.anchorterminal.com/compare/olostep-vs-zenrows"
      },
      {
        "json": "https://www.anchorterminal.com/compare/oxylabs-web-scraper-vs-zenrows.json",
        "title": "Oxylabs Web Scraper API vs ZenRows",
        "url": "https://www.anchorterminal.com/compare/oxylabs-web-scraper-vs-zenrows"
      },
      {
        "json": "https://www.anchorterminal.com/compare/scrape-do-vs-zenrows.json",
        "title": "Scrape.do vs ZenRows",
        "url": "https://www.anchorterminal.com/compare/scrape-do-vs-zenrows"
      },
      {
        "json": "https://www.anchorterminal.com/compare/scrapegraphai-vs-zenrows.json",
        "title": "ScrapeGraphAI vs ZenRows",
        "url": "https://www.anchorterminal.com/compare/scrapegraphai-vs-zenrows"
      },
      {
        "json": "https://www.anchorterminal.com/compare/scrapeless-vs-zenrows.json",
        "title": "Scrapeless vs ZenRows",
        "url": "https://www.anchorterminal.com/compare/scrapeless-vs-zenrows"
      },
      {
        "json": "https://www.anchorterminal.com/compare/scraperapi-vs-zenrows.json",
        "title": "ScraperAPI vs ZenRows",
        "url": "https://www.anchorterminal.com/compare/scraperapi-vs-zenrows"
      },
      {
        "json": "https://www.anchorterminal.com/compare/scrapewise-vs-zenrows.json",
        "title": "Scrapewise vs ZenRows",
        "url": "https://www.anchorterminal.com/compare/scrapewise-vs-zenrows"
      },
      {
        "json": "https://www.anchorterminal.com/compare/scrapfly-vs-zenrows.json",
        "title": "Scrapfly vs ZenRows",
        "url": "https://www.anchorterminal.com/compare/scrapfly-vs-zenrows"
      },
      {
        "json": "https://www.anchorterminal.com/compare/scrapingant-vs-zenrows.json",
        "title": "ScrapingAnt vs ZenRows",
        "url": "https://www.anchorterminal.com/compare/scrapingant-vs-zenrows"
      },
      {
        "json": "https://www.anchorterminal.com/compare/scrapingbee-vs-zenrows.json",
        "title": "ScrapingBee vs ZenRows",
        "url": "https://www.anchorterminal.com/compare/scrapingbee-vs-zenrows"
      },
      {
        "json": "https://www.anchorterminal.com/compare/scrapingdog-vs-zenrows.json",
        "title": "Scrapingdog vs ZenRows",
        "url": "https://www.anchorterminal.com/compare/scrapingdog-vs-zenrows"
      },
      {
        "json": "https://www.anchorterminal.com/compare/spider-cloud-vs-zenrows.json",
        "title": "Spider vs ZenRows",
        "url": "https://www.anchorterminal.com/compare/spider-cloud-vs-zenrows"
      },
      {
        "json": "https://www.anchorterminal.com/compare/zenrows-vs-zyte.json",
        "title": "ZenRows vs Zyte API",
        "url": "https://www.anchorterminal.com/compare/zenrows-vs-zyte"
      },
      {
        "json": "https://www.anchorterminal.com/compare/context-dev-vs-qovia.json",
        "title": "Context.dev vs Qovia",
        "url": "https://www.anchorterminal.com/compare/context-dev-vs-qovia"
      },
      {
        "json": "https://www.anchorterminal.com/compare/diffbot-vs-qovia.json",
        "title": "Diffbot vs Qovia",
        "url": "https://www.anchorterminal.com/compare/diffbot-vs-qovia"
      },
      {
        "json": "https://www.anchorterminal.com/compare/diffbot-vs-zenrows.json",
        "title": "Diffbot vs ZenRows",
        "url": "https://www.anchorterminal.com/compare/diffbot-vs-zenrows"
      },
      {
        "json": "https://www.anchorterminal.com/compare/firecrawl-mcp-vs-zenrows.json",
        "title": "Firecrawl MCP vs ZenRows",
        "url": "https://www.anchorterminal.com/compare/firecrawl-mcp-vs-zenrows"
      },
      {
        "json": "https://www.anchorterminal.com/compare/jevcrawl-vs-qovia.json",
        "title": "jevcrawl vs Qovia",
        "url": "https://www.anchorterminal.com/compare/jevcrawl-vs-qovia"
      },
      {
        "json": "https://www.anchorterminal.com/compare/olostep-vs-qovia.json",
        "title": "Olostep vs Qovia",
        "url": "https://www.anchorterminal.com/compare/olostep-vs-qovia"
      },
      {
        "json": "https://www.anchorterminal.com/compare/oxylabs-web-scraper-vs-qovia.json",
        "title": "Oxylabs Web Scraper API vs Qovia",
        "url": "https://www.anchorterminal.com/compare/oxylabs-web-scraper-vs-qovia"
      },
      {
        "json": "https://www.anchorterminal.com/compare/qovia-vs-scrapeatlas.json",
        "title": "Qovia vs ScrapeAtlas",
        "url": "https://www.anchorterminal.com/compare/qovia-vs-scrapeatlas"
      },
      {
        "json": "https://www.anchorterminal.com/compare/qovia-vs-scrapegraphai.json",
        "title": "Qovia vs ScrapeGraphAI",
        "url": "https://www.anchorterminal.com/compare/qovia-vs-scrapegraphai"
      },
      {
        "json": "https://www.anchorterminal.com/compare/qovia-vs-scraperapi.json",
        "title": "Qovia vs ScraperAPI",
        "url": "https://www.anchorterminal.com/compare/qovia-vs-scraperapi"
      },
      {
        "json": "https://www.anchorterminal.com/compare/qovia-vs-scrapewise.json",
        "title": "Qovia vs Scrapewise",
        "url": "https://www.anchorterminal.com/compare/qovia-vs-scrapewise"
      },
      {
        "json": "https://www.anchorterminal.com/compare/qovia-vs-scrapfly.json",
        "title": "Qovia vs Scrapfly",
        "url": "https://www.anchorterminal.com/compare/qovia-vs-scrapfly"
      },
      {
        "json": "https://www.anchorterminal.com/compare/qovia-vs-scrapingant.json",
        "title": "Qovia vs ScrapingAnt",
        "url": "https://www.anchorterminal.com/compare/qovia-vs-scrapingant"
      },
      {
        "json": "https://www.anchorterminal.com/compare/qovia-vs-scrapingbee.json",
        "title": "Qovia vs ScrapingBee",
        "url": "https://www.anchorterminal.com/compare/qovia-vs-scrapingbee"
      },
      {
        "json": "https://www.anchorterminal.com/compare/qovia-vs-scrapingdog.json",
        "title": "Qovia vs Scrapingdog",
        "url": "https://www.anchorterminal.com/compare/qovia-vs-scrapingdog"
      },
      {
        "json": "https://www.anchorterminal.com/compare/qovia-vs-spider-cloud.json",
        "title": "Qovia vs Spider",
        "url": "https://www.anchorterminal.com/compare/qovia-vs-spider-cloud"
      },
      {
        "json": "https://www.anchorterminal.com/compare/qovia-vs-zyte.json",
        "title": "Qovia vs Zyte API",
        "url": "https://www.anchorterminal.com/compare/qovia-vs-zyte"
      },
      {
        "json": "https://www.anchorterminal.com/compare/scrapeatlas-vs-zenrows.json",
        "title": "ScrapeAtlas vs ZenRows",
        "url": "https://www.anchorterminal.com/compare/scrapeatlas-vs-zenrows"
      }
    ],
    "panel": null,
    "scores": [
      {
        "by": 47,
        "edge": "zenrows",
        "key": "reliability",
        "name": "Reliability",
        "qovia": 40,
        "weight": 16,
        "zenrows": 87
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 7,
        "edge": "zenrows",
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "qovia": 86,
        "weight": 13,
        "zenrows": 93
      },
      {
        "by": 2,
        "edge": "zenrows",
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "qovia": 77,
        "weight": 13,
        "zenrows": 79
      },
      {
        "by": 10,
        "edge": "qovia",
        "key": "security",
        "name": "Security \u0026 auth",
        "qovia": 60,
        "weight": 14,
        "zenrows": 50
      },
      {
        "by": 25,
        "edge": "zenrows",
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "qovia": 55,
        "weight": 10,
        "zenrows": 80
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 13,
        "edge": "zenrows",
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "qovia": 77,
        "weight": 7,
        "zenrows": 90
      },
      {
        "by": 49,
        "edge": "zenrows",
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "qovia": 30,
        "weight": 7,
        "zenrows": 79
      }
    ],
    "summary": "ZenRows scores 75.9 (BB) on agent readiness against Qovia's 61.2 (C), and leads in 6 of 7 scored categories. Qovia leads on security \u0026 auth. Both do extraction.",
    "tasks": null,
    "tutorials": [
      {
        "title": "Extract page titles and links with ZenRows",
        "tool": "zenrows",
        "url": "https://www.anchorterminal.com/tutorials/zenrows/"
      }
    ],
    "verdicts": {
      "qovia": "An OpenAPI 3.1 file with 144 operations, one envelope and 20 error codes, per-endpoint prices with failed and empty calls refunded, scoped keys and a four-tool MCP server that keeps the catalogue out of context. No status page, no legal entity, one-paragraph terms and privacy pages, and a product ten days old at the check.",
      "zenrows": "No incidents in the 90 days to 1 November 2026 on a six-component Better Stack status page, and an OpenAPI 3.1 file with coded errors. The Fetch API only takes the key in the query string."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/qovia-vs-zenrows",
    "json": "https://www.anchorterminal.com/compare/qovia-vs-zenrows.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/qovia-vs-zenrows.md",
    "mcp": "https://www.anchorterminal.com/mcp",
    "slim": "https://www.anchorterminal.com/compare/qovia-vs-zenrows.min.md"
  },
  "markdown": "ZenRows scores 75.9 (BB) on agent readiness against Qovia's 61.2 (C), and leads in 6 of 7 scored categories. Qovia leads on security \u0026 auth. Both do extraction.\n\n- Qovia: grade C, 61.2/100, rank #558 of 1253. Markdown https://www.anchorterminal.com/tools/qovia.md · JSON https://www.anchorterminal.com/api/v1/tools/qovia.json\n- ZenRows: grade BB, 75.9/100, rank #41 of 1253. Markdown https://www.anchorterminal.com/tools/zenrows.md · JSON https://www.anchorterminal.com/api/v1/tools/zenrows.json\n- Best web scraping and crawling APIs for AI agents: https://www.anchorterminal.com/best/web-scrapers/index.md\n- All 261 scrapers comparisons: https://www.anchorterminal.com/compare/web-scrapers/index.md\n\n## Which one, for what\n\n### Qovia (C)\n\nGood for: Agents that need structured public data from Chinese platforms (Douyin, Xiaohongshu, Weibo, Bilibili, Kuaishou, Zhihu, WeChat official accounts, Taobao and JD reviews) or the Xingtu and Pugongying creator marketplaces, with TikTok, YouTube, Instagram, X and Reddit beside them, paid per successful call from a prepaid balance.\n\nAhead on:\n- Security \u0026 auth, 60 against 50\n\nAlso in its favour:\n- No incidents deducted, where ZenRows loses 3 points for them\n\nWatch for: No status page, incident history or SLA; the terms promise nothing about uptime and the Python client is the only retry guidance beyond `Retry-After`\n\n### ZenRows (BB)\n\nGood for: An agent hitting protected sites that wants the service to choose the setup and bill only success, and for agents that must onboard without a human.\n\nAhead on:\n- Reliability, 87 against 40\n- Schema \u0026 documentation, 93 against 86\n- Payments \u0026 pricing, 80 against 55\n- Maintenance \u0026 community, 90 against 77\n- Transparency \u0026 trust, 79 against 30\n\nAlso in its favour:\n- Agent-ready, a grade of BB or better\n- Runs on your own machine\n- Free to start without a card\n\nWatch for: The Fetch API only takes the key in the query string\n\n\n## Why the edge\n\n### Transparency \u0026 trust: ZenRows +49\n\n- Qovia (30): Closed service. The Terms of Service is one paragraph that names no legal entity, address or liability terms, says Delaware law governs and that the page is a summary with the signed agreement governing; the repository's client is MIT. Between the closed and unclear bands (7 of 30). The privacy policy is one paragraph. Account information is used to deliver and bill, personal information is not sold, requests and results are not resold, deletion requests go to the support mailbox, and the agreement governs where it differs. No retention periods, no subprocessors, no DPA, and no statement about the cache the prov.source flag implies; the SECURITY.md repeats the same points (8 of 30). A 410 endpoint_disabled code exists for retired endpoints and the changelog is dated, but there is no deprecation policy or notice period and nothing is marked deprecated (5 of 20). Stripe is named on the pricing page as the card and Alipay processor; no other provider, data location or transfer basis is stated (3 of 20). 7+8+5+3 = 23.\n- ZenRows (79): Closed service, with ZENROWS, S.L. named in full (Getxo, Spain, tax ID B10660298). The MCP is MIT (15 of 30). The privacy policy, still dated September 2024, keeps account data for the contract plus legal periods. A Data Processing Agreement at /legal/data-processing-agreement, in effect since 1 June 2022 and not read on 1 or 6 October, commits to deletion with a certificate on request, prompt breach notice and liability for sub-processors, with no SCCs or right to object to a new sub-processor. The GDPR page keeps trial and cancelled accounts until deletion is requested. Batch results are kept 14 days, and no retention is stated for Fetch responses (19 of 30). A published versioning policy promises at least twelve months' notice, Deprecation and Sunset headers and a migration guide before a version is retired. The 2026 renames carried no dated notices (15 of 20). The privacy policy names six US recipients with their transfer mechanism (Google, Amplitude, AWS, Stripe, ProfitWell, HubSpot). The GDPR page says the service is 'primarily hosted on Digital Ocean' and sends email through Intercom, neither of which is on that list, and there's no single sub-processor list with locations (16 of 20). 15+19+15+16 = 65.\n\n### Reliability: ZenRows +47\n\n- Qovia (40): Hosted reading, for the REST API with the MCP server described. No public status page was found. https://qovia.ai/status/ answers 404, status.qovia.ai does not resolve and neither the docs nor the footer links one (0). No readable incident history, so 5 by the rubric (5). Limits are published with numbers on the quickstart's rate-limits section, 60 requests a minute per account before the first top-up and 600 after on a sliding 60-second window, with X-RateLimit-Limit and X-RateLimit-Remaining headers, a 64 KiB body cap, an empty-call throttle (50 calls in 10 minutes with over 80 per cent empty, not found or rejected) and a per-second cap per endpoint without a number (15). Retry-After is declared on too_many_auth_failures, rate_limited, too_many_unbilled, endpoint_busy and upstream_busy, the error table marks the retryable codes, the docs say a 503 endpoint_unavailable carries none and will not clear, and the Python client retries 429 and 503 honouring the header. Every operation is a read, including POST /v1/search, and a failed or timed-out call is refunded, so idempotency keys are not needed (15). No SLA. The terms summary says nothing about uptime and the pricing FAQ excludes outages, rate limits and platform changes from refunds; the 11 September 2026 archived home page advertised a 99.95 per cent enterprise SLA that the current pages have dropped (0). The endpoints are sold and labelled Live on the docs and coverage pages, but every one of the 143 carries x-qovia-status beta in the OpenAPI file, the API version is 0.1.0 and the MCP server reports 0.1.0 (5 of 10). 0+5+15+15+0+5 = 40.\n- ZenRows (87): Better Stack status page with 6 components (Fetch standard, Fetch headless, Proxies, Residential Proxies, Browser Sessions, website) (20). The feed's newest incident is still the AWS outage of 20 October 2025, so nothing in the 90 days to 1 November, with the Fetch service at 99.998 per cent and the website at 100 on 1 November (30). Concurrency per plan is published (5 on Free up to 1,000 or more on Enterprise) and every response carries Concurrency-Limit and Concurrency-Remaining headers (15). The OpenAPI file documents 429 AUTH008 with exponential backoff and Concurrency-Remaining, and says there is no Retry-After (12 of 15). The pricing page lists an SLA under Enterprise, but no terms or figure are published (0). Fetch is generally available. Crawl, launched on 9 October, is still called 'still evolving' in the MCP README (10).\n\n### Payments \u0026 pricing: ZenRows +25\n\n- Qovia (55): No x402, MPP or L402 on Qovia's own endpoints; USDT on TRC-20 is a top-up method from a console session, not a machine payment protocol. The vendor's five Actors on the Apify Store under the profile qovia (Qovia Data, the same Telegram handle and mailbox as the site), such as the Xingtu Actor at $0.01 to $0.06 a section, can be paid through Apify, whose prepaid token is sold over x402, so partial credit for a third-party route on part of the catalogue (10 of 40). Per-call prices are published without a login, per endpoint in the OpenAPI file, llms.txt and the docs, search at $5 and raw endpoints from $0.5 to $19.5 per 1,000, with the tier rule and payment fees stated (20). 50 trial calls for a new account, counted only when a call returns data; the quickstart says to top up when they run out and the docs ask for no card at sign-up, though no account was created to confirm it (20). A person signs up in a browser and creates a key; the MCP catalogue tools work without a key but data calls do not, and the Apify route reaches four platforms without a Qovia account (5 of 20). 10+20+20+5 = 55.\n- ZenRows (80): x402 and MPP through an agent storefront at agents.zenrows.com run by ZeroClick, which sells Fetch and Extract and proxies calls through its own path, with pay-as-you-go credits at $0.50 per 1,000 (10,000 minimum) per the pricing docs. Nothing on api.zenrows.com itself (20 of 40). Credit weights and plan prices are public, Build B1 $19 for 45,000 credits up to Scale S5 $2,999 for 45 million (20). 5,000 free credits a month, no card (20). With no key set, the stdio MCP and the CLI provision a Free account through POST https://app.zenrows.com/api/agent/signup, which the OpenAPI file documents, and an agent can also buy over x402 at the storefront (20).\n\n### Maintenance \u0026 community: ZenRows +13\n\n- Qovia (77): The newest changes are the registry entry ai.qovia/qovia 0.1.1 and the repository's tools snapshot and plugin manifests on 28 October 2026, after the Python client 0.1.1 on PyPI on 27 October; the repository was pushed on 1 November (30). Eight changelog entries on 21 and 22 October, two registry versions (22 and 28 October) and two PyPI releases (25 and 27 October) are more than three dated entries in 90 days, all within ten days (20). Closed service with a public changelog. Support is Telegram, WhatsApp, WeChat and one mailbox, with a one-business-day reply promised for email; GitHub issues are enabled on the repository with none opened, and no forum, Discord or community was found (7 of 15). ai.qovia/qovia is in the official MCP registry under a DNS-verified reverse-DNS namespace at 0.1.1, marked latest, and the Python client is an official package on PyPI (15). The client is standard-library Python with a test file, MIT, no dependencies and no CI workflow in the repository tree; the account's other nine repositories are forks of lists and directories (5 of 10). 30+20+7+15+5 = 77.\n- ZenRows (90): MCP v2.18.0 on 2026-10-30 (30). Seven MCP minor releases from 18 to 30 October alone (v2.12.0 to v2.18.0), and dated changelog entries on 2, 5 and 9 October (20). We couldn't read GitHub issues. PRs are merged within days and the dated changelog on zenrows.com runs to 9 October (15 of 25). In the official MCP registry as io.github.ZenRows/zenrows-mcp, with 2.18.0 published on 30 October and marked latest (15). CI runs typecheck, lint and tests on a Node matrix, and a check that server.json matches the package version (10).\n\n### Security \u0026 auth: Qovia +10\n\n- Qovia (60): API keys with scopes chosen at creation (every endpoint, search, every raw endpoint or one of 24 platform groups), an optional expiry, revocation in the console and hashed storage; the docs say the key is read from the Authorization or x-api-key header only, never the URL or a cookie, and 30 failed authentications from one IP in a minute are throttled. No OAuth and no rotation feature beyond creating another key (24 of 30). The whole surface is read-only retrieval, scopes restrict a key to platforms, the two MCP catalogue tools need no key, and the docs and SECURITY.md tell users to give AI tools a separate scoped key (17 of 20). Every response is third-party platform text, and the only related statement is that error messages never contain the data source's own text; nothing on treating returned content as untrusted (3 of 15). request_id is the usage record ID on every answer, the console lists every charge in a usage log, X-Qovia-Charged and X-Qovia-Balance headers report each call, and GET /v1/account returns the key's scopes and balance at no charge; no exportable audit log or per-call endpoint was found (11 of 15). No security.txt on qovia.ai or api.qovia.ai (404), no bug bounty, SOC 2 or ISO 27001; the repository's SECURITY.md names a Telegram handle and a mailbox for reports covering both hosts (5 of 20). 24+17+3+11+5 = 60.\n- ZenRows (50): The Fetch API takes the key only as the apikey query parameter, as the OpenAPI security schemes still show on 1 November. Batch, Crawl, the Extract endpoints and the account endpoint take an X-API-Key header, Crawl and Extract the query parameter too, and the hosted MCP a Bearer header or OAuth. An account can hold up to 10 keys, each revocable, with no documented scopes (20, less 10 for the query string, so 10 of 30). Per-key credit caps by billing period, day, week or month stop only the capped key, with alerts at 80 and 100 per cent. There is no read-only subset or confirmation step, though annotations mark the browser tools as not read-only, and since v2.15.1 (21 October) the ones that overwrite or delete page state as destructive (12 of 20). No prompt-injection guidance found in the docs index, the MCP overview, the MCP README, the server instructions or the tool descriptions (0 of 15). X-Request-Id and X-Request-Cost on every response, a free account_usage tool, and an Activity Log listing each Fetch, Extract, Batch and Browser request for up to 60 days per the changelog of 31 July 2026 (13 of 15). security.txt on www.zenrows.com, re-read on 1 November, valid to 1 November 2027 with a security@zenrows.com contact and a linked information security policy. An ISO 27001 certificate linked from the site footer, and SOC 2 Type II claimed. No bug bounty found (15 of 20).\n\n### Schema \u0026 documentation: ZenRows +7\n\n- Qovia (86): An OpenAPI 3.1.0 file (version 0.1.0, 1 MB) is public at qovia.ai/openapi.json with 144 paths and 144 operations, two security schemes, typed query parameters, a response example on every operation and the error responses declared on each. The data payload itself is typed only as object, array or null with per-endpoint examples, and the MCP call_endpoint tool takes a free params object, so 22 of 25 (22). llms.txt (75 KB, one line per endpoint with price and status) and llms-full.txt (331 KB, the whole documentation as text) are served, and the quickstart's billing, limits and error sections are in both (10). Every operation has a summary and a description; most say what the data holds, how to page, which ids to pass, which fields are unavailable and what answers 404 or empty, and the MCP server's instructions say to find, read then call. Guidance on when not to use an endpoint is thin, mostly pointers such as replies coming from another endpoint (16 of 20). 321 parameters, 75 with enums, patterns on ids, min and max on strings and integers, 117 operations with one required parameter and 16 with none, the POST body typed with additionalProperties false, and unknown parameters rejected with 400 (14 of 15). A response example on all 144 operations, 20 error codes with every message variant listed, response headers documented per error, and cURL, Python, JavaScript and raw HTTP samples; the examples are catalogue samples the docs say are not live data (14 of 15). Paths are under /v1, a 410 endpoint_disabled code exists for retired endpoints, and the changelog is dated, but it has two days (21 and 22 October 2026), nothing is marked deprecated and no notice period is stated (10 of 15). 22+10+16+14+14+10 = 86.\n- ZenRows (93): OpenAPI 3.1 at www.zenrows.com/openapi.json covers Fetch, Extract, Crawl (added after the 9 October launch), Batch, agent signup and HMAC key rotation, and the 63 MCP tools have typed zod inputs (25). llms.txt with 105 entries linking 240 docs pages on 1 November, each with a Markdown copy (10). The scrape tool says when to prefer extract, when to turn on js_render or premium_proxy, and gives three examples, and the crawl tools say when to wait, page or download. The browser tools are terser (18 of 20). Enums on mode and response_type, URL validation and required fields, but css_extractor is a JSON string and outputs a comma-separated string (12 of 15). Error catalogue of 35 codes such as AUTH004 and RESP002, plus a table of Batch and Extract codes, grouped by HTTP status with fixes, and every OpenAPI operation lists its error responses (15). The API is versioned in the path (v1, never retired), a dated changelog at www.zenrows.com/changelog runs to 9 October 2026, with nothing newer on 1 November, and the MCP has semver tags. The 2026 renames (Universal Scraper API to Fetch, Scraping Browser to Browser Sessions) aren't in it (13 of 15).\n\n## Score by category\n\n| Category | Weight | Qovia | ZenRows | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 40 | 87 | ZenRows +47 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 86 | 93 | ZenRows +7 |\n| Agent ergonomics | 13% (16.2 this run) | 77 | 79 | ZenRows +2 |\n| Security \u0026 auth | 14% (17.5 this run) | 60 | 50 | Qovia +10 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 55 | 80 | ZenRows +25 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 77 | 90 | ZenRows +13 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 30 | 79 | ZenRows +49 |\n| Negative events | ≤15 | 0 | -3 | |\n| **Total** | | **61.2 · C** | **75.9 · BB** | |\n\n## Facts side by side\n\n| Fact | Qovia | ZenRows |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | Qovia | ZenRows |\n| Hosted endpoint | `https://api.qovia.ai` | `https://api.zenrows.com/v1/` |\n| Transports | HTTP, Streamable HTTP | HTTP, Streamable HTTP, stdio |\n| Auth | API key | OAuth or key |\n| Pricing | Pay per use | Freemium |\n| x402 | no | payer tooling only |\n| Licence | Proprietary hosted service under a one-paragraph Terms of Service summary that defers to a signed agreement. The qovia/qovia-mcp repository (setup guide, examples, Python client) and the qovia package on PyPI are MIT; the service's source is not public | none |\n| Tools exposed | 141 | 63 |\n| Read-only variant documented | no | no |\n| llms.txt | yes | yes |\n| MCP registry | `ai.qovia/qovia` | `io.github.ZenRows/zenrows-mcp` |\n| Last release | 2026-10-28 | 2026-10-30 |\n| Terms last updated | not read yet | 2025-07-01 |\n| Privacy policy last updated | not read yet | 2024-09-01 |\n| Customer content may train models | not read yet | not found in the text |\n| Terms restrict automated access | not read yet | not found in the text |\n| Terms restrict benchmarking | not read yet | not found in the text |\n| Terms or service can change without notice | not read yet | yes |\n| Arbitration or class-action waiver | not read yet | not found in the text |\n| Popularity | 0 stars | 21 stars, 35k npm/wk |\n| Agent reviews | none | 3.8/5 (8) |\n\n## How the scores have moved\n\n### Qovia\n\nNo score change since it was listed.\n\n### ZenRows\n\n- -3.0 on 1 November 2026 (A to BB): negative event\n- +0.1 on 27 October 2026: checklist\n- +4.0 on 17 October 2026 (BB to A): product, new evidence\n\n## Verdicts\n\n**Qovia.** An OpenAPI 3.1 file with 144 operations, one envelope and 20 error codes, per-endpoint prices with failed and empty calls refunded, scoped keys and a four-tool MCP server that keeps the catalogue out of context. No status page, no legal entity, one-paragraph terms and privacy pages, and a product ten days old at the check.\n\n**ZenRows.** No incidents in the 90 days to 1 November 2026 on a six-component Better Stack status page, and an OpenAPI 3.1 file with coded errors. The Fetch API only takes the key in the query string.\n\n## Before you call either\n\n### Qovia\n\n1. Send `Authorization: Bearer sk-qovia-...` to https://api.qovia.ai and check `meta.empty` on every HTTP 200; `data` may be `null` or an empty structure and nothing is charged for it.\n2. Branch on `error.code`, never on `message`. Retry only `rate_limited`, `too_many_unbilled`, `endpoint_busy`, `upstream_busy` and `too_many_auth_failures` after `Retry-After`; `endpoint_unavailable` has none and will not clear.\n3. Stay under 60 requests a minute (600 after the first top-up) across every key on the account, and keep empty or not-found calls under 80 per cent of the last 10 minutes or expect 429 `too_many_unbilled`.\n4. Pass the previous page's `cursor` (and `search_id` on Douyin and Zhihu search) back unchanged and stop when `has_more` is false; each page is a separate charge, and unknown parameters answer 400.\n5. For MCP, connect to https://api.qovia.ai/mcp over Streamable HTTP; call `search_endpoints` then `get_endpoint` before `call_endpoint`, or add `?tools=douyin,kuaishou` for typed direct tools. Catalogue tools need no key.\n\n### ZenRows\n\n1. Start with mode=auto and let it escalate. Force js_render or premium_proxy only when you know the site needs it\n2. Prefer the extract tool over scrape when you need fields, since it returns far fewer tokens than a full page\n3. On REQS007 from extract, read `reason`. Call prepare_domain for domain_not_prepared, or fall back to css_extractor; extract no longer falls back to autoparse\n4. Read the Concurrency-Remaining response header before fanning out, as extra requests get 429\n5. On a 402 with AUTH014, only this key hit its cap. Read X-Key-Credits-Remaining and don't tell the user to buy credits\n6. Set ZENROWS_AUTO_SIGNUP=false in stdio configs so a missing key fails loudly instead of creating an account\n7. Pass `idempotency_key` to `crawl_create` and `batch_create` so a retried call returns the same job instead of starting and billing a second one\n\n## Tutorials\n\n- [Extract page titles and links with ZenRows](https://www.anchorterminal.com/tutorials/zenrows/), for ZenRows\n\n## Questions\n\n### Which is better for AI agents, Qovia or ZenRows?\n\nZenRows scores 75.9 (BB) on agent readiness against Qovia's 61.2 (C), and leads in 6 of 7 scored categories. Qovia leads on security \u0026 auth.\n\n### Do Qovia and ZenRows need an API key?\n\nQovia needs an API key. ZenRows takes an API key or an OAuth sign-in.\n\n### Can an agent call Qovia and ZenRows without installing anything?\n\nYes. Qovia has a hosted endpoint at https://api.qovia.ai and ZenRows at https://api.zenrows.com/v1/.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/qovia-vs-zenrows.json, and with the fewest tokens: https://www.anchorterminal.com/compare/qovia-vs-zenrows.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"qovia\", \"b\": \"zenrows\"}`. From a terminal: `anchor compare qovia zenrows`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/qovia.json and https://www.anchorterminal.com/api/v1/tools/zenrows.json\n\n## Other comparisons with Qovia or ZenRows\n\n- [Bright Data vs Qovia](https://www.anchorterminal.com/compare/bright-data-vs-qovia.md)\n- [Firecrawl MCP vs Qovia](https://www.anchorterminal.com/compare/firecrawl-mcp-vs-qovia.md)\n- [Apify MCP Server vs ZenRows](https://www.anchorterminal.com/compare/apify-mcp-vs-zenrows.md)\n- [Bright Data vs ZenRows](https://www.anchorterminal.com/compare/bright-data-vs-zenrows.md)\n- [Context.dev vs ZenRows](https://www.anchorterminal.com/compare/context-dev-vs-zenrows.md)\n- [jevcrawl vs ZenRows](https://www.anchorterminal.com/compare/jevcrawl-vs-zenrows.md)\n- [Jina Reader vs ZenRows](https://www.anchorterminal.com/compare/jina-reader-vs-zenrows.md)\n- [Olostep vs ZenRows](https://www.anchorterminal.com/compare/olostep-vs-zenrows.md)\n- [Oxylabs Web Scraper API vs ZenRows](https://www.anchorterminal.com/compare/oxylabs-web-scraper-vs-zenrows.md)\n- [Scrape.do vs ZenRows](https://www.anchorterminal.com/compare/scrape-do-vs-zenrows.md)\n- [ScrapeGraphAI vs ZenRows](https://www.anchorterminal.com/compare/scrapegraphai-vs-zenrows.md)\n- [Scrapeless vs ZenRows](https://www.anchorterminal.com/compare/scrapeless-vs-zenrows.md)\n- [ScraperAPI vs ZenRows](https://www.anchorterminal.com/compare/scraperapi-vs-zenrows.md)\n- [Scrapewise vs ZenRows](https://www.anchorterminal.com/compare/scrapewise-vs-zenrows.md)\n- [Scrapfly vs ZenRows](https://www.anchorterminal.com/compare/scrapfly-vs-zenrows.md)\n- [ScrapingAnt vs ZenRows](https://www.anchorterminal.com/compare/scrapingant-vs-zenrows.md)\n- [ScrapingBee vs ZenRows](https://www.anchorterminal.com/compare/scrapingbee-vs-zenrows.md)\n- [Scrapingdog vs ZenRows](https://www.anchorterminal.com/compare/scrapingdog-vs-zenrows.md)\n- [Spider vs ZenRows](https://www.anchorterminal.com/compare/spider-cloud-vs-zenrows.md)\n- [ZenRows vs Zyte API](https://www.anchorterminal.com/compare/zenrows-vs-zyte.md)\n- [Context.dev vs Qovia](https://www.anchorterminal.com/compare/context-dev-vs-qovia.md)\n- [Diffbot vs Qovia](https://www.anchorterminal.com/compare/diffbot-vs-qovia.md)\n- [Diffbot vs ZenRows](https://www.anchorterminal.com/compare/diffbot-vs-zenrows.md)\n- [Firecrawl MCP vs ZenRows](https://www.anchorterminal.com/compare/firecrawl-mcp-vs-zenrows.md)\n- [jevcrawl vs Qovia](https://www.anchorterminal.com/compare/jevcrawl-vs-qovia.md)\n- [Olostep vs Qovia](https://www.anchorterminal.com/compare/olostep-vs-qovia.md)\n- [Oxylabs Web Scraper API vs Qovia](https://www.anchorterminal.com/compare/oxylabs-web-scraper-vs-qovia.md)\n- [Qovia vs ScrapeAtlas](https://www.anchorterminal.com/compare/qovia-vs-scrapeatlas.md)\n- [Qovia vs ScrapeGraphAI](https://www.anchorterminal.com/compare/qovia-vs-scrapegraphai.md)\n- [Qovia vs ScraperAPI](https://www.anchorterminal.com/compare/qovia-vs-scraperapi.md)\n- [Qovia vs Scrapewise](https://www.anchorterminal.com/compare/qovia-vs-scrapewise.md)\n- [Qovia vs Scrapfly](https://www.anchorterminal.com/compare/qovia-vs-scrapfly.md)\n- [Qovia vs ScrapingAnt](https://www.anchorterminal.com/compare/qovia-vs-scrapingant.md)\n- [Qovia vs ScrapingBee](https://www.anchorterminal.com/compare/qovia-vs-scrapingbee.md)\n- [Qovia vs Scrapingdog](https://www.anchorterminal.com/compare/qovia-vs-scrapingdog.md)\n- [Qovia vs Spider](https://www.anchorterminal.com/compare/qovia-vs-spider-cloud.md)\n- [Qovia vs Zyte API](https://www.anchorterminal.com/compare/qovia-vs-zyte.md)\n- [ScrapeAtlas vs ZenRows](https://www.anchorterminal.com/compare/scrapeatlas-vs-zenrows.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "attributionRequired": true,
    "credit": "CC BY 4.0, credit Anchor Terminal and link the page or API address you took it from (https://www.anchorterminal.com/terms/#data)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-11-01",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.7",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run",
    "terms": "https://www.anchorterminal.com/terms/#data"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Compare",
        "url": "https://www.anchorterminal.com/compare/"
      },
      {
        "name": "Qovia vs ZenRows",
        "url": ""
      }
    ],
    "description": "ZenRows scores 75.9 (BB) to Qovia's 61.2 (C) for extraction. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "Qovia C 61.2",
      "ZenRows BB 75.9",
      "scores"
    ],
    "h1": "Qovia vs ZenRows",
    "image": "https://www.anchorterminal.com/assets/og/default.png",
    "path": "/compare/qovia-vs-zenrows",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Qovia vs ZenRows for AI agents in 2026: scores and prices",
    "toc": null,
    "updated": "2026-11-01",
    "url": "https://www.anchorterminal.com/compare/qovia-vs-zenrows"
  },
  "tokens": {
    "markdown": 6600,
    "slim": 4380
  },
  "version": 1
}
