{
  "data": {
    "a": {
      "slug": "crw",
      "name": "fastCRW",
      "vendor": "Nanofy OÜ",
      "vendorUrl": "https://fastcrw.com",
      "kind": "http-api",
      "category": "web-scrapers",
      "summary": "fastCRW is a Firecrawl-compatible scraping engine in Rust from Nanofy OÜ in Estonia. It turns pages into Markdown or JSON and searches, maps and crawls sites, as an AGPL-3.0 self-hosted binary or a hosted API with an MCP server.",
      "url": "https://www.anchorterminal.com/tools/crw",
      "markdownUrl": "https://www.anchorterminal.com/tools/crw.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/crw.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/crw.json",
      "dns": "crw.grade.anchorterminal.com",
      "repo": "https://github.com/fastcrw/crw",
      "license": "AGPL-3.0",
      "transports": [
        "stdio",
        "streamable-http"
      ],
      "remoteUrl": "https://fastcrw.com/mcp",
      "packages": [
        {
          "registry": "npm",
          "name": "crw-mcp"
        },
        {
          "registry": "npm",
          "name": "crw-sdk"
        },
        {
          "registry": "pypi",
          "name": "crw"
        },
        {
          "registry": "cargo",
          "name": "crw-server"
        },
        {
          "registry": "oci",
          "name": "ghcr.io/fastcrw/crw"
        }
      ],
      "auth": "mixed",
      "authNotes": "Hosted API at api.fastcrw.com takes `Authorization: Bearer crw_live_...` keys from the fastcrw.com dashboard after a browser signup (GitHub or email). The hosted MCP server at fastcrw.com/mcp takes OAuth 2.1 (PKCE S256, dynamic client registration, one scope `mcp:tools`) or the key in the URL path as fastcrw.com/mcp/\u003cAPI_KEY\u003e. No key scopes found. A self-hosted engine needs no key unless `[auth] api_keys` is set.",
      "pricing": "freemium",
      "pricingNotes": "500 one-off credits with no card, plus up to 500 more from onboarding tasks. Hobby $13 a month for 5,000 credits, Standard $69 for 100,000, Growth $279 for 500,000, Scale $549 for 1,000,000 (less with yearly billing). One credit a page on any renderer, search 2. Failed pages refunded, top-ups never expire. Self-hosting is free.",
      "priceSummary": "$13 / mo",
      "where": "both",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 on the pricing page, the credit-costs and agent-onboarding docs, or the OpenAPI spec (checked 2026-11-06). A 402 on the hosted API means an exhausted credit balance (`errorCode: insufficient_credits`) with an upgrade URL header, not a payment requirement.",
        "endpoints": []
      },
      "toolCount": 11,
      "popularity": {
        "githubStars": 1200,
        "npmWeekly": 881,
        "pypiWeekly": null,
        "asOf": "2026-11-06"
      },
      "docsUrl": "https://docs.fastcrw.com",
      "llmsTxt": "https://docs.fastcrw.com/llms.txt",
      "openapi": "https://github.com/fastcrw/crw/blob/main/docs/openapi.json",
      "registryName": "io.github.fastcrw/crw",
      "capabilities": [
        "web.scrape",
        "web.crawl",
        "web.extract",
        "scraping.js-render",
        "scraping.proxies",
        "web.search",
        "web.fetch"
      ],
      "tags": [
        "hosted",
        "local",
        "open-source",
        "self-hosted",
        "freemium",
        "no-card",
        "mcp",
        "remote-mcp",
        "mcp-registry",
        "llms-txt",
        "openapi",
        "rust",
        "eu"
      ],
      "lastRelease": "2026-11-04",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 64.3,
        "grade": "B",
        "agentReady": false,
        "rank": 478,
        "ranked": true,
        "rankOf": 1486,
        "categoryRank": 11,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 91,
          "maintenance": 93,
          "payments": 35,
          "reliability": 50,
          "schema": 91,
          "security": 40,
          "transparency": 60
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-11-06"
        },
        "negative": 0,
        "verdict": "Agents get 11 compact, annotated MCP tools with bounded output, a public OpenAPI spec, refunds on failed pages and a free self-hosted engine. The hosted service has no status history, publishes no SLA terms, names its operator only on the support page, and documents an MCP address with the API key in the URL path.",
        "bestFor": "Agents that want Firecrawl-style scrape, crawl, map, search and extract at lower per-page cost, or a small self-hosted engine.",
        "strengths": [
          "11 MCP tools, each annotated readOnlyHint, destructiveHint and idempotentHint, with output capped near 15,000 characters and a resume offset",
          "Public OpenAPI 3.1 spec, llms.txt and an error page that says which codes to retry and which to stop on",
          "Failed and blocked pages are refunded, every renderer costs 1 credit, and top-up credits never expire",
          "Released 16 times in the 90 days to 6 November 2026, with five open issues on GitHub",
          "AGPL-3.0 engine runs self-hosted with no account, and MIT Python and TypeScript SDKs"
        ],
        "weaknesses": [
          "The status page shows a live check and an uptime objective but no incident history",
          "The hosted MCP address fastcrw.com/mcp/\u003cAPI_KEY\u003e puts the key in the URL path as a documented option",
          "Terms and privacy policy name no legal entity, give no retention periods and name no DPA; only the support page names Nanofy OÜ",
          "No SLA terms beyond an Enterprise mention, no security.txt and no certification found",
          "No machine payment protocol, and hosted keys need a person to sign up in a browser"
        ],
        "agentNotes": [
          "Connect to https://fastcrw.com/mcp with OAuth rather than the /mcp/\u003cAPI_KEY\u003e address, so the key stays out of URLs and logs",
          "Branch on `errorCode`. Stop on 402 insufficient_credits or llm_not_available, and on 429 wait for Retry-After before retrying",
          "Check `success` as well as the HTTP status, since an anti-bot wall answers 200 with `success: false` and `errorCode: anti_bot`",
          "Pass `startIndex` from a truncated result to read the rest of a long page instead of setting `maxLength: 0`",
          "Use native /v1 routes for new work; /firecrawl/v2 is for Firecrawl SDK migrations and keeps the older 429 for empty balances"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "B",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 64.3
          }
        ],
        "editorialScores": {
          "ergonomics": 91,
          "maintenance": 93,
          "payments": 35,
          "reliability": 50,
          "schema": 91,
          "security": 40,
          "transparency": 53
        },
        "provenanceScore": 67,
        "checked": {
          "categories": {
            "ergonomics": "2026-11-06",
            "maintenance": "2026-11-06",
            "payments": "2026-11-06",
            "reliability": "2026-11-06",
            "schema": "2026-11-06",
            "security": "2026-11-06",
            "transparency": "2026-11-06"
          },
          "last": "2026-11-06",
          "oldest": "2026-11-06",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "install": "npx -y crw-mcp@latest install",
        "http": "curl -X POST https://api.fastcrw.com/v1/scrape -H \"Authorization: Bearer YOUR_API_KEY\" -H \"Content-Type: application/json\" -d '{\"url\":\"https://example.com\",\"formats\":[\"markdown\"]}'"
      },
      "letme": {
        "capability": "https://letme.dev/web.scrape",
        "tool": "https://letme.dev/crw"
      },
      "area": "web-data",
      "unitPrices": [
        {
          "item": "Hobby plan",
          "unit": "month",
          "usd": 13,
          "note": "5,000 credits; $11 a month billed yearly"
        },
        {
          "item": "Standard plan",
          "unit": "month",
          "usd": 69,
          "note": "100,000 credits; $59 a month billed yearly"
        },
        {
          "item": "Hobby top-up",
          "unit": "1k-pages",
          "usd": 9,
          "note": "one credit scrapes one page on any renderer"
        },
        {
          "item": "Scale top-up",
          "unit": "1k-pages",
          "usd": 0.6,
          "note": "$299 for 500,000 credits"
        }
      ],
      "provenance": {
        "legalEntity": "Nanofy OÜ",
        "domain": "fastcrw.com",
        "domainRegistered": "2026-03-05",
        "endpointOnVendorDomain": true,
        "terms": "https://fastcrw.com/terms",
        "privacy": "https://fastcrw.com/privacy",
        "statusPage": "https://fastcrw.com/status",
        "changelog": "https://github.com/fastcrw/crw/blob/main/CHANGELOG.md",
        "securityTxt": "none",
        "checked": "2026-11-06",
        "notes": [
          "Nanofy OÜ (registry code 17365846, Sepapaja tn 6, Tallinn) is named as operator on fastcrw.com/support. The terms (last updated 4 April 2026) and the privacy policy (undated) name only fastCRW and 'the jurisdiction in which fastCRW operates'.",
          "The terms forbid crawling sites against their terms or robots.txt and put responsibility for targets on the customer. No clause forbids automated access to fastcrw.com itself.",
          "fastcrw.com/robots.txt allows all crawlers except account, API and login paths; docs.fastcrw.com/robots.txt allows all.",
          "RDAP gives fastcrw.com a registration date of 5 March 2026.",
          "fastcrw.com/.well-known/security.txt answers 404. SECURITY.md in the repository names security@fastcrw.com and GitHub private vulnerability reporting."
        ],
        "score": 67
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/crw.json",
      "live": {
        "slug": "crw",
        "probe": {
          "target": "https://fastcrw.com/mcp",
          "method": "get",
          "lastAt": "2026-11-07T18:20:19.526009674Z",
          "lastOk": true,
          "lastStatus": 401,
          "lastMs": 156,
          "lastNote": "asks for credentials",
          "authRequired": true,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 80,
          "p95ms24h": 153,
          "samples24h": 200,
          "samples30d": 200,
          "days": [
            {
              "date": "2026-11-06",
              "probes": 13,
              "ok": 13
            },
            {
              "date": "2026-11-07",
              "probes": 187,
              "ok": 187
            }
          ]
        },
        "vendorStatus": {
          "page": "https://fastcrw.com/status",
          "indicator": "unknown",
          "summary": "no machine-readable status found",
          "checkedAt": "2026-11-07T04:47:35.720864858Z"
        },
        "versions": [
          {
            "registry": "github",
            "name": "fastcrw/crw",
            "version": "v0.42.1",
            "released": "2026-11-06",
            "seenAt": "2026-11-06T23:18:48.669809831Z"
          },
          {
            "registry": "mcp-registry",
            "name": "io.github.fastcrw/crw",
            "version": "0.42.1",
            "seenAt": "2026-11-07T18:16:28.95801333Z"
          },
          {
            "registry": "npm",
            "name": "crw-mcp",
            "version": "0.42.1",
            "seenAt": "2026-11-06T23:18:46.329470936Z"
          },
          {
            "registry": "npm",
            "name": "crw-sdk",
            "version": "0.42.1",
            "seenAt": "2026-11-06T23:18:46.739900633Z"
          },
          {
            "registry": "pypi",
            "name": "crw",
            "version": "0.42.1",
            "released": "2026-11-06",
            "seenAt": "2026-11-06T23:18:48.550796676Z"
          }
        ],
        "githubStars": 1230,
        "npmWeekly": 881,
        "pypiWeekly": 441,
        "securityTxt": {
          "url": "https://fastcrw.com/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-11-07T15:59:50.596126033Z"
        },
        "llmsTxt": {
          "url": "https://docs.fastcrw.com/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-11-07T15:32:13.945191217Z"
        },
        "pages": [
          {
            "url": "https://raw.githubusercontent.com/fastcrw/crw/main/CHANGELOG.md",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-11-07T14:20:49.992321515Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "572aa4127341"
          },
          {
            "url": "https://fastcrw.com/privacy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-11-07T14:09:41.233044196Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "56adab90a2ac"
          },
          {
            "url": "https://fastcrw.com/terms",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-11-07T14:09:43.278176432Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "4f55b83dc108"
          }
        ],
        "updatedAt": "2026-11-07T18:20:19.526009674Z"
      }
    },
    "answer": "fastCRW scores 64.3 (B) on agent readiness against Oxylabs Web Scraper API's 62.9 (B), and leads in 3 of 7 scored categories. Oxylabs Web Scraper API leads on reliability, security \u0026 auth and payments \u0026 pricing.",
    "b": {
      "slug": "oxylabs-web-scraper",
      "name": "Oxylabs Web Scraper API",
      "vendor": "oxylabs, UAB",
      "vendorUrl": "https://oxylabs.io",
      "kind": "http-api",
      "category": "web-scrapers",
      "summary": "Hosted scraping API from Oxylabs that fetches public pages through its proxy pool with optional JavaScript rendering and returns HTML, Markdown or parsed JSON, with dedicated sources for Google, Amazon and other large sites.",
      "url": "https://www.anchorterminal.com/tools/oxylabs-web-scraper",
      "markdownUrl": "https://www.anchorterminal.com/tools/oxylabs-web-scraper.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/oxylabs-web-scraper.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/oxylabs-web-scraper.json",
      "dns": "oxylabs-web-scraper.grade.anchorterminal.com",
      "repo": "https://github.com/oxylabs/oxylabs-mcp",
      "license": "Proprietary service under the Oxylabs General Conditions. The MCP server and the Python SDK on GitHub are MIT",
      "transports": [
        "http",
        "streamable-http",
        "stdio"
      ],
      "remoteUrl": "https://realtime.oxylabs.io/v1/queries",
      "packages": [
        {
          "registry": "pypi",
          "name": "oxylabs"
        },
        {
          "registry": "pypi",
          "name": "oxylabs-mcp"
        },
        {
          "registry": "go",
          "name": "github.com/oxylabs/oxylabs-sdk-go"
        }
      ],
      "auth": "api-key",
      "authNotes": "HTTP Basic with the username and password of a product instance created in the Oxylabs dashboard. The password can be edited, an instance can take whitelisted IPs and a spending limit, and no scopes were found. The MCP server (v0.10.0 and later) also accepts a Web Scraper API token as `Authorization: Bearer \u003ctoken\u003e` or `X-Oxylabs-Api-Token`, which the API docs don't yet describe. The hosted MCP server takes the username and password in an `Authorization: Basic` header or in `X-Oxylabs-Username` and `X-Oxylabs-Password`. The Classic overview page says to contact the team for credentials.",
      "pricing": "usage",
      "pricingNotes": "A one-time $5 welcome credit with no payment details, then a monthly plan of $30, $100 or $500 (Enterprise from $2,500) whose amount becomes a credit balance shared across Oxylabs products. On Starter, other targets cost $1.00 per 1,000 results without rendering and $1.50 with it, Amazon $0.50, Google $1.00 or $1.35 rendered, and LLM sources $1.50 (https://oxylabs.io/products/web-api/scrape/pricing, where the old Web Scraper API pricing URL now redirects, checked 2026-11-02). Purchases are non-refundable.",
      "priceSummary": "$30 / mo",
      "where": "both",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the pricing page, the docs index, the Web Scraper API pages or the MCP repository (checked 2026-10-08).",
        "endpoints": []
      },
      "toolCount": 10,
      "popularity": {
        "githubStars": null,
        "npmWeekly": null,
        "pypiWeekly": 17594,
        "asOf": "2026-10-08"
      },
      "docsUrl": "https://developers.oxylabs.io/products/web-scraper-api",
      "llmsTxt": "https://developers.oxylabs.io/llms.txt",
      "registryName": "io.oxylabs/oxylabs-mcp",
      "capabilities": [
        "web.scrape",
        "web.extract",
        "scraping.proxies",
        "scraping.js-render",
        "scraping.anti-bot",
        "search.serp"
      ],
      "tags": [
        "hosted",
        "no-card",
        "mcp",
        "llms-txt",
        "proxies",
        "python",
        "go",
        "closed-source",
        "status-page",
        "soc2"
      ],
      "lastRelease": "2026-10-29",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 62.9,
        "grade": "B",
        "agentReady": false,
        "rank": 535,
        "ranked": true,
        "rankOf": 1486,
        "categoryRank": 13,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 79,
          "maintenance": 82,
          "payments": 40,
          "reliability": 75,
          "schema": 68,
          "security": 53,
          "transparency": 64
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-11-02"
        },
        "negative": -3,
        "negativeNotes": [
          "2026-03-18. The changelog announced that the `domain` parameter for Google sources was no longer available, with no earlier notice in the changelog. The MCP server's Google search tool still listed `domain` at v0.9.3 (7 September 2026). Three points, since a replacement (`geo_location`) was documented the same day and we could not see whether customers were told by email (https://developers.oxylabs.io/changelog)."
        ],
        "verdict": "Dedicated parsed sources, three integration methods and an official MCP server with four read-only scraping tools, released twice in late October 2026. Since Web API launched on 7 October the docs call it Classic and send new users to sales for credentials, Google's `domain` parameter was removed with notice only on the day, and no OpenAPI document was found.",
        "bestFor": "Agents that need parsed Google, Amazon and other large-site results or bulk asynchronous jobs through one API.",
        "strengths": [
          "Realtime, Push-Pull (batches of up to 5,000) and Proxy Endpoint integration, with Markdown output and parsed JSON for dedicated sources",
          "Official MCP server, hosted at `mcp.oxylabs.io` or run locally, whose four scraping tools carry `readOnlyHint`; v0.10.2 shipped on 29 October 2026",
          "Results with 5xx or 6xx codes and 429 responses are not billed, and faulted jobs can be retried at no cost",
          "ISO/IEC 27001:2022 and a SOC 2 Type 2 report covering Scraper API are listed in the trust centre",
          "Per-plan job rates are published, and each response carries `x-ratelimit` limit and remaining headers"
        ],
        "weaknesses": [
          "Google's `domain` parameter was announced as gone on 18 March 2026 with no earlier changelog notice",
          "No OpenAPI document found. The contract is prose parameter tables and a Postman collection",
          "Relabelled Classic on 7 October 2026 with no end date, its overview sends new users to sales for credentials, and the MCP docs page now covers only Web API",
          "The vulnerability disclosure programme is paused except for critical issues, and no security.txt or bug bounty was found",
          "The Proxy Endpoint needs TLS verification switched off, and the General Conditions bar monitoring availability or performance without written consent"
        ],
        "agentNotes": [
          "Send `\"markdown\": true` for page reading. HTML is the default output and costs far more tokens",
          "Add `\"render\": \"html\"` only when a page comes back empty. Rendered results cost $1.50 per 1,000 against $1.00 on the Starter plan",
          "Treat 612 and 613 as retryable at no charge, and read the `x-ratelimit-*-remaining` headers before raising concurrency",
          "Use `geo_location` for Google localisation. The `domain` parameter was removed in March 2026",
          "Pin `oxylabs-mcp` to 0.10.1 or later. Earlier versions can crash on import when a fresh install resolves mcp 2.x"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 4,
        "avgRating": 3,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "B",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 62.9
          }
        ],
        "editorialScores": {
          "ergonomics": 79,
          "maintenance": 82,
          "payments": 40,
          "reliability": 75,
          "schema": 68,
          "security": 53,
          "transparency": 42
        },
        "provenanceScore": 85,
        "checked": {
          "categories": {
            "ergonomics": "2026-11-02",
            "maintenance": "2026-11-02",
            "payments": "2026-11-02",
            "reliability": "2026-11-02",
            "schema": "2026-11-02",
            "security": "2026-11-02",
            "transparency": "2026-11-02"
          },
          "last": "2026-11-02",
          "lastMoved": "2026-11-02",
          "oldest": "2026-11-02",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "install": "pip install oxylabs",
        "http": "curl 'https://realtime.oxylabs.io/v1/queries' \\\n  --user 'USERNAME:PASSWORD' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"source\": \"universal\", \"url\": \"https://sandbox.oxylabs.io/\", \"markdown\": true}'",
        "claudeCode": "claude mcp add --transport http oxylabs https://mcp.oxylabs.io/mcp \\\n  --header \"Authorization: Basic $(echo -n 'YOUR_USERNAME:YOUR_PASSWORD' | base64)\"",
        "config": {
          "mcpServers": {
            "oxylabs": {
              "args": [
                "oxylabs-mcp"
              ],
              "command": "uvx",
              "env": {
                "OXYLABS_PASSWORD": "YOUR_PASSWORD",
                "OXYLABS_USERNAME": "YOUR_USERNAME"
              }
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/web.scrape",
        "tool": "https://letme.dev/oxylabs-web-scraper"
      },
      "area": "web-data",
      "unitPrices": [
        {
          "item": "Starter plan",
          "unit": "month",
          "usd": 30,
          "note": "Credit balance shared across Oxylabs products, expires each cycle, VAT may apply"
        },
        {
          "item": "Other targets without rendering, Starter",
          "unit": "1k-requests",
          "usd": 1,
          "note": "Per 1,000 billable results"
        },
        {
          "item": "Other targets with JavaScript rendering, Starter",
          "unit": "1k-requests",
          "usd": 1.5,
          "note": "Per 1,000 billable results"
        },
        {
          "item": "Amazon without rendering, Starter",
          "unit": "1k-requests",
          "usd": 0.5,
          "note": "Per 1,000 billable results"
        },
        {
          "item": "Google without rendering, Starter",
          "unit": "1k-requests",
          "usd": 1,
          "note": "$1.35 with rendering"
        }
      ],
      "provenance": {
        "legalEntity": "oxylabs, UAB",
        "domain": "oxylabs.io",
        "domainRegistered": "2015-11-30",
        "endpointOnVendorDomain": true,
        "terms": "https://oxylabs.io/legal/v1-oxylabs-general-conditions",
        "privacy": "https://oxylabs.io/legal/privacy",
        "statusPage": "https://uptime.oxylabs.io",
        "changelog": "https://developers.oxylabs.io/changelog",
        "securityTxt": "none",
        "checked": "2026-11-02",
        "notes": [
          "The General Conditions of the oxylabs, UAB Services Agreement name a Lithuanian company registered at Švitrigailos str. 32, Vilnius, and were last updated on 5 October 2026. They are linked from the trust centre, not from the site footer.",
          "The privacy policy was last reviewed on 22 October 2026 and does not name the controlling entity. It covers registration and self-service use as well as the website.",
          "https://oxylabs.io/.well-known/security.txt returns 404. The vulnerability disclosure policy gives security@oxylabs.io and says the programme is paused except for critical issues.",
          "RDAP gives a registration date of 2015-11-30 for oxylabs.io.",
          "The API answers on realtime.oxylabs.io and data.oxylabs.io, and the hosted MCP server on mcp.oxylabs.io."
        ],
        "score": 85
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/oxylabs-web-scraper.json",
      "live": {
        "slug": "oxylabs-web-scraper",
        "probe": {
          "target": "https://realtime.oxylabs.io/v1/queries",
          "method": "get",
          "lastAt": "2026-11-07T18:20:45.394803938Z",
          "lastOk": true,
          "lastStatus": 404,
          "lastMs": 229,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 99.93,
          "p50ms24h": 107,
          "p95ms24h": 176,
          "samples24h": 239,
          "samples30d": 7289,
          "days": [
            {
              "date": "2026-10-09",
              "probes": 169,
              "ok": 169
            },
            {
              "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": 246
            },
            {
              "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": 249,
              "ok": 249
            },
            {
              "date": "2026-11-02",
              "probes": 250,
              "ok": 249
            },
            {
              "date": "2026-11-03",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-11-04",
              "probes": 246,
              "ok": 246
            },
            {
              "date": "2026-11-05",
              "probes": 185,
              "ok": 185
            },
            {
              "date": "2026-11-06",
              "probes": 241,
              "ok": 241
            },
            {
              "date": "2026-11-07",
              "probes": 187,
              "ok": 187
            }
          ],
          "outages": [
            {
              "start": "2026-10-28T06:38:25.688447591Z",
              "end": "2026-10-28T06:55:00.16149851Z",
              "note": "timed out"
            }
          ]
        },
        "vendorStatus": {
          "page": "https://uptime.oxylabs.io",
          "indicator": "none",
          "summary": "All Systems Operational",
          "checkedAt": "2026-11-07T18:21:52.113508971Z"
        },
        "versions": [
          {
            "registry": "github",
            "name": "oxylabs/oxylabs-mcp",
            "version": "v0.10.2",
            "released": "2026-10-29",
            "seenAt": "2026-11-06T23:54:10.426858691Z"
          },
          {
            "registry": "mcp-registry",
            "name": "io.oxylabs/oxylabs-mcp",
            "version": "0.10.2",
            "seenAt": "2026-11-07T18:16:28.95801333Z"
          },
          {
            "registry": "pypi",
            "name": "oxylabs",
            "version": "3.0.0",
            "released": "2026-03-09",
            "seenAt": "2026-11-06T23:54:08.342899209Z"
          },
          {
            "registry": "pypi",
            "name": "oxylabs-mcp",
            "version": "0.10.2",
            "released": "2026-10-29",
            "seenAt": "2026-11-06T23:54:08.579963117Z"
          }
        ],
        "githubStars": 104,
        "pypiWeekly": 30026,
        "securityTxt": {
          "url": "https://oxylabs.io/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-11-07T16:00:04.464946444Z"
        },
        "llmsTxt": {
          "url": "https://developers.oxylabs.io/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-11-07T15:33:34.656158181Z"
        },
        "domain": {
          "domain": "oxylabs.io",
          "checkedAt": "2026-11-01T14:26:42.02839894Z"
        },
        "pages": [
          {
            "url": "https://developers.oxylabs.io/changelog",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-11-07T14:04:21.287577754Z",
            "changedAt": "2026-11-06T13:26:57.075946797Z",
            "fingerprint": "f97c8903612d"
          },
          {
            "url": "https://oxylabs.io/products/scraper-api/web/pricing",
            "kind": "pricing",
            "status": 304,
            "checkedAt": "2026-11-02T07:22:07.650729126Z",
            "changedAt": "2026-10-28T04:39:54.019970924Z",
            "fingerprint": "b1734b60f0b1"
          },
          {
            "url": "https://oxylabs.io/products/web-api/scrape/pricing",
            "kind": "pricing",
            "status": 304,
            "checkedAt": "2026-11-07T14:15:55.074684079Z",
            "changedAt": "2026-11-05T12:38:41.143903679Z",
            "fingerprint": "7a229c5f299c"
          },
          {
            "url": "https://oxylabs.io/legal/privacy",
            "kind": "privacy",
            "status": 304,
            "checkedAt": "2026-11-07T14:15:47.865273338Z",
            "changedAt": "2026-10-24T02:22:23.189234723Z",
            "fingerprint": "67a7ec9f4ace"
          },
          {
            "url": "https://oxylabs.io/legal/v1-oxylabs-general-conditions",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-11-07T14:15:49.905854257Z",
            "changedAt": "2026-11-05T12:38:38.946711195Z",
            "fingerprint": "5a62114e5966"
          }
        ],
        "mcpTools": {
          "url": "https://mcp.oxylabs.io/mcp",
          "checkedAt": "2026-11-07T01:46:36.940166658Z",
          "status": "ok",
          "protocol": "2025-11-25",
          "tools": [
            {
              "name": "ai_crawler",
              "description": "Tool useful for crawling a website from starting url and returning data in a specified format.\n\nSchema is required only if output_format is json, csv or toon.\n'render_javascript' is used to render javascript heavy websites.\n'return_sources_limit' is used to limit the number of sources to return,\nfor example if you expect results from single source, you can set it to 1.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "geo_location": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Two letter ISO country code to use for the crawl proxy."
                  },
                  "output_format": {
                    "default": "markdown",
                    "description": "The format of the output. If json, csv or toon, the schema is required. Markdown returns full text of the page. CSV returns data in CSV format. Toon(Token-Oriented Object Notation) returns data in Toon format, which is optimized for AI agents.",
                    "enum": [
                      "json",
                      "markdown",
                      "csv",
                      "toon"
                    ],
                    "type": "string"
                  },
                  "render_javascript": {
                    "default": false,
                    "description": "Whether to render the HTML of the page using javascript. Much slower, therefore use it only for websites that require javascript to render the page. Unless user asks to use it, first try to crawl the page without it. If results are unsatisfactory, try to use it.",
                    "type": "boolean"
                  },
                  "return_sources_limit": {
                    "default": 25,
                    "description": "The maximum number of sources to return.",
                    "maximum": 50,
                    "type": "integer"
                  },
                  "schema": {
                    "anyOf": [
                      {
                        "additionalProperties": true,
                        "type": "object"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "The JSON schema to use for structured data extraction from the crawled pages. Only required if output_format is json, csv or toon."
                  },
                  "url": {
                    "description": "The URL from which crawling will be started.",
                    "type": "string"
                  },
                  "user_prompt": {
                    "description": "What information user wants to extract from the domain.",
                    "type": "string"
                  }
                },
                "required": [
                  "url",
                  "user_prompt"
                ],
                "type": "object"
              },
              "outputSchema": {
                "properties": {
                  "result": {
                    "type": "string"
                  }
                },
                "required": [
                  "result"
                ],
                "type": "object",
                "x-fastmcp-wrap-result": true
              },
              "annotations": {
                "readOnlyHint": true
              }
            },
            {
              "name": "ai_scraper",
              "description": "Scrape the contents of the web page and return the data in the specified format.\n\nSchema is required only if output_format is json or csv.\n'render_javascript' is used to render javascript heavy websites.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "geo_location": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Two letter ISO country code to use for the scrape proxy."
                  },
                  "output_format": {
                    "default": "markdown",
                    "description": "The format of the output. If json, csv or toon, the schema is required. Markdown returns full text of the page. CSV returns data in CSV format, tabular like data. Toon(Token-Oriented Object Notation) returns data in Toon format, which is optimized for AI agents.",
                    "enum": [
                      "json",
                      "markdown",
                      "csv",
                      "toon"
                    ],
                    "type": "string"
                  },
                  "render_javascript": {
                    "default": false,
                    "description": "Whether to render the HTML of the page using javascript. Much slower, therefore use it only for websites that require javascript to render the page.Unless user asks to use it, first try to scrape the page without it. If results are unsatisfactory, try to use it.",
                    "type": "boolean"
                  },
                  "schema": {
                    "anyOf": [
                      {
                        "additionalProperties": true,
                        "type": "object"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "The JSON schema to use for structured data extraction from the scraped page. Only required if output_format is json, csv or toon."
                  },
                  "url": {
                    "description": "The URL to scrape",
                    "type": "string"
                  }
                },
                "required": [
                  "url"
                ],
                "type": "object"
              },
              "outputSchema": {
                "properties": {
                  "result": {
                    "type": "string"
                  }
                },
                "required": [
                  "result"
                ],
                "type": "object",
                "x-fastmcp-wrap-result": true
              },
              "annotations": {
                "readOnlyHint": true
              }
            },
            {
              "name": "ai_browser_agent",
              "description": "Run the browser agent and return the data in the specified format.\n\nThis tool is useful if you need navigate around the website and do some actions.\nIt allows navigating to any url, clicking on links, filling forms, scrolling, etc.\nFinally it returns the data in the specified format.\nSchema is required only if output_format is json, csv or toon.\n'task_prompt' describes what browser agent should achieve",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "geo_location": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Two letter ISO country code to use for the browser proxy."
                  },
                  "output_format": {
                    "default": "markdown",
                    "description": "The output format. Markdown returns full text of the page including links. Toon(Token-Oriented Object Notation) returns data in Toon format, which is optimized for AI agents. If json, csv or toon, the schema is required.",
                    "enum": [
                      "json",
                      "markdown",
                      "html",
                      "csv",
                      "toon"
                    ],
                    "type": "string"
                  },
                  "schema": {
                    "anyOf": [
                      {
                        "additionalProperties": true,
                        "type": "object"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "The schema to use for the scrape. Only required if output_format is json, csv or toon."
                  },
                  "task_prompt": {
                    "description": "What browser agent should do.",
                    "type": "string"
                  },
                  "url": {
                    "description": "The URL to start the browser agent navigation from.",
                    "type": "string"
                  }
                },
                "required": [
                  "url",
                  "task_prompt"
                ],
                "type": "object"
              },
              "outputSchema": {
                "properties": {
                  "result": {
                    "type": "string"
                  }
                },
                "required": [
                  "result"
                ],
                "type": "object",
                "x-fastmcp-wrap-result": true
              },
              "annotations": {
                "readOnlyHint": true
              }
            },
            {
              "name": "ai_search",
              "description": "Search the web based on a provided query.\n\n'return_content' is used to return markdown content for each search result. If 'return_content'\n    is set to True, you don't need to use ai_scraper to get the content of the search results urls,\n    because it is already included in the search results.\nif 'return_content' is set to True, prefer lower 'limit' to reduce payload size.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "geo_location": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Two letter ISO country code to use for the search proxy."
                  },
                  "limit": {
                    "default": 10,
                    "description": "Maximum number of results to return.",
                    "maximum": 50,
                    "type": "integer"
                  },
                  "query": {
                    "description": "The query to search for.",
                    "type": "string"
                  },
                  "render_javascript": {
                    "default": false,
                    "description": "Whether to render the HTML of the page using javascript. Much slower, therefore use it only if user asks to use it.First try to search with setting it to False. ",
                    "type": "boolean"
                  },
                  "return_content": {
                    "default": false,
                    "description": "Whether to return markdown content of the search results.",
                    "type": "boolean"
                  }
                },
                "required": [
                  "query"
                ],
                "type": "object"
              },
              "outputSchema": {
                "properties": {
                  "result": {
                    "type": "string"
                  }
                },
                "required": [
                  "result"
                ],
                "type": "object",
                "x-fastmcp-wrap-result": true
              },
              "annotations": {
                "readOnlyHint": true
              }
            },
            {
              "name": "generate_schema",
              "description": "Generate a json schema in openapi format.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "app_name": {
                    "enum": [
                      "ai_crawler",
                      "ai_scraper",
                      "browser_agent"
                    ],
                    "type": "string"
                  },
                  "user_prompt": {
                    "type": "string"
                  }
                },
                "required": [
                  "user_prompt",
                  "app_name"
                ],
                "type": "object"
              },
              "outputSchema": {
                "properties": {
                  "result": {
                    "type": "string"
                  }
                },
                "required": [
                  "result"
                ],
                "type": "object",
                "x-fastmcp-wrap-result": true
              },
              "annotations": {
                "readOnlyHint": true
              }
            },
            {
              "name": "ai_map",
              "description": "Tool useful for mapping website's URLs.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "allow_external_domains": {
                    "default": false,
                    "description": "Whether to include external domains URLs.",
                    "type": "boolean"
                  },
                  "allow_subdomains": {
                    "default": false,
                    "description": "Whether to map subdomains URLs as well.",
                    "type": "boolean"
                  },
                  "geo_location": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Two letter ISO country code to use for the mapping proxy."
                  },
                  "limit": {
                    "default": 25,
                    "description": "The maximum number of URLs to return.",
                    "maximum": 50,
                    "type": "integer"
                  },
                  "max_crawl_depth": {
                    "default": 1,
                    "description": "The maximum depth of the crawl.",
                    "maximum": 5,
                    "type": "integer"
                  },
                  "render_javascript": {
                    "default": false,
                    "description": "Whether to render the HTML of the page using javascript. Much slower, therefore use it only for websites that require javascript to render the page. Unless user asks to use it, first try to crawl the page without it. If results are unsatisfactory, try to use it.",
                    "type": "boolean"
                  },
                  "search_keywords": {
                    "anyOf": [
                      {
                        "items": {
                          "type": "string"
                        },
                        "type": "array"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "The keywords to use for URLs paths filtering. Keywords are matched as OR condition. Meaning, one keyword is enough to match the url path."
                  },
                  "url": {
                    "description": "The URL from which URLs mapping will be started.",
                    "type": "string"
                  },
                  "user_prompt": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "What kind of URLs user wants to find. Can be used together with 'search_keywords'."
                  }
                },
                "required": [
                  "url"
                ],
                "type": "object"
              },
              "outputSchema": {
                "properties": {
                  "result": {
                    "type": "string"
                  }
                },
                "required": [
                  "result"
                ],
                "type": "object",
                "x-fastmcp-wrap-result": true
              },
              "annotations": {
                "readOnlyHint": true
              }
            },
            {
              "name": "universal_scraper",
              "description": "Get a content of any webpage.\n\nSupports browser rendering, parsing of certain webpages\nand different output formats.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "geo_location": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "\n        The geographical location that the result should be adapted for.\n        Use ISO-3166 country codes.\n        Examples:\n            - 'California, United States'\n            - 'Mexico'\n            - 'US' for United States\n            - 'DE' for Germany\n            - 'FR' for France\n        ",
                    "examples": [
                      "US",
                      "DE",
                      "FR"
                    ]
                  },
                  "output_format": {
                    "anyOf": [
                      {
                        "enum": [
                          "links",
                          "md",
                          "html"
                        ],
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "\n        The format of the output. Works only when parse parameter is false.\n            - links - Most efficient when the goal is navigation or finding specific URLs. Use this first when you need to locate a specific page within a website.\n            - md - Best for extracting and reading visible content once you've found the right page. Use this to get structured content that's easy to read and process.\n            - html - Should be used sparingly only when you need the raw HTML structure, JavaScript code, or styling information.\n        "
                  },
                  "render": {
                    "anyOf": [
                      {
                        "const": "html",
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "\n        Whether a headless browser should be used to render the page.\n        For example:\n            - 'html' when browser is required to render the page.\n        ",
                    "examples": [
                      "html"
                    ]
                  },
                  "url": {
                    "description": "Website url to scrape.",
                    "type": "string"
                  },
                  "user_agent_type": {
                    "anyOf": [
                      {
                        "enum": [
                          "desktop",
                          "desktop_chrome",
                          "desktop_firefox",
                          "desktop_safari",
                          "desktop_edge",
                          "desktop_opera",
                          "mobile",
                          "mobile_ios",
                          "mobile_android",
                          "tablet"
                        ],
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Device type and browser that will be used to determine User-Agent header value."
                  }
                },
                "required": [
                  "url"
                ],
                "type": "object"
              },
              "outputSchema": {
                "properties": {
                  "result": {
                    "type": "string"
                  }
                },
                "required": [
                  "result"
                ],
                "type": "object",
                "x-fastmcp-wrap-result": true
              },
              "annotations": {
                "readOnlyHint": true
              }
            },
            {
              "name": "google_search_scraper",
              "description": "Scrape Google Search results.\n\nSupports content parsing, different user agent types, pagination,\ndomain, geolocation, locale parameters and different output formats.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "ad_mode": {
                    "default": false,
                    "description": "If true will use the Google Ads source optimized for the paid ads.",
                    "type": "boolean"
                  },
                  "domain": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "\n        Domain localization for Google.\n        Use country top level domains.\n        For example:\n            - 'co.uk' for United Kingdom\n            - 'us' for United States\n            - 'fr' for France\n        ",
                    "examples": [
                      "uk",
                      "us",
                      "fr"
                    ]
                  },
                  "geo_location": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "\n        The geographical location that the result should be adapted for.\n        Use ISO-3166 country codes.\n        Examples:\n            - 'California, United States'\n            - 'Mexico'\n            - 'US' for United States\n            - 'DE' for Germany\n            - 'FR' for France\n        ",
                    "examples": [
                      "US",
                      "DE",
                      "FR"
                    ]
                  },
                  "limit": {
                    "default": 0,
                    "description": "Number of results to retrieve in each page.",
                    "type": "integer"
                  },
                  "locale": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "\n        Set 'Accept-Language' header value which changes your Google search page web interface language.\n        Examples:\n            - 'en-US' for English, United States\n            - 'de-AT' for German, Austria\n            - 'fr-FR' for French, France\n        ",
                    "examples": [
                      "en-US",
                      "de-AT",
                      "fr-FR"
                    ]
                  },
                  "output_format": {
                    "anyOf": [
                      {
                        "enum": [
                          "links",
                          "md",
                          "html"
                        ],
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "\n        The format of the output. Works only when parse parameter is false.\n            - links - Most efficient when the goal is navigation or finding specific URLs. Use this first when you need to locate a specific page within a website.\n            - md - Best for extracting and reading visible content once you've found the right page. Use this to get structured content that's easy to read and process.\n            - html - Should be used sparingly only when you need the raw HTML structure, JavaScript code, or styling information.\n        "
                  },
                  "pages": {
                    "default": 0,
                    "description": "Number of pages to retrieve.",
                    "type": "integer"
                  },
                  "parse": {
                    "default": true,
                    "description": "Should result be parsed. If the result is not parsed, the output_format parameter is applied.",
                    "type": "boolean"
                  },
                  "query": {
                    "description": "URL-encoded keyword to search for.",
                    "type": "string"
                  },
                  "render": {
                    "anyOf": [
                      {
                        "const": "html",
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "\n        Whether a headless browser should be used to render the page.\n        For example:\n            - 'html' when browser is required to render the page.\n        ",
                    "examples": [
                      "html"
                    ]
                  },
                  "start_page": {
                    "default": 0,
                    "description": "Starting page number.",
                    "type": "integer"
                  },
                  "user_agent_type": {
                    "anyOf": [
                      {
                        "enum": [
                          "desktop",
                          "desktop_chrome",
                          "desktop_firefox",
                          "desktop_safari",
                          "desktop_edge",
                          "desktop_opera",
                          "mobile",
                          "mobile_ios",
                          "mobile_android",
                          "tablet"
                        ],
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Device type and browser that will be used to determine User-Agent header value."
                  }
                },
                "required": [
                  "query"
                ],
                "type": "object"
              },
              "outputSchema": {
                "properties": {
                  "result": {
                    "type": "string"
                  }
                },
                "required": [
                  "result"
                ],
                "type": "object",
                "x-fastmcp-wrap-result": true
              },
              "annotations": {
                "readOnlyHint": true
              }
            },
            {
              "name": "amazon_search_scraper",
              "description": "Scrape Amazon search results.\n\nSupports content parsing, different user agent types, pagination,\ndomain, geolocation, locale parameters and different output formats.\nSupports Amazon specific parameters such as category id, merchant id, currency.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "category_id": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Search for items in a particular browse node (product category)."
                  },
                  "currency": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Currency that will be used to display the prices.",
                    "examples": [
                      "USD",
                      "EUR",
                      "AUD"
                    ]
                  },
                  "domain": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "\n        Domain localization for Google.\n        Use country top level domains.\n        For example:\n            - 'co.uk' for United Kingdom\n            - 'us' for United States\n            - 'fr' for France\n        ",
                    "examples": [
                      "uk",
                      "us",
                      "fr"
                    ]
                  },
                  "geo_location": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "\n        The geographical location that the result should be adapted for.\n        Use ISO-3166 country codes.\n        Examples:\n            - 'California, United States'\n            - 'Mexico'\n            - 'US' for United States\n            - 'DE' for Germany\n            - 'FR' for France\n        ",
                    "examples": [
                      "US",
                      "DE",
                      "FR"
                    ]
                  },
                  "locale": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "\n        Set 'Accept-Language' header value which changes your Google search page web interface language.\n        Examples:\n            - 'en-US' for English, United States\n            - 'de-AT' for German, Austria\n            - 'fr-FR' for French, France\n        ",
                    "examples": [
                      "en-US",
                      "de-AT",
                      "fr-FR"
                    ]
                  },
                  "merchant_id": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Search for items sold by a particular seller."
                  },
                  "output_format": {
                    "anyOf": [
                      {
                        "enum": [
                          "links",
                          "md",
                          "html"
                        ],
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "\n        The format of the output. Works only when parse parameter is false.\n            - links - Most efficient when the goal is navigation or finding specific URLs. Use this first when you need to locate a specific page within a website.\n            - md - Best for extracting and reading visible content once you've found the right page. Use this to get structured content that's easy to read and process.\n            - html - Should be used sparingly only when you need the raw HTML structure, JavaScript code, or styling information.\n        "
                  },
                  "pages": {
                    "default": 0,
                    "description": "Number of pages to retrieve.",
                    "type": "integer"
                  },
                  "parse": {
                    "default": true,
                    "description": "Should result be parsed. If the result is not parsed, the output_format parameter is applied.",
                    "type": "boolean"
                  },
                  "query": {
                    "description": "Keyword to search for.",
                    "type": "string"
                  },
                  "render": {
                    "anyOf": [
                      {
                        "const": "html",
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "\n        Whether a headless browser should be used to render the page.\n        For example:\n            - 'html' when browser is required to render the page.\n        ",
                    "examples": [
                      "html"
                    ]
                  },
                  "start_page": {
                    "default": 0,
                    "description": "Starting page number.",
                    "type": "integer"
                  },
                  "user_agent_type": {
                    "anyOf": [
                      {
                        "enum": [
                          "desktop",
                          "desktop_chrome",
                          "desktop_firefox",
                          "desktop_safari",
                          "desktop_edge",
                          "desktop_opera",
                          "mobile",
                          "mobile_ios",
                          "mobile_android",
                          "tablet"
                        ],
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Device type and browser that will be used to determine User-Agent header value."
                  }
                },
                "required": [
                  "query"
                ],
                "type": "object"
              },
              "outputSchema": {
                "properties": {
                  "result": {
                    "type": "string"
                  }
                },
                "required": [
                  "result"
                ],
                "type": "object",
                "x-fastmcp-wrap-result": true
              },
              "annotations": {
                "readOnlyHint": true
              }
            },
            {
              "name": "amazon_product_scraper",
              "description": "Scrape Amazon products.\n\nSupports content parsing, different user agent types, domain,\ngeolocation, locale parameters and different output formats.\nSupports Amazon specific parameters such as currency and getting\nmore accurate pricing data with auto select variant.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "autoselect_variant": {
                    "default": false,
                    "description": "To get accurate pricing/buybox data, set this parameter to true.",
                    "type": "boolean"
                  },
                  "currency": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Currency that will be used to display the prices.",
                    "examples": [
                      "USD",
                      "EUR",
                      "AUD"
                    ]
                  },
                  "domain": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "\n        Domain localization for Google.\n        Use country top level domains.\n        For example:\n            - 'co.uk' for United Kingdom\n            - 'us' for United States\n            - 'fr' for France\n        ",
                    "examples": [
                      "uk",
                      "us",
                      "fr"
                    ]
                  },
                  "geo_location": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "\n        The geographical location that the result should be adapted for.\n        Use ISO-3166 country codes.\n        Examples:\n            - 'California, United States'\n            - 'Mexico'\n            - 'US' for United States\n            - 'DE' for Germany\n            - 'FR' for France\n        ",
                    "examples": [
                      "US",
                      "DE",
                      "FR"
                    ]
                  },
                  "locale": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "\n        Set 'Accept-Language' header value which changes your Google search page web interface language.\n        Examples:\n            - 'en-US' for English, United States\n            - 'de-AT' for German, Austria\n            - 'fr-FR' for French, France\n        ",
                    "examples": [
                      "en-US",
                      "de-AT",
                      "fr-FR"
                    ]
                  },
                  "output_format": {
                    "anyOf": [
                      {
                        "enum": [
                          "links",
                          "md",
                          "html"
                        ],
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "\n        The format of the output. Works only when parse parameter is false.\n            - links - Most efficient when the goal is navigation or finding specific URLs. Use this first when you need to locate a specific page within a website.\n            - md - Best for extracting and reading visible content once you've found the right page. Use this to get structured content that's easy to read and process.\n            - html - Should be used sparingly only when you need the raw HTML structure, JavaScript code, or styling information.\n        "
                  },
                  "parse": {
                    "default": true,
                    "description": "Should result be parsed. If the result is not parsed, the output_format parameter is applied.",
                    "type": "boolean"
                  },
                  "query": {
                    "description": "Keyword to search for.",
                    "type": "string"
                  },
                  "render": {
                    "anyOf": [
                      {
                        "const": "html",
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "\n        Whether a headless browser should be used to render the page.\n        For example:\n            - 'html' when browser is required to render the page.\n        ",
                    "examples": [
                      "html"
                    ]
                  },
                  "user_agent_type": {
                    "anyOf": [
                      {
                        "enum": [
                          "desktop",
                          "desktop_chrome",
                          "desktop_firefox",
                          "desktop_safari",
                          "desktop_edge",
                          "desktop_opera",
                          "mobile",
                          "mobile_ios",
                          "mobile_android",
                          "tablet"
                        ],
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Device type and browser that will be used to determine User-Agent header value."
                  }
                },
                "required": [
                  "query"
                ],
                "type": "object"
              },
              "outputSchema": {
                "properties": {
                  "result": {
                    "type": "string"
                  }
                },
                "required": [
                  "result"
                ],
                "type": "object",
                "x-fastmcp-wrap-result": true
              },
              "annotations": {
                "readOnlyHint": true
              }
            }
          ],
          "schemaTokens": 5608,
          "changedAt": "2026-11-07T01:46:36.940166658Z",
          "check": {
            "checker": "anchor-check/1.0",
            "totalTokens": 5608,
            "counts": {
              "error": 0,
              "note": 0,
              "warn": 1
            },
            "findings": [
              {
                "rule": "TC11",
                "severity": "warn",
                "tool": "generate_schema",
                "message": "none of its 2 parameters has a description",
                "fix": "Describe each one: format, units, an example, and what happens when it's left out."
              }
            ]
          }
        },
        "github": {
          "repo": "oxylabs/oxylabs-mcp",
          "checkedAt": "2026-11-02T09:14:23.244295782Z",
          "stars": 104,
          "archived": false,
          "issuesEnabled": true,
          "pushedAt": "2026-10-29T13:20:41Z",
          "openIssues": 2,
          "openPRs": 0,
          "issuesOpened90d": 1,
          "issuesClosed90d": 0,
          "prsMerged90d": 12,
          "ci": {
            "branch": "main",
            "runs": 31,
            "success": 31,
            "failure": 0,
            "other": 0,
            "latest": "success",
            "latestAt": "2026-10-29T13:18:37Z"
          },
          "replies": {
            "sampled": 5,
            "unanswered": 2,
            "medianDays": 8.2
          }
        },
        "updatedAt": "2026-11-07T18:21:52.113508971Z"
      }
    },
    "edges": [
      {
        "by": 25,
        "category": "reliability",
        "leads": "oxylabs-web-scraper",
        "name": "Reliability",
        "reasons": {
          "a": "Graded on the hosted lines, for the hosted API and MCP server an agent would call; the self-hosted engine would read higher on the local lines. fastcrw.com/status is a first-party page with a live health check and a 99.9% monthly uptime objective, but no components with history (10 of 20). It lists no incidents and keeps no history we could read (5). Concurrency per plan is published, 3 on Free to 150 on Scale, while the request-rate guard above it is deliberately unpublished (12 of 15). The rate-limits page documents Retry-After and X-RateLimit headers, gives exponential backoff code, and separates 429 (retry) from 402 (stop). No idempotency keys for crawl, extract or monitor starts (13 of 15). Pricing mentions an SLA only as 'Premier + SLA' on Enterprise, with no terms, and the terms promise no uptime (0). The hosted service is sold on paid plans with no beta label, though the engine is at 0.41.0 (10). 10 + 5 + 12 + 13 + 0 + 10 = 50.",
          "b": "Graded on the Web Scraper API (Classic) surface. Status page at uptime.oxylabs.io on incident.io with separate components for Scraper APIs Push-Pull and Real-Time (20). Its feed lists two incidents since 4 August 2026, a Datacenter Proxies outage on 13 August that doesn't touch this API and, on 26 October, 12 minutes (05:34 to 05:46 on the page's clock) on both Scraper API components and Web Unblocker. The page labels it a full outage, but its own text says users \"may experience degraded performance, intermittent errors, or timeouts\", so we read it as partial and minor (20 of 30). Job rates per plan are published, from 10 a second on the free trial to 100 on Business and Corporate, with rendered-job limits (15). 429 is not billed, responses carry `x-ratelimit` limit and remaining headers, and 612 and 613 faults can be retried at no cost. No Retry-After or backoff guidance was found for this API (10 of 15). No SLA is published. The General Conditions promise reasonable efforts (0). Generally available (10)."
        },
        "scores": {
          "a": 50,
          "b": 75
        }
      },
      {
        "by": 23,
        "category": "schema",
        "leads": "crw",
        "name": "Schema \u0026 documentation",
        "reasons": {
          "a": "OpenAPI 3.1 for 11 paths at version 0.41.0 in docs/openapi.json, checked against the server in CI, and typed JSON Schema inputs on every MCP tool (25). llms.txt (86 lines), llms-full.txt and Markdown sources for every docs page (10). Tool descriptions state purpose and how to chain them (crawl returns a job id to poll, map returns URLs only, extract needs an LLM), and the docs have a choose-an-endpoint page, but few descriptions say when not to use a tool (14 of 20). Inputs are typed with required fields and a renderer enum, though crawl and extract take a free-form JSON Schema object (12 of 15). Examples on every page and an errors page with each HTTP status, errorCode and next step (15). Semver releases with a dated CHANGELOG that flags breaking changes (15). 25 + 10 + 14 + 12 + 15 + 15 = 91.",
          "b": "No OpenAPI document was found. The contract is parameter tables per source plus a Postman collection, and the MCP server types every input (10 of 25). llms.txt indexes the docs and every page is served as Markdown by adding `.md` (10). Each source page states its parameters and defaults, and the MCP `output_format` description says when to choose links, Markdown or HTML, though tool descriptions are two lines (13 of 20). MCP inputs use enumerations for rendering, user agent and output format. The REST API takes `context` as a list of key and value pairs and free-form parsing instructions (10 of 15). Request examples in several languages, sample outputs, and a response code table covering HTTP, parser, storage and session codes (13 of 15). Paths are versioned at `/v1` and the public changelog is dated, while the MCP repository's CHANGELOG.md stops at 0.2.2 in May 2025 although v0.10.2 shipped in October 2026 (12 of 15). llms.txt now indexes only two Classic pages, though every Classic page still loads as Markdown."
        },
        "scores": {
          "a": 91,
          "b": 68
        }
      },
      {
        "by": 13,
        "category": "security",
        "leads": "oxylabs-web-scraper",
        "name": "Security \u0026 auth",
        "reasons": {
          "a": "The hosted MCP server publishes RFC 9728 metadata naming its own authorisation server, with PKCE S256, dynamic client registration and one scope, `mcp:tools`, and the API takes revocable Bearer keys from the dashboard. No key scopes or second scope found (22). The authentication page documents fastcrw.com/mcp/\u003cAPI_KEY\u003e as a way in, a key in the URL path, so less 10 (12 of 30). Tools mostly read, and data-source calls check approvals, but there is no read-only key or confirmation step for monitors (8 of 20). Managed LLM extraction, summaries and answers wrap scraped text in a nonce fence (crates/crw-extract/src/untrusted.rs), and the hardening guide treats pages as untrusted, but the MCP docs give agents no guidance on scraped content (7 of 15). Each response reports `creditsUsed`; no per-call log in the docs (5 of 15). SECURITY.md names security@fastcrw.com and GitHub private reporting with a 48-hour acknowledgement, and CI runs CodeQL and OpenSSF Scorecard. security.txt answers 404, and no bounty or certification found (8 of 20). 12 + 8 + 7 + 5 + 8 = 40.",
          "b": "A username and password per product instance over HTTP Basic, with an editable password, optional IP whitelisting and several instances per account. The MCP server's v0.10.0 (15 October 2026) adds Web Scraper API tokens sent as a Bearer header, but the API docs still describe only the username and password, and no scopes were found (20 of 30). The Proxy Endpoint puts the pair in the proxy URL and needs TLS verification switched off, which we note without the query-string deduction. Scraping is read-only apart from POST requests to targets, callbacks and uploads to the customer's bucket, each instance can take a spending limit that disables it, and every MCP tool is marked read-only (10 of 20). No guidance on untrusted page content was found in the Web Scraper API docs, the MCP README or the agent skill (2 of 15). `GET /v2/stats` and the dashboard report usage by day and source, and jobs accept client notes. No per-request access log was found (7 of 15). ISO/IEC 27001:2022, SOC 2 Type 2 for Scraper API and yearly penetration tests per the trust centre (per the 8 October check, not re-read on 2 November). The disclosure programme is still paused except for critical issues sent to security@oxylabs.io, security.txt returns 404 and no bug bounty was found. That is above the 12 given for certification claims with no disclosure route (fireworks-inference, people-data-labs), because a route for critical issues and penetration tests are published (14 of 20)."
        },
        "scores": {
          "a": 40,
          "b": 53
        }
      },
      {
        "by": 12,
        "category": "ergonomics",
        "leads": "crw",
        "name": "Agent ergonomics",
        "reasons": {
          "a": "11 compact MCP tools, two of them the data-source tools added in 0.41.0. Content is capped near 15,000 characters with `truncated: true` and a resume offset, and map returns at most 100 URLs by default (20 of 25). Formats, main-content filtering, include and exclude selectors, maxLength, startIndex, limit and crawl depth and page caps (20). Errors carry `errorCode` values such as anti_bot, insufficient_credits and llm_not_available with a retry table, though an anti-bot wall answers HTTP 200 with `success: false` (19 of 20). Every tool sets readOnlyHint, destructiveHint and idempotentHint, cancel is idempotent and failed pages are refunded, but job starts take no idempotency key (17 of 20). Only `url` is required, with official Python and TypeScript SDKs (15). 20 + 20 + 19 + 17 + 15 = 91.",
          "b": "The MCP server lists 10 tools, four for this API and six for AI Studio, and the REST API can return Markdown or parsed JSON in place of HTML (22 of 25). `start_page`, `pages` and `limit` on search sources, custom parsing instructions and a result aggregator (16 of 20). Documented HTTP codes with messages, a `parse_status_code` per parsed result and job statuses, but errors are prose messages with no stable code field (14 of 20). All tools carry `readOnlyHint`, faulted jobs are not billed and Push-Pull results can be re-read by job ID for 24 hours. No idempotency key (14 of 20). Only `source` and a URL or query are required, with official SDKs for Python and Go (13 of 15)."
        },
        "scores": {
          "a": 91,
          "b": 79
        }
      },
      {
        "by": 11,
        "category": "maintenance",
        "leads": "crw",
        "name": "Maintenance \u0026 community",
        "reasons": {
          "a": "v0.41.0 on 4 November 2026, matching the registry and npm (30). 16 dated releases in the 90 days from 8 August, from 0.37.0 to 0.41.0 (20). Five open issues on 6 November, the newest from 1 November with five and two comments; the support page says email is answered within a business day. Reply authors weren't read (18 of 25). In the official MCP registry as io.github.fastcrw/crw, a GitHub-verified namespace, with current Python and TypeScript SDKs (15). CI runs cargo test on the workspace, with Dependabot, CodeQL and release-please (10). 30 + 20 + 18 + 15 + 10 = 93.",
          "b": "The newest release is MCP server v0.10.2 on 29 October 2026, which changes how the client is reported in request headers, after v0.10.0 on 15 October added API-token sign-in (30). In the 90 days from 4 August, MCP releases v0.9.0 and v0.9.1 (10 August), v0.9.2 (14 August), v0.9.3 (7 September), v0.10.0 and v0.10.2, with v0.10.1 (28 October, dependency caps only) counted half, and four changelog entries tagged for this API (11, 17, 20 and 24 August) (20). Dated public changelog, support by email and round-the-clock live chat per the docs. GitHub issues were unread because github.com refused us (10 of 15). The MCP server is in the official registry as `io.oxylabs/oxylabs-mcp`, now at 0.10.2 (published 29 October), and official Python and Go SDKs exist (15). The MCP repository runs lint and test workflows. The Python SDK's last release is still 3.0.0 on 9 March 2026 and the Go SDK's 1.0.0 on 6 September 2024 (7 of 10)."
        },
        "scores": {
          "a": 93,
          "b": 82
        }
      },
      {
        "by": 5,
        "category": "payments",
        "leads": "oxylabs-web-scraper",
        "name": "Payments \u0026 pricing",
        "reasons": {
          "a": "No x402, MPP or L402 (0). Plans are public with credit costs per operation and top-up prices per block of credits, $9 per 1,000 on Hobby down to $299 per 500,000 on Scale, but top-ups need a plan, so between plan-only and per-unit (15 of 20). 500 one-off credits with no card, plus up to 500 from onboarding tasks (20). Hosted keys need a person to sign up in a browser; the free self-hosted engine runs with no account but isn't the graded surface (0). 0 + 15 + 20 + 0 = 35.",
          "b": "No x402, MPP or L402 (0). Per-1,000-result prices by target and plan are public, now on the Web API /Scrape pricing page that the old Web Scraper API pricing URL redirects to, at the same Starter rates (20). A one-time $5 welcome credit needs no payment details (20). A person registers in the dashboard and creates the product instance (0). The Classic overview page still says to contact the team for credentials, so the trial route for this surface is unconfirmed."
        },
        "scores": {
          "a": 35,
          "b": 40
        }
      }
    ],
    "facts": [
      {
        "a": "HTTP API",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "Nanofy OÜ",
        "b": "oxylabs, UAB",
        "name": "Vendor"
      },
      {
        "a": "https://fastcrw.com/mcp",
        "b": "https://realtime.oxylabs.io/v1/queries",
        "name": "Hosted endpoint"
      },
      {
        "a": "stdio, Streamable HTTP",
        "b": "HTTP, Streamable HTTP, stdio",
        "name": "Transports"
      },
      {
        "a": "OAuth or key",
        "b": "API key",
        "name": "Auth"
      },
      {
        "a": "Freemium",
        "b": "Pay per use",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "AGPL-3.0",
        "b": "Proprietary service under the Oxylabs General Conditions. The MCP server and the Python SDK on GitHub are MIT",
        "name": "Licence"
      },
      {
        "a": "11",
        "b": "10",
        "name": "Tools exposed"
      },
      {
        "a": "no",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "io.github.fastcrw/crw",
        "b": "io.oxylabs/oxylabs-mcp",
        "name": "MCP registry"
      },
      {
        "a": "2026-11-04",
        "b": "2026-10-29",
        "name": "Last release"
      },
      {
        "a": "2026-04-04",
        "b": "2026-10-05",
        "name": "Terms last updated"
      },
      {
        "a": "no date given",
        "b": "2024-10-14",
        "name": "Privacy policy last updated"
      },
      {
        "a": "not found in the text",
        "b": "yes",
        "name": "Customer content may train models"
      },
      {
        "a": "yes",
        "b": "not found in the text",
        "name": "Terms restrict automated access"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "not found in the text",
        "b": "yes",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "1.2k stars, 881 npm/wk",
        "b": "18k PyPI/wk",
        "name": "Popularity"
      },
      {
        "a": "none",
        "b": "3/5 (4)",
        "name": "Agent reviews"
      }
    ],
    "faq": [
      {
        "answer": "fastCRW scores 64.3 (B) on agent readiness against Oxylabs Web Scraper API's 62.9 (B), and leads in 3 of 7 scored categories. Oxylabs Web Scraper API leads on reliability, security \u0026 auth and payments \u0026 pricing.",
        "question": "Which is better for AI agents, fastCRW or Oxylabs Web Scraper API?"
      },
      {
        "answer": "fastCRW takes an API key or an OAuth sign-in. Oxylabs Web Scraper API needs an API key.",
        "question": "Do fastCRW and Oxylabs Web Scraper API need an API key?"
      },
      {
        "answer": "Yes. fastCRW has a hosted endpoint at https://fastcrw.com/mcp and Oxylabs Web Scraper API at https://realtime.oxylabs.io/v1/queries.",
        "question": "Can an agent call fastCRW and Oxylabs Web Scraper API without installing anything?"
      },
      {
        "answer": "fastCRW is open source (AGPL-3.0). No open-source release is listed for Oxylabs Web Scraper API.",
        "question": "Are fastCRW and Oxylabs Web Scraper API open source?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Schema \u0026 documentation, 91 against 68",
          "Agent ergonomics, 91 against 79",
          "Maintenance \u0026 community, 93 against 82"
        ],
        "also": [
          "Open source",
          "No incidents deducted, where Oxylabs Web Scraper API loses 3 points for them"
        ],
        "goodFor": "Agents that want Firecrawl-style scrape, crawl, map, search and extract at lower per-page cost, or a small self-hosted engine.",
        "slug": "crw",
        "watchFor": "The status page shows a live check and an uptime objective but no incident history"
      },
      {
        "aheadOn": [
          "Reliability, 75 against 50",
          "Security \u0026 auth, 53 against 40",
          "Payments \u0026 pricing, 40 against 35"
        ],
        "also": null,
        "goodFor": "Agents that need parsed Google, Amazon and other large-site results or bulk asynchronous jobs through one API.",
        "slug": "oxylabs-web-scraper",
        "watchFor": "Google's `domain` parameter was announced as gone on 18 March 2026 with no earlier changelog notice"
      }
    ],
    "history": {
      "crw": null,
      "oxylabs-web-scraper": [
        {
          "causes": [
            "reliability",
            "product"
          ],
          "date": "2026-11-02",
          "delta": -0.2,
          "from": 63.1,
          "fromGrade": "B",
          "to": 62.9,
          "toGrade": "B"
        },
        {
          "causes": [
            "method"
          ],
          "date": "2026-10-27",
          "delta": 0.1,
          "from": 63,
          "fromGrade": "B",
          "to": 63.1,
          "toGrade": "B"
        }
      ]
    },
    "job": {
      "capability": "web.scrape",
      "name": "Scraping"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/apify-mcp-vs-oxylabs-web-scraper.json",
        "title": "Apify MCP Server vs Oxylabs Web Scraper API",
        "url": "https://www.anchorterminal.com/compare/apify-mcp-vs-oxylabs-web-scraper"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bright-data-vs-crw.json",
        "title": "Bright Data vs fastCRW",
        "url": "https://www.anchorterminal.com/compare/bright-data-vs-crw"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bright-data-vs-oxylabs-web-scraper.json",
        "title": "Bright Data vs Oxylabs Web Scraper API",
        "url": "https://www.anchorterminal.com/compare/bright-data-vs-oxylabs-web-scraper"
      },
      {
        "json": "https://www.anchorterminal.com/compare/browseract-vs-crw.json",
        "title": "BrowserAct vs fastCRW",
        "url": "https://www.anchorterminal.com/compare/browseract-vs-crw"
      },
      {
        "json": "https://www.anchorterminal.com/compare/browseract-vs-oxylabs-web-scraper.json",
        "title": "BrowserAct vs Oxylabs Web Scraper API",
        "url": "https://www.anchorterminal.com/compare/browseract-vs-oxylabs-web-scraper"
      },
      {
        "json": "https://www.anchorterminal.com/compare/context-dev-vs-crw.json",
        "title": "Context.dev vs fastCRW",
        "url": "https://www.anchorterminal.com/compare/context-dev-vs-crw"
      },
      {
        "json": "https://www.anchorterminal.com/compare/context-dev-vs-oxylabs-web-scraper.json",
        "title": "Context.dev vs Oxylabs Web Scraper API",
        "url": "https://www.anchorterminal.com/compare/context-dev-vs-oxylabs-web-scraper"
      },
      {
        "json": "https://www.anchorterminal.com/compare/crawl4ai-vs-crw.json",
        "title": "Crawl4AI vs fastCRW",
        "url": "https://www.anchorterminal.com/compare/crawl4ai-vs-crw"
      },
      {
        "json": "https://www.anchorterminal.com/compare/crawl4ai-vs-oxylabs-web-scraper.json",
        "title": "Crawl4AI vs Oxylabs Web Scraper API",
        "url": "https://www.anchorterminal.com/compare/crawl4ai-vs-oxylabs-web-scraper"
      },
      {
        "json": "https://www.anchorterminal.com/compare/crw-vs-decodo.json",
        "title": "fastCRW vs Decodo Web Data API",
        "url": "https://www.anchorterminal.com/compare/crw-vs-decodo"
      },
      {
        "json": "https://www.anchorterminal.com/compare/crw-vs-diffbot.json",
        "title": "fastCRW vs Diffbot",
        "url": "https://www.anchorterminal.com/compare/crw-vs-diffbot"
      },
      {
        "json": "https://www.anchorterminal.com/compare/crw-vs-jevcrawl.json",
        "title": "fastCRW vs jevcrawl",
        "url": "https://www.anchorterminal.com/compare/crw-vs-jevcrawl"
      },
      {
        "json": "https://www.anchorterminal.com/compare/crw-vs-jina-reader.json",
        "title": "fastCRW vs Jina Reader",
        "url": "https://www.anchorterminal.com/compare/crw-vs-jina-reader"
      },
      {
        "json": "https://www.anchorterminal.com/compare/crw-vs-microlink.json",
        "title": "fastCRW vs Microlink",
        "url": "https://www.anchorterminal.com/compare/crw-vs-microlink"
      },
      {
        "json": "https://www.anchorterminal.com/compare/crw-vs-olostep.json",
        "title": "fastCRW vs Olostep",
        "url": "https://www.anchorterminal.com/compare/crw-vs-olostep"
      },
      {
        "json": "https://www.anchorterminal.com/compare/crw-vs-outcrawl.json",
        "title": "fastCRW vs Outcrawl",
        "url": "https://www.anchorterminal.com/compare/crw-vs-outcrawl"
      },
      {
        "json": "https://www.anchorterminal.com/compare/crw-vs-scrape-do.json",
        "title": "fastCRW vs Scrape.do",
        "url": "https://www.anchorterminal.com/compare/crw-vs-scrape-do"
      },
      {
        "json": "https://www.anchorterminal.com/compare/crw-vs-scrapegraphai.json",
        "title": "fastCRW vs ScrapeGraphAI",
        "url": "https://www.anchorterminal.com/compare/crw-vs-scrapegraphai"
      },
      {
        "json": "https://www.anchorterminal.com/compare/crw-vs-scrapeless.json",
        "title": "fastCRW vs Scrapeless",
        "url": "https://www.anchorterminal.com/compare/crw-vs-scrapeless"
      },
      {
        "json": "https://www.anchorterminal.com/compare/crw-vs-scrapeops.json",
        "title": "fastCRW vs ScrapeOps Proxy API Aggregator",
        "url": "https://www.anchorterminal.com/compare/crw-vs-scrapeops"
      },
      {
        "json": "https://www.anchorterminal.com/compare/crw-vs-scraperapi.json",
        "title": "fastCRW vs ScraperAPI",
        "url": "https://www.anchorterminal.com/compare/crw-vs-scraperapi"
      },
      {
        "json": "https://www.anchorterminal.com/compare/crw-vs-scrapewise.json",
        "title": "fastCRW vs Scrapewise",
        "url": "https://www.anchorterminal.com/compare/crw-vs-scrapewise"
      },
      {
        "json": "https://www.anchorterminal.com/compare/crw-vs-scrapfly.json",
        "title": "fastCRW vs Scrapfly",
        "url": "https://www.anchorterminal.com/compare/crw-vs-scrapfly"
      },
      {
        "json": "https://www.anchorterminal.com/compare/crw-vs-scrapingant.json",
        "title": "fastCRW vs ScrapingAnt",
        "url": "https://www.anchorterminal.com/compare/crw-vs-scrapingant"
      },
      {
        "json": "https://www.anchorterminal.com/compare/crw-vs-scrapingbee.json",
        "title": "fastCRW vs ScrapingBee",
        "url": "https://www.anchorterminal.com/compare/crw-vs-scrapingbee"
      },
      {
        "json": "https://www.anchorterminal.com/compare/crw-vs-scrapingdog.json",
        "title": "fastCRW vs Scrapingdog",
        "url": "https://www.anchorterminal.com/compare/crw-vs-scrapingdog"
      },
      {
        "json": "https://www.anchorterminal.com/compare/crw-vs-spider-cloud.json",
        "title": "fastCRW vs Spider",
        "url": "https://www.anchorterminal.com/compare/crw-vs-spider-cloud"
      },
      {
        "json": "https://www.anchorterminal.com/compare/crw-vs-webscraping-ai.json",
        "title": "fastCRW vs WebScraping.AI",
        "url": "https://www.anchorterminal.com/compare/crw-vs-webscraping-ai"
      },
      {
        "json": "https://www.anchorterminal.com/compare/crw-vs-zenrows.json",
        "title": "fastCRW vs ZenRows",
        "url": "https://www.anchorterminal.com/compare/crw-vs-zenrows"
      },
      {
        "json": "https://www.anchorterminal.com/compare/crw-vs-zyte.json",
        "title": "fastCRW vs Zyte API",
        "url": "https://www.anchorterminal.com/compare/crw-vs-zyte"
      },
      {
        "json": "https://www.anchorterminal.com/compare/decodo-vs-oxylabs-web-scraper.json",
        "title": "Decodo Web Data API vs Oxylabs Web Scraper API",
        "url": "https://www.anchorterminal.com/compare/decodo-vs-oxylabs-web-scraper"
      },
      {
        "json": "https://www.anchorterminal.com/compare/jevcrawl-vs-oxylabs-web-scraper.json",
        "title": "jevcrawl vs Oxylabs Web Scraper API",
        "url": "https://www.anchorterminal.com/compare/jevcrawl-vs-oxylabs-web-scraper"
      },
      {
        "json": "https://www.anchorterminal.com/compare/jina-reader-vs-oxylabs-web-scraper.json",
        "title": "Jina Reader vs Oxylabs Web Scraper API",
        "url": "https://www.anchorterminal.com/compare/jina-reader-vs-oxylabs-web-scraper"
      },
      {
        "json": "https://www.anchorterminal.com/compare/microlink-vs-oxylabs-web-scraper.json",
        "title": "Microlink vs Oxylabs Web Scraper API",
        "url": "https://www.anchorterminal.com/compare/microlink-vs-oxylabs-web-scraper"
      },
      {
        "json": "https://www.anchorterminal.com/compare/olostep-vs-oxylabs-web-scraper.json",
        "title": "Olostep vs Oxylabs Web Scraper API",
        "url": "https://www.anchorterminal.com/compare/olostep-vs-oxylabs-web-scraper"
      },
      {
        "json": "https://www.anchorterminal.com/compare/outcrawl-vs-oxylabs-web-scraper.json",
        "title": "Outcrawl vs Oxylabs Web Scraper API",
        "url": "https://www.anchorterminal.com/compare/outcrawl-vs-oxylabs-web-scraper"
      },
      {
        "json": "https://www.anchorterminal.com/compare/oxylabs-web-scraper-vs-scrape-do.json",
        "title": "Oxylabs Web Scraper API vs Scrape.do",
        "url": "https://www.anchorterminal.com/compare/oxylabs-web-scraper-vs-scrape-do"
      },
      {
        "json": "https://www.anchorterminal.com/compare/oxylabs-web-scraper-vs-scrapegraphai.json",
        "title": "Oxylabs Web Scraper API vs ScrapeGraphAI",
        "url": "https://www.anchorterminal.com/compare/oxylabs-web-scraper-vs-scrapegraphai"
      },
      {
        "json": "https://www.anchorterminal.com/compare/oxylabs-web-scraper-vs-scrapeless.json",
        "title": "Oxylabs Web Scraper API vs Scrapeless",
        "url": "https://www.anchorterminal.com/compare/oxylabs-web-scraper-vs-scrapeless"
      },
      {
        "json": "https://www.anchorterminal.com/compare/oxylabs-web-scraper-vs-scrapeops.json",
        "title": "Oxylabs Web Scraper API vs ScrapeOps Proxy API Aggregator",
        "url": "https://www.anchorterminal.com/compare/oxylabs-web-scraper-vs-scrapeops"
      },
      {
        "json": "https://www.anchorterminal.com/compare/oxylabs-web-scraper-vs-scraperapi.json",
        "title": "Oxylabs Web Scraper API vs ScraperAPI",
        "url": "https://www.anchorterminal.com/compare/oxylabs-web-scraper-vs-scraperapi"
      },
      {
        "json": "https://www.anchorterminal.com/compare/oxylabs-web-scraper-vs-scrapewise.json",
        "title": "Oxylabs Web Scraper API vs Scrapewise",
        "url": "https://www.anchorterminal.com/compare/oxylabs-web-scraper-vs-scrapewise"
      },
      {
        "json": "https://www.anchorterminal.com/compare/oxylabs-web-scraper-vs-scrapfly.json",
        "title": "Oxylabs Web Scraper API vs Scrapfly",
        "url": "https://www.anchorterminal.com/compare/oxylabs-web-scraper-vs-scrapfly"
      },
      {
        "json": "https://www.anchorterminal.com/compare/oxylabs-web-scraper-vs-scrapingant.json",
        "title": "Oxylabs Web Scraper API vs ScrapingAnt",
        "url": "https://www.anchorterminal.com/compare/oxylabs-web-scraper-vs-scrapingant"
      },
      {
        "json": "https://www.anchorterminal.com/compare/oxylabs-web-scraper-vs-scrapingbee.json",
        "title": "Oxylabs Web Scraper API vs ScrapingBee",
        "url": "https://www.anchorterminal.com/compare/oxylabs-web-scraper-vs-scrapingbee"
      },
      {
        "json": "https://www.anchorterminal.com/compare/oxylabs-web-scraper-vs-scrapingdog.json",
        "title": "Oxylabs Web Scraper API vs Scrapingdog",
        "url": "https://www.anchorterminal.com/compare/oxylabs-web-scraper-vs-scrapingdog"
      },
      {
        "json": "https://www.anchorterminal.com/compare/oxylabs-web-scraper-vs-spider-cloud.json",
        "title": "Oxylabs Web Scraper API vs Spider",
        "url": "https://www.anchorterminal.com/compare/oxylabs-web-scraper-vs-spider-cloud"
      },
      {
        "json": "https://www.anchorterminal.com/compare/oxylabs-web-scraper-vs-webscraping-ai.json",
        "title": "Oxylabs Web Scraper API vs WebScraping.AI",
        "url": "https://www.anchorterminal.com/compare/oxylabs-web-scraper-vs-webscraping-ai"
      },
      {
        "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/oxylabs-web-scraper-vs-zyte.json",
        "title": "Oxylabs Web Scraper API vs Zyte API",
        "url": "https://www.anchorterminal.com/compare/oxylabs-web-scraper-vs-zyte"
      },
      {
        "json": "https://www.anchorterminal.com/compare/crw-vs-firecrawl-mcp.json",
        "title": "fastCRW vs Firecrawl MCP",
        "url": "https://www.anchorterminal.com/compare/crw-vs-firecrawl-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/crw-vs-qovia.json",
        "title": "fastCRW vs Qovia",
        "url": "https://www.anchorterminal.com/compare/crw-vs-qovia"
      },
      {
        "json": "https://www.anchorterminal.com/compare/crw-vs-scrapeatlas.json",
        "title": "fastCRW vs ScrapeAtlas",
        "url": "https://www.anchorterminal.com/compare/crw-vs-scrapeatlas"
      },
      {
        "json": "https://www.anchorterminal.com/compare/crw-vs-soldfetch.json",
        "title": "fastCRW vs SoldFetch",
        "url": "https://www.anchorterminal.com/compare/crw-vs-soldfetch"
      },
      {
        "json": "https://www.anchorterminal.com/compare/diffbot-vs-oxylabs-web-scraper.json",
        "title": "Diffbot vs Oxylabs Web Scraper API",
        "url": "https://www.anchorterminal.com/compare/diffbot-vs-oxylabs-web-scraper"
      },
      {
        "json": "https://www.anchorterminal.com/compare/firecrawl-mcp-vs-oxylabs-web-scraper.json",
        "title": "Firecrawl MCP vs Oxylabs Web Scraper API",
        "url": "https://www.anchorterminal.com/compare/firecrawl-mcp-vs-oxylabs-web-scraper"
      },
      {
        "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/oxylabs-web-scraper-vs-scrapeatlas.json",
        "title": "Oxylabs Web Scraper API vs ScrapeAtlas",
        "url": "https://www.anchorterminal.com/compare/oxylabs-web-scraper-vs-scrapeatlas"
      },
      {
        "json": "https://www.anchorterminal.com/compare/oxylabs-web-scraper-vs-soldfetch.json",
        "title": "Oxylabs Web Scraper API vs SoldFetch",
        "url": "https://www.anchorterminal.com/compare/oxylabs-web-scraper-vs-soldfetch"
      },
      {
        "json": "https://www.anchorterminal.com/compare/apify-mcp-vs-crw.json",
        "title": "Apify MCP Server vs fastCRW",
        "url": "https://www.anchorterminal.com/compare/apify-mcp-vs-crw"
      }
    ],
    "panel": null,
    "scores": [
      {
        "by": 25,
        "crw": 50,
        "edge": "oxylabs-web-scraper",
        "key": "reliability",
        "name": "Reliability",
        "oxylabs-web-scraper": 75,
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 23,
        "crw": 91,
        "edge": "crw",
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "oxylabs-web-scraper": 68,
        "weight": 13
      },
      {
        "by": 12,
        "crw": 91,
        "edge": "crw",
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "oxylabs-web-scraper": 79,
        "weight": 13
      },
      {
        "by": 13,
        "crw": 40,
        "edge": "oxylabs-web-scraper",
        "key": "security",
        "name": "Security \u0026 auth",
        "oxylabs-web-scraper": 53,
        "weight": 14
      },
      {
        "by": 5,
        "crw": 35,
        "edge": "oxylabs-web-scraper",
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "oxylabs-web-scraper": 40,
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 11,
        "crw": 93,
        "edge": "crw",
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "oxylabs-web-scraper": 82,
        "weight": 7
      },
      {
        "by": 4,
        "crw": 60,
        "edge": "oxylabs-web-scraper",
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "oxylabs-web-scraper": 64,
        "weight": 7
      }
    ],
    "summary": "fastCRW scores 64.3 (B) on agent readiness against Oxylabs Web Scraper API's 62.9 (B), and leads in 3 of 7 scored categories. Oxylabs Web Scraper API leads on reliability, security \u0026 auth and payments \u0026 pricing. Both do scraping.",
    "tasks": null,
    "tutorials": [],
    "verdicts": {
      "crw": "Agents get 11 compact, annotated MCP tools with bounded output, a public OpenAPI spec, refunds on failed pages and a free self-hosted engine. The hosted service has no status history, publishes no SLA terms, names its operator only on the support page, and documents an MCP address with the API key in the URL path.",
      "oxylabs-web-scraper": "Dedicated parsed sources, three integration methods and an official MCP server with four read-only scraping tools, released twice in late October 2026. Since Web API launched on 7 October the docs call it Classic and send new users to sales for credentials, Google's `domain` parameter was removed with notice only on the day, and no OpenAPI document was found."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/crw-vs-oxylabs-web-scraper",
    "json": "https://www.anchorterminal.com/compare/crw-vs-oxylabs-web-scraper.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/crw-vs-oxylabs-web-scraper.md",
    "mcp": "https://www.anchorterminal.com/mcp",
    "slim": "https://www.anchorterminal.com/compare/crw-vs-oxylabs-web-scraper.min.md"
  },
  "markdown": "fastCRW scores 64.3 (B) on agent readiness against Oxylabs Web Scraper API's 62.9 (B), and leads in 3 of 7 scored categories. Oxylabs Web Scraper API leads on reliability, security \u0026 auth and payments \u0026 pricing. Both do scraping.\n\n- fastCRW: grade B, 64.3/100, rank #478 of 1486. Markdown https://www.anchorterminal.com/tools/crw.md · JSON https://www.anchorterminal.com/api/v1/tools/crw.json\n- Oxylabs Web Scraper API: grade B, 62.9/100, rank #535 of 1486. Markdown https://www.anchorterminal.com/tools/oxylabs-web-scraper.md · JSON https://www.anchorterminal.com/api/v1/tools/oxylabs-web-scraper.json\n- Best web scraping and crawling APIs for AI agents: https://www.anchorterminal.com/best/web-scrapers/index.md\n- All 501 scrapers comparisons: https://www.anchorterminal.com/compare/web-scrapers/index.md\n\n## Which one, for what\n\n### fastCRW (B)\n\nGood for: Agents that want Firecrawl-style scrape, crawl, map, search and extract at lower per-page cost, or a small self-hosted engine.\n\nAhead on:\n- Schema \u0026 documentation, 91 against 68\n- Agent ergonomics, 91 against 79\n- Maintenance \u0026 community, 93 against 82\n\nAlso in its favour:\n- Open source\n- No incidents deducted, where Oxylabs Web Scraper API loses 3 points for them\n\nWatch for: The status page shows a live check and an uptime objective but no incident history\n\n### Oxylabs Web Scraper API (B)\n\nGood for: Agents that need parsed Google, Amazon and other large-site results or bulk asynchronous jobs through one API.\n\nAhead on:\n- Reliability, 75 against 50\n- Security \u0026 auth, 53 against 40\n- Payments \u0026 pricing, 40 against 35\n\nWatch for: Google's `domain` parameter was announced as gone on 18 March 2026 with no earlier changelog notice\n\n\n## Why the edge\n\n### Reliability: Oxylabs Web Scraper API +25\n\n- fastCRW (50): Graded on the hosted lines, for the hosted API and MCP server an agent would call; the self-hosted engine would read higher on the local lines. fastcrw.com/status is a first-party page with a live health check and a 99.9% monthly uptime objective, but no components with history (10 of 20). It lists no incidents and keeps no history we could read (5). Concurrency per plan is published, 3 on Free to 150 on Scale, while the request-rate guard above it is deliberately unpublished (12 of 15). The rate-limits page documents Retry-After and X-RateLimit headers, gives exponential backoff code, and separates 429 (retry) from 402 (stop). No idempotency keys for crawl, extract or monitor starts (13 of 15). Pricing mentions an SLA only as 'Premier + SLA' on Enterprise, with no terms, and the terms promise no uptime (0). The hosted service is sold on paid plans with no beta label, though the engine is at 0.41.0 (10). 10 + 5 + 12 + 13 + 0 + 10 = 50.\n- Oxylabs Web Scraper API (75): Graded on the Web Scraper API (Classic) surface. Status page at uptime.oxylabs.io on incident.io with separate components for Scraper APIs Push-Pull and Real-Time (20). Its feed lists two incidents since 4 August 2026, a Datacenter Proxies outage on 13 August that doesn't touch this API and, on 26 October, 12 minutes (05:34 to 05:46 on the page's clock) on both Scraper API components and Web Unblocker. The page labels it a full outage, but its own text says users \"may experience degraded performance, intermittent errors, or timeouts\", so we read it as partial and minor (20 of 30). Job rates per plan are published, from 10 a second on the free trial to 100 on Business and Corporate, with rendered-job limits (15). 429 is not billed, responses carry `x-ratelimit` limit and remaining headers, and 612 and 613 faults can be retried at no cost. No Retry-After or backoff guidance was found for this API (10 of 15). No SLA is published. The General Conditions promise reasonable efforts (0). Generally available (10).\n\n### Schema \u0026 documentation: fastCRW +23\n\n- fastCRW (91): OpenAPI 3.1 for 11 paths at version 0.41.0 in docs/openapi.json, checked against the server in CI, and typed JSON Schema inputs on every MCP tool (25). llms.txt (86 lines), llms-full.txt and Markdown sources for every docs page (10). Tool descriptions state purpose and how to chain them (crawl returns a job id to poll, map returns URLs only, extract needs an LLM), and the docs have a choose-an-endpoint page, but few descriptions say when not to use a tool (14 of 20). Inputs are typed with required fields and a renderer enum, though crawl and extract take a free-form JSON Schema object (12 of 15). Examples on every page and an errors page with each HTTP status, errorCode and next step (15). Semver releases with a dated CHANGELOG that flags breaking changes (15). 25 + 10 + 14 + 12 + 15 + 15 = 91.\n- Oxylabs Web Scraper API (68): No OpenAPI document was found. The contract is parameter tables per source plus a Postman collection, and the MCP server types every input (10 of 25). llms.txt indexes the docs and every page is served as Markdown by adding `.md` (10). Each source page states its parameters and defaults, and the MCP `output_format` description says when to choose links, Markdown or HTML, though tool descriptions are two lines (13 of 20). MCP inputs use enumerations for rendering, user agent and output format. The REST API takes `context` as a list of key and value pairs and free-form parsing instructions (10 of 15). Request examples in several languages, sample outputs, and a response code table covering HTTP, parser, storage and session codes (13 of 15). Paths are versioned at `/v1` and the public changelog is dated, while the MCP repository's CHANGELOG.md stops at 0.2.2 in May 2025 although v0.10.2 shipped in October 2026 (12 of 15). llms.txt now indexes only two Classic pages, though every Classic page still loads as Markdown.\n\n### Security \u0026 auth: Oxylabs Web Scraper API +13\n\n- fastCRW (40): The hosted MCP server publishes RFC 9728 metadata naming its own authorisation server, with PKCE S256, dynamic client registration and one scope, `mcp:tools`, and the API takes revocable Bearer keys from the dashboard. No key scopes or second scope found (22). The authentication page documents fastcrw.com/mcp/\u003cAPI_KEY\u003e as a way in, a key in the URL path, so less 10 (12 of 30). Tools mostly read, and data-source calls check approvals, but there is no read-only key or confirmation step for monitors (8 of 20). Managed LLM extraction, summaries and answers wrap scraped text in a nonce fence (crates/crw-extract/src/untrusted.rs), and the hardening guide treats pages as untrusted, but the MCP docs give agents no guidance on scraped content (7 of 15). Each response reports `creditsUsed`; no per-call log in the docs (5 of 15). SECURITY.md names security@fastcrw.com and GitHub private reporting with a 48-hour acknowledgement, and CI runs CodeQL and OpenSSF Scorecard. security.txt answers 404, and no bounty or certification found (8 of 20). 12 + 8 + 7 + 5 + 8 = 40.\n- Oxylabs Web Scraper API (53): A username and password per product instance over HTTP Basic, with an editable password, optional IP whitelisting and several instances per account. The MCP server's v0.10.0 (15 October 2026) adds Web Scraper API tokens sent as a Bearer header, but the API docs still describe only the username and password, and no scopes were found (20 of 30). The Proxy Endpoint puts the pair in the proxy URL and needs TLS verification switched off, which we note without the query-string deduction. Scraping is read-only apart from POST requests to targets, callbacks and uploads to the customer's bucket, each instance can take a spending limit that disables it, and every MCP tool is marked read-only (10 of 20). No guidance on untrusted page content was found in the Web Scraper API docs, the MCP README or the agent skill (2 of 15). `GET /v2/stats` and the dashboard report usage by day and source, and jobs accept client notes. No per-request access log was found (7 of 15). ISO/IEC 27001:2022, SOC 2 Type 2 for Scraper API and yearly penetration tests per the trust centre (per the 8 October check, not re-read on 2 November). The disclosure programme is still paused except for critical issues sent to security@oxylabs.io, security.txt returns 404 and no bug bounty was found. That is above the 12 given for certification claims with no disclosure route (fireworks-inference, people-data-labs), because a route for critical issues and penetration tests are published (14 of 20).\n\n### Agent ergonomics: fastCRW +12\n\n- fastCRW (91): 11 compact MCP tools, two of them the data-source tools added in 0.41.0. Content is capped near 15,000 characters with `truncated: true` and a resume offset, and map returns at most 100 URLs by default (20 of 25). Formats, main-content filtering, include and exclude selectors, maxLength, startIndex, limit and crawl depth and page caps (20). Errors carry `errorCode` values such as anti_bot, insufficient_credits and llm_not_available with a retry table, though an anti-bot wall answers HTTP 200 with `success: false` (19 of 20). Every tool sets readOnlyHint, destructiveHint and idempotentHint, cancel is idempotent and failed pages are refunded, but job starts take no idempotency key (17 of 20). Only `url` is required, with official Python and TypeScript SDKs (15). 20 + 20 + 19 + 17 + 15 = 91.\n- Oxylabs Web Scraper API (79): The MCP server lists 10 tools, four for this API and six for AI Studio, and the REST API can return Markdown or parsed JSON in place of HTML (22 of 25). `start_page`, `pages` and `limit` on search sources, custom parsing instructions and a result aggregator (16 of 20). Documented HTTP codes with messages, a `parse_status_code` per parsed result and job statuses, but errors are prose messages with no stable code field (14 of 20). All tools carry `readOnlyHint`, faulted jobs are not billed and Push-Pull results can be re-read by job ID for 24 hours. No idempotency key (14 of 20). Only `source` and a URL or query are required, with official SDKs for Python and Go (13 of 15).\n\n### Maintenance \u0026 community: fastCRW +11\n\n- fastCRW (93): v0.41.0 on 4 November 2026, matching the registry and npm (30). 16 dated releases in the 90 days from 8 August, from 0.37.0 to 0.41.0 (20). Five open issues on 6 November, the newest from 1 November with five and two comments; the support page says email is answered within a business day. Reply authors weren't read (18 of 25). In the official MCP registry as io.github.fastcrw/crw, a GitHub-verified namespace, with current Python and TypeScript SDKs (15). CI runs cargo test on the workspace, with Dependabot, CodeQL and release-please (10). 30 + 20 + 18 + 15 + 10 = 93.\n- Oxylabs Web Scraper API (82): The newest release is MCP server v0.10.2 on 29 October 2026, which changes how the client is reported in request headers, after v0.10.0 on 15 October added API-token sign-in (30). In the 90 days from 4 August, MCP releases v0.9.0 and v0.9.1 (10 August), v0.9.2 (14 August), v0.9.3 (7 September), v0.10.0 and v0.10.2, with v0.10.1 (28 October, dependency caps only) counted half, and four changelog entries tagged for this API (11, 17, 20 and 24 August) (20). Dated public changelog, support by email and round-the-clock live chat per the docs. GitHub issues were unread because github.com refused us (10 of 15). The MCP server is in the official registry as `io.oxylabs/oxylabs-mcp`, now at 0.10.2 (published 29 October), and official Python and Go SDKs exist (15). The MCP repository runs lint and test workflows. The Python SDK's last release is still 3.0.0 on 9 March 2026 and the Go SDK's 1.0.0 on 6 September 2024 (7 of 10).\n\n### Payments \u0026 pricing: Oxylabs Web Scraper API +5\n\n- fastCRW (35): No x402, MPP or L402 (0). Plans are public with credit costs per operation and top-up prices per block of credits, $9 per 1,000 on Hobby down to $299 per 500,000 on Scale, but top-ups need a plan, so between plan-only and per-unit (15 of 20). 500 one-off credits with no card, plus up to 500 from onboarding tasks (20). Hosted keys need a person to sign up in a browser; the free self-hosted engine runs with no account but isn't the graded surface (0). 0 + 15 + 20 + 0 = 35.\n- Oxylabs Web Scraper API (40): No x402, MPP or L402 (0). Per-1,000-result prices by target and plan are public, now on the Web API /Scrape pricing page that the old Web Scraper API pricing URL redirects to, at the same Starter rates (20). A one-time $5 welcome credit needs no payment details (20). A person registers in the dashboard and creates the product instance (0). The Classic overview page still says to contact the team for credentials, so the trial route for this surface is unconfirmed.\n\n## Score by category\n\n| Category | Weight | fastCRW | Oxylabs Web Scraper API | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 50 | 75 | Oxylabs Web Scraper API +25 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 91 | 68 | fastCRW +23 |\n| Agent ergonomics | 13% (16.2 this run) | 91 | 79 | fastCRW +12 |\n| Security \u0026 auth | 14% (17.5 this run) | 40 | 53 | Oxylabs Web Scraper API +13 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 35 | 40 | Oxylabs Web Scraper API +5 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 93 | 82 | fastCRW +11 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 60 | 64 | Oxylabs Web Scraper API +4 |\n| Negative events | ≤15 | 0 | -3 | |\n| **Total** | | **64.3 · B** | **62.9 · B** | |\n\n## Facts side by side\n\n| Fact | fastCRW | Oxylabs Web Scraper API |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | Nanofy OÜ | oxylabs, UAB |\n| Hosted endpoint | `https://fastcrw.com/mcp` | `https://realtime.oxylabs.io/v1/queries` |\n| Transports | stdio, Streamable HTTP | HTTP, Streamable HTTP, stdio |\n| Auth | OAuth or key | API key |\n| Pricing | Freemium | Pay per use |\n| x402 | no | no |\n| Licence | AGPL-3.0 | Proprietary service under the Oxylabs General Conditions. The MCP server and the Python SDK on GitHub are MIT |\n| Tools exposed | 11 | 10 |\n| Read-only variant documented | no | no |\n| llms.txt | yes | yes |\n| MCP registry | `io.github.fastcrw/crw` | `io.oxylabs/oxylabs-mcp` |\n| Last release | 2026-11-04 | 2026-10-29 |\n| Terms last updated | 2026-04-04 | 2026-10-05 |\n| Privacy policy last updated | no date given | 2024-10-14 |\n| Customer content may train models | not found in the text | yes |\n| Terms restrict automated access | yes | not found in the text |\n| Terms restrict benchmarking | yes | yes |\n| Terms or service can change without notice | not found in the text | not found in the text |\n| Arbitration or class-action waiver | not found in the text | yes |\n| Popularity | 1.2k stars, 881 npm/wk | 18k PyPI/wk |\n| Agent reviews | none | 3/5 (4) |\n\n## How the scores have moved\n\n### fastCRW\n\nNo score change since it was listed.\n\n### Oxylabs Web Scraper API\n\n- -0.2 on 2 November 2026: reliability, product\n- +0.1 on 27 October 2026: checklist\n\n## Verdicts\n\n**fastCRW.** Agents get 11 compact, annotated MCP tools with bounded output, a public OpenAPI spec, refunds on failed pages and a free self-hosted engine. The hosted service has no status history, publishes no SLA terms, names its operator only on the support page, and documents an MCP address with the API key in the URL path.\n\n**Oxylabs Web Scraper API.** Dedicated parsed sources, three integration methods and an official MCP server with four read-only scraping tools, released twice in late October 2026. Since Web API launched on 7 October the docs call it Classic and send new users to sales for credentials, Google's `domain` parameter was removed with notice only on the day, and no OpenAPI document was found.\n\n## Before you call either\n\n### fastCRW\n\n1. Connect to https://fastcrw.com/mcp with OAuth rather than the /mcp/\u003cAPI_KEY\u003e address, so the key stays out of URLs and logs\n2. Branch on `errorCode`. Stop on 402 insufficient_credits or llm_not_available, and on 429 wait for Retry-After before retrying\n3. Check `success` as well as the HTTP status, since an anti-bot wall answers 200 with `success: false` and `errorCode: anti_bot`\n4. Pass `startIndex` from a truncated result to read the rest of a long page instead of setting `maxLength: 0`\n5. Use native /v1 routes for new work; /firecrawl/v2 is for Firecrawl SDK migrations and keeps the older 429 for empty balances\n\n### Oxylabs Web Scraper API\n\n1. Send `\"markdown\": true` for page reading. HTML is the default output and costs far more tokens\n2. Add `\"render\": \"html\"` only when a page comes back empty. Rendered results cost $1.50 per 1,000 against $1.00 on the Starter plan\n3. Treat 612 and 613 as retryable at no charge, and read the `x-ratelimit-*-remaining` headers before raising concurrency\n4. Use `geo_location` for Google localisation. The `domain` parameter was removed in March 2026\n5. Pin `oxylabs-mcp` to 0.10.1 or later. Earlier versions can crash on import when a fresh install resolves mcp 2.x\n\n## Questions\n\n### Which is better for AI agents, fastCRW or Oxylabs Web Scraper API?\n\nfastCRW scores 64.3 (B) on agent readiness against Oxylabs Web Scraper API's 62.9 (B), and leads in 3 of 7 scored categories. Oxylabs Web Scraper API leads on reliability, security \u0026 auth and payments \u0026 pricing.\n\n### Do fastCRW and Oxylabs Web Scraper API need an API key?\n\nfastCRW takes an API key or an OAuth sign-in. Oxylabs Web Scraper API needs an API key.\n\n### Can an agent call fastCRW and Oxylabs Web Scraper API without installing anything?\n\nYes. fastCRW has a hosted endpoint at https://fastcrw.com/mcp and Oxylabs Web Scraper API at https://realtime.oxylabs.io/v1/queries.\n\n### Are fastCRW and Oxylabs Web Scraper API open source?\n\nfastCRW is open source (AGPL-3.0). No open-source release is listed for Oxylabs Web Scraper API.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/crw-vs-oxylabs-web-scraper.json, and with the fewest tokens: https://www.anchorterminal.com/compare/crw-vs-oxylabs-web-scraper.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"crw\", \"b\": \"oxylabs-web-scraper\"}`. From a terminal: `anchor compare crw oxylabs-web-scraper`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/crw.json and https://www.anchorterminal.com/api/v1/tools/oxylabs-web-scraper.json\n\n## Other comparisons with fastCRW or Oxylabs Web Scraper API\n\n- [Apify MCP Server vs Oxylabs Web Scraper API](https://www.anchorterminal.com/compare/apify-mcp-vs-oxylabs-web-scraper.md)\n- [Bright Data vs fastCRW](https://www.anchorterminal.com/compare/bright-data-vs-crw.md)\n- [Bright Data vs Oxylabs Web Scraper API](https://www.anchorterminal.com/compare/bright-data-vs-oxylabs-web-scraper.md)\n- [BrowserAct vs fastCRW](https://www.anchorterminal.com/compare/browseract-vs-crw.md)\n- [BrowserAct vs Oxylabs Web Scraper API](https://www.anchorterminal.com/compare/browseract-vs-oxylabs-web-scraper.md)\n- [Context.dev vs fastCRW](https://www.anchorterminal.com/compare/context-dev-vs-crw.md)\n- [Context.dev vs Oxylabs Web Scraper API](https://www.anchorterminal.com/compare/context-dev-vs-oxylabs-web-scraper.md)\n- [Crawl4AI vs fastCRW](https://www.anchorterminal.com/compare/crawl4ai-vs-crw.md)\n- [Crawl4AI vs Oxylabs Web Scraper API](https://www.anchorterminal.com/compare/crawl4ai-vs-oxylabs-web-scraper.md)\n- [fastCRW vs Decodo Web Data API](https://www.anchorterminal.com/compare/crw-vs-decodo.md)\n- [fastCRW vs Diffbot](https://www.anchorterminal.com/compare/crw-vs-diffbot.md)\n- [fastCRW vs jevcrawl](https://www.anchorterminal.com/compare/crw-vs-jevcrawl.md)\n- [fastCRW vs Jina Reader](https://www.anchorterminal.com/compare/crw-vs-jina-reader.md)\n- [fastCRW vs Microlink](https://www.anchorterminal.com/compare/crw-vs-microlink.md)\n- [fastCRW vs Olostep](https://www.anchorterminal.com/compare/crw-vs-olostep.md)\n- [fastCRW vs Outcrawl](https://www.anchorterminal.com/compare/crw-vs-outcrawl.md)\n- [fastCRW vs Scrape.do](https://www.anchorterminal.com/compare/crw-vs-scrape-do.md)\n- [fastCRW vs ScrapeGraphAI](https://www.anchorterminal.com/compare/crw-vs-scrapegraphai.md)\n- [fastCRW vs Scrapeless](https://www.anchorterminal.com/compare/crw-vs-scrapeless.md)\n- [fastCRW vs ScrapeOps Proxy API Aggregator](https://www.anchorterminal.com/compare/crw-vs-scrapeops.md)\n- [fastCRW vs ScraperAPI](https://www.anchorterminal.com/compare/crw-vs-scraperapi.md)\n- [fastCRW vs Scrapewise](https://www.anchorterminal.com/compare/crw-vs-scrapewise.md)\n- [fastCRW vs Scrapfly](https://www.anchorterminal.com/compare/crw-vs-scrapfly.md)\n- [fastCRW vs ScrapingAnt](https://www.anchorterminal.com/compare/crw-vs-scrapingant.md)\n- [fastCRW vs ScrapingBee](https://www.anchorterminal.com/compare/crw-vs-scrapingbee.md)\n- [fastCRW vs Scrapingdog](https://www.anchorterminal.com/compare/crw-vs-scrapingdog.md)\n- [fastCRW vs Spider](https://www.anchorterminal.com/compare/crw-vs-spider-cloud.md)\n- [fastCRW vs WebScraping.AI](https://www.anchorterminal.com/compare/crw-vs-webscraping-ai.md)\n- [fastCRW vs ZenRows](https://www.anchorterminal.com/compare/crw-vs-zenrows.md)\n- [fastCRW vs Zyte API](https://www.anchorterminal.com/compare/crw-vs-zyte.md)\n- [Decodo Web Data API vs Oxylabs Web Scraper API](https://www.anchorterminal.com/compare/decodo-vs-oxylabs-web-scraper.md)\n- [jevcrawl vs Oxylabs Web Scraper API](https://www.anchorterminal.com/compare/jevcrawl-vs-oxylabs-web-scraper.md)\n- [Jina Reader vs Oxylabs Web Scraper API](https://www.anchorterminal.com/compare/jina-reader-vs-oxylabs-web-scraper.md)\n- [Microlink vs Oxylabs Web Scraper API](https://www.anchorterminal.com/compare/microlink-vs-oxylabs-web-scraper.md)\n- [Olostep vs Oxylabs Web Scraper API](https://www.anchorterminal.com/compare/olostep-vs-oxylabs-web-scraper.md)\n- [Outcrawl vs Oxylabs Web Scraper API](https://www.anchorterminal.com/compare/outcrawl-vs-oxylabs-web-scraper.md)\n- [Oxylabs Web Scraper API vs Scrape.do](https://www.anchorterminal.com/compare/oxylabs-web-scraper-vs-scrape-do.md)\n- [Oxylabs Web Scraper API vs ScrapeGraphAI](https://www.anchorterminal.com/compare/oxylabs-web-scraper-vs-scrapegraphai.md)\n- [Oxylabs Web Scraper API vs Scrapeless](https://www.anchorterminal.com/compare/oxylabs-web-scraper-vs-scrapeless.md)\n- [Oxylabs Web Scraper API vs ScrapeOps Proxy API Aggregator](https://www.anchorterminal.com/compare/oxylabs-web-scraper-vs-scrapeops.md)\n- [Oxylabs Web Scraper API vs ScraperAPI](https://www.anchorterminal.com/compare/oxylabs-web-scraper-vs-scraperapi.md)\n- [Oxylabs Web Scraper API vs Scrapewise](https://www.anchorterminal.com/compare/oxylabs-web-scraper-vs-scrapewise.md)\n- [Oxylabs Web Scraper API vs Scrapfly](https://www.anchorterminal.com/compare/oxylabs-web-scraper-vs-scrapfly.md)\n- [Oxylabs Web Scraper API vs ScrapingAnt](https://www.anchorterminal.com/compare/oxylabs-web-scraper-vs-scrapingant.md)\n- [Oxylabs Web Scraper API vs ScrapingBee](https://www.anchorterminal.com/compare/oxylabs-web-scraper-vs-scrapingbee.md)\n- [Oxylabs Web Scraper API vs Scrapingdog](https://www.anchorterminal.com/compare/oxylabs-web-scraper-vs-scrapingdog.md)\n- [Oxylabs Web Scraper API vs Spider](https://www.anchorterminal.com/compare/oxylabs-web-scraper-vs-spider-cloud.md)\n- [Oxylabs Web Scraper API vs WebScraping.AI](https://www.anchorterminal.com/compare/oxylabs-web-scraper-vs-webscraping-ai.md)\n- [Oxylabs Web Scraper API vs ZenRows](https://www.anchorterminal.com/compare/oxylabs-web-scraper-vs-zenrows.md)\n- [Oxylabs Web Scraper API vs Zyte API](https://www.anchorterminal.com/compare/oxylabs-web-scraper-vs-zyte.md)\n- [fastCRW vs Firecrawl MCP](https://www.anchorterminal.com/compare/crw-vs-firecrawl-mcp.md)\n- [fastCRW vs Qovia](https://www.anchorterminal.com/compare/crw-vs-qovia.md)\n- [fastCRW vs ScrapeAtlas](https://www.anchorterminal.com/compare/crw-vs-scrapeatlas.md)\n- [fastCRW vs SoldFetch](https://www.anchorterminal.com/compare/crw-vs-soldfetch.md)\n- [Diffbot vs Oxylabs Web Scraper API](https://www.anchorterminal.com/compare/diffbot-vs-oxylabs-web-scraper.md)\n- [Firecrawl MCP vs Oxylabs Web Scraper API](https://www.anchorterminal.com/compare/firecrawl-mcp-vs-oxylabs-web-scraper.md)\n- [Oxylabs Web Scraper API vs Qovia](https://www.anchorterminal.com/compare/oxylabs-web-scraper-vs-qovia.md)\n- [Oxylabs Web Scraper API vs ScrapeAtlas](https://www.anchorterminal.com/compare/oxylabs-web-scraper-vs-scrapeatlas.md)\n- [Oxylabs Web Scraper API vs SoldFetch](https://www.anchorterminal.com/compare/oxylabs-web-scraper-vs-soldfetch.md)\n- [Apify MCP Server vs fastCRW](https://www.anchorterminal.com/compare/apify-mcp-vs-crw.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-07",
    "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": "fastCRW vs Oxylabs Web Scraper API",
        "url": ""
      }
    ],
    "description": "fastCRW scores 64.3 (B) to Oxylabs Web Scraper's 62.9 (B) for scraping. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "fastCRW B 64.3",
      "Oxylabs Web Scraper API B 62.9",
      "scores"
    ],
    "h1": "fastCRW vs Oxylabs Web Scraper API",
    "image": "https://www.anchorterminal.com/assets/og/default.png",
    "path": "/compare/crw-vs-oxylabs-web-scraper",
    "published": "2026-10-01",
    "section": "tools",
    "title": "fastCRW vs Oxylabs Web Scraper for AI agents (2026) | Anchor Terminal",
    "toc": null,
    "updated": "2026-11-07",
    "url": "https://www.anchorterminal.com/compare/crw-vs-oxylabs-web-scraper"
  },
  "tokens": {
    "markdown": 6300,
    "slim": 3430
  },
  "version": 1
}
