{
  "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"
  },
  "tool": {
    "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"
      ],
      "breakdown": [
        {
          "key": "reliability",
          "name": "Reliability",
          "weight": 16,
          "effectiveWeight": 20,
          "score": 50,
          "points": 10,
          "reason": "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.",
          "checked": "2026-11-06"
        },
        {
          "key": "performance",
          "name": "Performance",
          "weight": 10,
          "effectiveWeight": 0,
          "pending": true,
          "points": 0,
          "reason": "Pending. Latency is measured per call by our probes, which haven't run yet, so this run doesn't score it. Its weight is shared across the assessed categories until the first probe window closes."
        },
        {
          "key": "schema",
          "name": "Schema \u0026 documentation",
          "weight": 13,
          "effectiveWeight": 16.25,
          "score": 91,
          "points": 14.79,
          "reason": "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.",
          "checked": "2026-11-06"
        },
        {
          "key": "ergonomics",
          "name": "Agent ergonomics",
          "weight": 13,
          "effectiveWeight": 16.25,
          "score": 91,
          "points": 14.79,
          "reason": "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.",
          "checked": "2026-11-06"
        },
        {
          "key": "security",
          "name": "Security \u0026 auth",
          "weight": 14,
          "effectiveWeight": 17.5,
          "score": 40,
          "points": 7,
          "reason": "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.",
          "checked": "2026-11-06"
        },
        {
          "key": "payments",
          "name": "Payments \u0026 pricing",
          "weight": 10,
          "effectiveWeight": 12.5,
          "score": 35,
          "points": 4.38,
          "reason": "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.",
          "checked": "2026-11-06"
        },
        {
          "key": "tasks",
          "name": "Task success",
          "weight": 10,
          "effectiveWeight": 0,
          "pending": true,
          "points": 0,
          "reason": "Pending. Task success needs the category task suites run through each tool, which haven't run yet, so this run doesn't score it. Its weight is shared across the assessed categories until then. A data provider's data-quality score is published on its listing now and becomes half of this category when it's scored."
        },
        {
          "key": "maintenance",
          "name": "Maintenance \u0026 community",
          "weight": 7,
          "effectiveWeight": 8.75,
          "score": 93,
          "points": 8.14,
          "reason": "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.",
          "checked": "2026-11-06"
        },
        {
          "key": "transparency",
          "name": "Transparency \u0026 trust",
          "weight": 7,
          "effectiveWeight": 8.75,
          "score": 60,
          "points": 5.25,
          "note": "editorial 53, provenance 67",
          "reason": "The engine and MCP server are AGPL-3.0 and the SDKs MIT, while the hosted control plane is closed under terms that name no legal entity (25 of 30). The terms say crawled data is handled transiently with zero data retention for approved accounts, but the privacy policy is undated, names no controller, gives no retention periods and mentions no DPA (10 of 30). The CHANGELOG flags breaking changes, deprecated v2 extract routes return a warning on every response, and the October 2026 402 change is dated in the docs, with no standing notice policy (10 of 20). Local data-source telemetry is disclosed with an opt-out. The privacy policy names Stripe, Google Analytics, Google Ads and an X pixel, but infrastructure and search providers are unnamed and no data location is given (8 of 20). 25 + 10 + 10 + 8 = 53.",
          "checked": "2026-11-06"
        }
      ],
      "assessment": {
        "date": "2026-11-06",
        "basis": "public evidence",
        "confidence": "medium",
        "notes": {
          "ergonomics": "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.",
          "maintenance": "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.",
          "payments": "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.",
          "reliability": "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.",
          "schema": "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.",
          "security": "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.",
          "transparency": "The engine and MCP server are AGPL-3.0 and the SDKs MIT, while the hosted control plane is closed under terms that name no legal entity (25 of 30). The terms say crawled data is handled transiently with zero data retention for approved accounts, but the privacy policy is undated, names no controller, gives no retention periods and mentions no DPA (10 of 30). The CHANGELOG flags breaking changes, deprecated v2 extract routes return a warning on every response, and the October 2026 402 change is dated in the docs, with no standing notice policy (10 of 20). Local data-source telemetry is disclosed with an opt-out. The privacy policy names Stripe, Google Analytics, Google Ads and an X pixel, but infrastructure and search providers are unnamed and no data location is given (8 of 20). 25 + 10 + 10 + 8 = 53."
        },
        "sources": [
          {
            "what": "repository, README, CHANGELOG, SECURITY.md, OpenAPI and MCP tool definitions",
            "url": "https://github.com/fastcrw/crw",
            "seen": "2026-11-06"
          },
          {
            "what": "authentication docs",
            "url": "https://docs.fastcrw.com/authentication/",
            "seen": "2026-11-06"
          },
          {
            "what": "rate limits",
            "url": "https://docs.fastcrw.com/rate-limits/",
            "seen": "2026-11-06"
          },
          {
            "what": "error codes",
            "url": "https://docs.fastcrw.com/error-codes/",
            "seen": "2026-11-06"
          },
          {
            "what": "credit costs",
            "url": "https://docs.fastcrw.com/credit-costs/",
            "seen": "2026-11-06"
          },
          {
            "what": "pricing",
            "url": "https://fastcrw.com/pricing",
            "seen": "2026-11-06"
          },
          {
            "what": "terms",
            "url": "https://fastcrw.com/terms",
            "seen": "2026-11-06"
          },
          {
            "what": "privacy policy",
            "url": "https://fastcrw.com/privacy",
            "seen": "2026-11-06"
          },
          {
            "what": "status page",
            "url": "https://fastcrw.com/status",
            "seen": "2026-11-06"
          },
          {
            "what": "support page with operator",
            "url": "https://fastcrw.com/support",
            "seen": "2026-11-06"
          },
          {
            "what": "OAuth protected-resource metadata",
            "url": "https://fastcrw.com/.well-known/oauth-protected-resource/mcp",
            "seen": "2026-11-06"
          },
          {
            "what": "MCP registry entries",
            "url": "https://registry.modelcontextprotocol.io/v0/servers?search=crw",
            "seen": "2026-11-06"
          },
          {
            "what": "GitHub issues",
            "url": "https://github.com/fastcrw/crw/issues",
            "seen": "2026-11-06"
          },
          {
            "what": "npm crw-mcp",
            "url": "https://registry.npmjs.org/crw-mcp/latest",
            "seen": "2026-11-06"
          },
          {
            "what": "RDAP fastcrw.com",
            "url": "https://rdap.org/domain/fastcrw.com",
            "seen": "2026-11-06"
          }
        ],
        "openQuestions": [
          "Judgement call on surface. Graded on the hosted API and MCP server on the hosted lines. On the local lines the self-hosted engine would get official packages (20), CI (25), few open issues (about 25), semver with flagged breaking changes (15) and nothing for 1.0 (0).",
          "Slug kept as crw. The product is called fastCRW, but the packages, binary, repository and registry name are crw. fastcrw would also fit if the lander prefers the product name.",
          "firstReleased is 2026-03-24, the earliest dated CHANGELOG entry (0.0.13); the domain was registered on 5 March 2026 and the first registry entry is 0.2.0 on 28 March 2026.",
          "The benchmark claims in the README (more truth recall than Crawl4AI and Firecrawl, 90.0% on AA-Omniscience) are the vendor's and weren't rerun. No deduction.",
          "unchecked: replies on GitHub issues (the GitHub API was rate-limited on 6 November) and whether dashboard keys can be scoped, rotated or listed with last use.",
          "The pricing page gives search as 1 credit per 10 results in one table and 2 credits per search elsewhere; the docs say 2."
        ]
      },
      "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
      },
      "scoreHistory": [
        {
          "date": "2026-11-06",
          "grade": "B",
          "kind": "listed",
          "method": "0.7",
          "score": 64.3
        }
      ]
    },
    "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"
    },
    "notable": [
      "OpenAPI 3.1 spec for 11 paths at version 0.41.0 in the repository, with a CI check that it matches the server (https://github.com/fastcrw/crw/tree/main/docs)",
      "MCP tools crw_scrape, crw_crawl, crw_check_crawl_status, crw_map, crw_extract, crw_check_extract_status, crw_cancel_extract, crw_search, crw_parse_file, crw_find_data and crw_get_data, each with readOnlyHint, destructiveHint and idempotentHint annotations (crates/crw-mcp-proto in the repository)",
      "Tool output is cut to about 15,000 characters by default with `truncated: true` and a `startIndex` to resume (https://docs.fastcrw.com/mcp/)",
      "Failed requests (4xx, 5xx or `success: false`) are refunded, and every renderer costs 1 credit a page (https://docs.fastcrw.com/credit-costs/)",
      "Since October 2026 an exhausted balance answers 402 with `errorCode: insufficient_credits` on /v1, while the Firecrawl-compatible /v2 routes keep a 429 (https://docs.fastcrw.com/rate-limits/)",
      "Managed LLM extraction, summaries and answers fence scraped text with a per-call random nonce so page content cannot close the fence (crates/crw-extract/src/untrusted.rs)",
      "Published in the official MCP registry as io.github.fastcrw/crw, 0.41.0 on 4 November 2026, and earlier as io.github.us/crw from 0.2.0 on 28 March 2026 (https://registry.modelcontextprotocol.io/v0/servers?search=crw)",
      "README claims fastCRW beats Crawl4AI and Firecrawl on Firecrawl's 1,000-URL dataset and scores 90.0% on AA-Omniscience; these are the vendor's own benchmarks (https://github.com/fastcrw/crw)"
    ],
    "area": "web-data",
    "details": [
      {
        "label": "Surface listed",
        "value": "The hosted API at api.fastcrw.com and the hosted MCP server at fastcrw.com/mcp, with the open-source engine and stdio MCP server crw-mcp, read from the repository (cloned 6 November 2026), docs.fastcrw.com, fastcrw.com and the MCP registry. No account was made and no tool was called"
      },
      {
        "label": "Name",
        "value": "The product is called fastCRW on its site and README. The binary, crates, npm and PyPI packages and the repository are named crw, so the slug stays crw. The repository moved from github.com/us/crw to github.com/fastcrw/crw"
      },
      {
        "label": "Endpoints",
        "value": "/v1/search, /v1/scrape, /v1/map, /v1/crawl, /v1/batch/scrape, /v1/extract, /v1/change-tracking/diff and /v1/capabilities, plus Firecrawl v2-compatible routes under /firecrawl/v2. Account, balance and monitors live at fastcrw.com/api"
      },
      {
        "label": "Concurrency",
        "value": "Free 3, Hobby 10, Standard 50, Growth 100, Scale 150 requests in flight. A request-rate guard sits above that, unpublished, with Retry-After and X-RateLimit headers. Self-hosted defaults to 10 requests a second"
      },
      {
        "label": "Self-hosting",
        "value": "Single Rust binary, Docker image or install script for macOS and Linux. Renderers include plain HTTP, LightPanda, Chrome and an opt-in Camoufox tier; search and LLM extraction need the owner's own providers"
      },
      {
        "label": "Telemetry",
        "value": "Data-source tools run from the local MCP server send fastCRW one usage count per call (provider, capability, outcome, time), never the URL, options or data. Off with `[client] telemetry = false` or CRW_CLIENT__TELEMETRY=false"
      },
      {
        "label": "Data retention",
        "value": "The terms say crawled data is handled transiently unless caching is used, approved accounts can turn on zero data retention, and monitors keep page content for their retention period"
      },
      {
        "label": "Legal entity",
        "value": "Nanofy OÜ, registry code 17365846, Tallinn, Estonia, named on fastcrw.com/support. The terms and privacy policy say only fastCRW"
      }
    ],
    "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,
      "checks": [
        {
          "check": "Legal entity named",
          "value": "Nanofy OÜ",
          "points": 20,
          "max": 20,
          "state": "ok"
        },
        {
          "check": "Domain age",
          "value": "fastcrw.com, registered 2026-03-05 (under a year)",
          "points": 0,
          "max": 15,
          "state": "no"
        },
        {
          "check": "Endpoint on the vendor's domain",
          "value": "fastcrw.com",
          "points": 15,
          "max": 15,
          "state": "ok"
        },
        {
          "check": "Terms of service",
          "value": "read, states 6 of the 7 things a reader expects, and has 2 clauses that cost points",
          "points": 5.1,
          "max": 10,
          "state": "part"
        },
        {
          "check": "Privacy policy",
          "value": "read, states 2 of the 8 things a reader expects",
          "points": 5.5,
          "max": 10,
          "state": "part"
        },
        {
          "check": "Status page",
          "value": "fastcrw.com/status",
          "points": 10,
          "max": 10,
          "state": "ok"
        },
        {
          "check": "Changelog",
          "value": "published",
          "points": 10,
          "max": 10,
          "state": "ok"
        },
        {
          "check": "security.txt",
          "value": "not found",
          "points": 0,
          "max": 10,
          "state": "no"
        },
        {
          "check": "People named",
          "value": "1 named with their role, none with a public profile",
          "points": 7,
          "max": 10,
          "state": "part"
        },
        {
          "check": "Support route",
          "value": "a support address, help pages, a community",
          "points": 5,
          "max": 5,
          "state": "ok"
        }
      ],
      "policies": [
        {
          "kind": "terms",
          "url": "https://fastcrw.com/terms",
          "state": "read",
          "readAt": "2026-11-06",
          "statedDate": "2026-04-04",
          "words": 1388,
          "points": 5.1,
          "max": 10,
          "expected": [
            {
              "key": "terms.date",
              "label": "Gives the date it was last updated",
              "found": true,
              "quote": "Last updated: April 4, 2026",
              "says": "Last updated 2026-04-04"
            },
            {
              "key": "terms.law",
              "label": "Names the governing law or courts",
              "found": true,
              "quote": "These Terms shall be governed by and construed in accordance with the laws of the jurisdiction in which fastCRW operates, without regard to its conflict of law provisions."
            },
            {
              "key": "terms.liability",
              "label": "States a limit on its liability",
              "found": true,
              "quote": "OUR TOTAL LIABILITY FOR ALL CLAIMS RELATED TO THE SERVICE SHALL NOT EXCEED THE AMOUNT YOU PAID US IN THE TWELVE (12) MONTHS PRECEDING THE CLAIM.",
              "says": "Capped at the fees paid in the 12 months before the claim"
            },
            {
              "key": "terms.termination",
              "label": "Says how the agreement or account can be ended",
              "found": true,
              "quote": "We may terminate or suspend your account and access to the Service immediately, without prior notice or liability, for any reason, including without limitation if you breach these Terms."
            },
            {
              "key": "terms.changes",
              "label": "Says how changes to the terms are announced",
              "found": false
            },
            {
              "key": "terms.use",
              "label": "Lists what users may not do",
              "found": true,
              "quote": "You agree not to circumvent or attempt to circumvent these limits."
            },
            {
              "key": "terms.sla",
              "label": "Refers to a service level or uptime commitment",
              "found": true,
              "quote": "We strive to maintain high availability of the Service but do not guarantee uninterrupted or error-free operation."
            }
          ],
          "toKnow": [
            {
              "key": "terms.automated",
              "label": "Restricts automated access",
              "found": true,
              "quote": "Crawl or scrape websites in violation of their terms of service or robots.txt directives",
              "costsPoints": true
            },
            {
              "key": "terms.benchmark",
              "label": "Restricts benchmarking or competitive use",
              "found": true,
              "quote": "Use the Service for competitive intelligence gathering against fastCRW",
              "costsPoints": true
            }
          ]
        },
        {
          "kind": "privacy",
          "url": "https://fastcrw.com/privacy",
          "state": "read",
          "readAt": "2026-11-06",
          "words": 615,
          "points": 5.5,
          "max": 10,
          "expected": [
            {
              "key": "privacy.date",
              "label": "Gives the date it was last updated",
              "found": false
            },
            {
              "key": "privacy.collected",
              "label": "Says what personal data is collected",
              "found": false
            },
            {
              "key": "privacy.retention",
              "label": "Says how long data is kept",
              "found": true,
              "quote": "Access logs and usage telemetry are retained only as long as needed for security, analytics, and billing operations.",
              "says": "For as long as needed, with no period named"
            },
            {
              "key": "privacy.processors",
              "label": "Says who else receives the data",
              "found": true,
              "quote": "Fulfilling a request means reaching the open web on your behalf, so the content of a request may be transmitted to infrastructure and search providers acting for fastCRW under contract, solely to produce the result you asked for."
            },
            {
              "key": "privacy.sale",
              "label": "Says whether personal data is sold or shared for advertising",
              "found": false
            },
            {
              "key": "privacy.rights",
              "label": "Says what rights people have over their data",
              "found": false
            },
            {
              "key": "privacy.contact",
              "label": "Gives a privacy contact",
              "found": false
            },
            {
              "key": "privacy.transfers",
              "label": "Says where data is transferred or stored",
              "found": false
            }
          ]
        }
      ]
    },
    "humans": {
      "slug": "crw",
      "checked": "2026-11-06",
      "company": "Nanofy OÜ",
      "people": [
        {
          "name": "Behram Çelen",
          "role": "Management board member and sole shareholder, Nanofy OÜ",
          "page": "/people/behram-celen/"
        }
      ],
      "peopleNote": "fastcrw.com/support names the operator as Nanofy OÜ (registry code 17365846), Tallinn, Estonia. The Estonian e-Business Register card, read 6 November 2026, shows Nanofy OÜ entered on 5 November 2025 with share capital of 1 euro, and names Behram Çelen as its only management board member, its only shareholder (100 per cent) and its beneficial owner. No page calls him a founder, so no founder flag is set, and no first-hand page ties him to the repository's main committer, the GitHub account `us`. The about page, terms, privacy policy, README and SECURITY.md name no other team member. With one person holding all the shares there are no outside investors, and fastcrw.com, its about page and the repository mention no funding or valuation.",
      "companySocial": {
        "linkedin": "https://www.linkedin.com/company/fastcrw",
        "x": "https://x.com/fast_crw",
        "github": "https://github.com/fastcrw"
      },
      "support": {
        "emails": [
          "hello@fastcrw.com"
        ],
        "urls": [
          "https://fastcrw.com/support",
          "https://docs.fastcrw.com"
        ],
        "community": [
          {
            "label": "Discord",
            "url": "https://discord.gg/KNQBfFVc9J",
            "kind": "discord"
          },
          {
            "label": "GitHub issues",
            "url": "https://github.com/fastcrw/crw/issues",
            "kind": "github"
          }
        ],
        "contactEmails": [
          "hello@fastcrw.com"
        ]
      },
      "sources": [
        "https://fastcrw.com/support",
        "https://fastcrw.com/about",
        "https://fastcrw.com/terms",
        "https://github.com/fastcrw/crw",
        "https://ariregister.rik.ee/eng/company/17365846"
      ],
      "ownership": {
        "status": "private",
        "checked": "2026-11-06",
        "sources": [
          "https://fastcrw.com/support",
          "https://ariregister.rik.ee/eng/company/17365846"
        ]
      }
    },
    "pageJsonUrl": "https://www.anchorterminal.com/tools/crw.json",
    "live": {
      "slug": "crw",
      "probe": {
        "target": "https://fastcrw.com/mcp",
        "method": "get",
        "lastAt": "2026-11-07T17:49:36.590839164Z",
        "lastOk": true,
        "lastStatus": 401,
        "lastMs": 115,
        "lastNote": "asks for credentials",
        "authRequired": true,
        "uptime24h": 100,
        "uptime30d": 100,
        "p50ms24h": 80,
        "p95ms24h": 145,
        "samples24h": 195,
        "samples30d": 195,
        "days": [
          {
            "date": "2026-11-06",
            "probes": 13,
            "ok": 13
          },
          {
            "date": "2026-11-07",
            "probes": 182,
            "ok": 182
          }
        ]
      },
      "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": "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-07T17:49:36.590839164Z"
    }
  }
}
