{
  "data": {
    "a": {
      "slug": "nexscope",
      "name": "Nexscope",
      "vendor": "ECOCREATE TECHNOLOGY PTE. LTD.",
      "vendorUrl": "https://www.nexscope.ai",
      "kind": "platform",
      "category": "web-scrapers",
      "summary": "Nexscope is a hosted platform for ecommerce sellers with marketplace product, keyword and competitor data for Amazon, TikTok Shop, Walmart, Temu, 1688 and others, plus AI product images and video, through a web app, REST API and remote MCP server.",
      "url": "https://www.anchorterminal.com/tools/nexscope",
      "markdownUrl": "https://www.anchorterminal.com/tools/nexscope.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/nexscope.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/nexscope.json",
      "dns": "nexscope.grade.anchorterminal.com",
      "repo": "https://github.com/nexscope-ai/nexscope-ecommerce-api",
      "license": "Proprietary hosted service under the Nexscope terms (last updated 8 October 2026), whose contracting party is ECOCREATE TECHNOLOGY PTE. LTD. of Singapore. The OpenAPI file's licence is 'Proprietary API; use subject to Nexscope Terms'. In github.com/nexscope-ai/nexscope-ecommerce-api only the example clients, validation scripts, tests and workflow are MIT. The API documentation, catalogue, definitions and sample data stay copyright Nexscope",
      "transports": [
        "streamable-http",
        "http"
      ],
      "remoteUrl": "https://api.nexscope.ai/mcp",
      "packages": [],
      "auth": "mixed",
      "authNotes": "The remote MCP server takes OAuth 2.1 (authorisation code with PKCE, scope `mcp:tools`) in clients that support it, or a Nexscope API key as `Authorization: Bearer nk-...`, which the tool pages call a compatibility option. The REST API takes the same key as a Bearer header. A person signs in and creates the key under API Access, API Keys. The full key is shown once, and keys can be expired, disabled or deleted, per the help page's troubleshooting. No key scopes, rotation rule or key-management API were found. Creative API key access needs an active subscription. Trial credits don't enable it. The OAuth metadata on api.nexscope.ai was not read (https://www.nexscope.ai/mcp-map/amazon-search, https://www.nexscope.ai/help/skills-external-access, https://github.com/nexscope-ai/nexscope-ecommerce-api, checked 2026-11-10).",
      "pricing": "paid",
      "pricingNotes": "Credits on a monthly subscription. A Free Trial gives 1,000 credits for 3 days with no card, at 1 API and 1 MCP request a second and 1 concurrent each, with no video API. Starter is $29 a month for 30,000 credits (3 requests a second, 2 concurrent), Growth $55 for 75,000 (5 and 4) and Pro $129 for 150,000 (10 and 8), each half price for the first period, with yearly billing and credits that reset monthly and don't roll over. Pay-as-you-go top-ups buy Data credits only, with no subscription. Each tool has its own credit cost, at least 10 for a Data API call. Amazon Search shows 'from 21 credits per call' and a recent average of 30. Refunds within 7 days if unused, per the terms. The home page listed Growth at $69 on the same day (https://www.nexscope.ai/pricing, https://www.nexscope.ai/mcp-map, https://www.nexscope.ai/terms, checked 2026-11-10).",
      "priceSummary": "$0.001 / credit",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 on the pricing page, the API quickstart, the MCP map, llms.txt, the visible part of the OpenAPI file or the GitHub repository on 2026-11-10. Credits come from a subscription or a Data top-up after a browser sign-in (https://www.nexscope.ai/pricing).",
        "endpoints": []
      },
      "toolCount": 382,
      "popularity": {
        "githubStars": null,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-11-10"
      },
      "docsUrl": "https://www.nexscope.ai/api-docs",
      "llmsTxt": "https://www.nexscope.ai/llms.txt",
      "openapi": "https://api.nexscope.ai/openapi.json",
      "registryName": "io.github.nexscope/ecommerce",
      "capabilities": [
        "web.extract",
        "shopping.search",
        "shopping.prices",
        "seo.keywords",
        "seo.backlinks",
        "search.serp",
        "image.generate",
        "image.edit",
        "video.generate",
        "video.image-to-video"
      ],
      "tags": [
        "hosted",
        "official",
        "closed-source",
        "mcp",
        "remote-mcp",
        "oauth",
        "api-key",
        "openapi",
        "llms-txt",
        "marketplace",
        "shopping",
        "images",
        "video",
        "credits",
        "subscription",
        "free-trial",
        "no-card",
        "new"
      ],
      "lastRelease": "2026-11-09",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 46.2,
        "grade": "D",
        "agentReady": false,
        "rank": 1191,
        "ranked": true,
        "rankOf": 1520,
        "categoryRank": 28,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 44,
          "maintenance": 65,
          "payments": 35,
          "reliability": 39,
          "schema": 64,
          "security": 41,
          "transparency": 41
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-11-10"
        },
        "negative": 0,
        "verdict": "An agent can reach Amazon, TikTok Shop, Temu, 1688 and other marketplace data, plus image and video models, on one credit balance through a remote MCP server with OAuth or a REST API with a public OpenAPI file. The connection loads 382 tools at once, and there is no status page, changelog or idempotency key.",
        "bestFor": "Agents that research ecommerce products, competitors, keywords, sourcing and patents across Amazon, TikTok Shop, Walmart, Temu, 1688 and other marketplaces, and that also make listing images and video, on one credit balance.",
        "strengths": [
          "Marketplace product, keyword, competitor and sourcing data across more than ten marketplaces behind one key and one MCP endpoint",
          "OAuth 2.1 with PKCE and a `mcp:tools` scope on the MCP server, or a Bearer key shown once",
          "A public OpenAPI 3.1 file and a GitHub repository with request and response definitions, samples and standard-library clients for every documented API",
          "Per-plan API and MCP request limits published, and a 3-day trial of 1,000 credits with no card",
          "1688 order, payment-link, receipt and cancel calls each need an explicit JSON `true` confirmation field"
        ],
        "weaknesses": [
          "The MCP connection advertises the full catalogue of 382 tools, with no toolsets or read-only subset",
          "No status page, SLA, public changelog or security.txt found",
          "No idempotency keys, and business errors answer HTTP 200 unless a header asks otherwise",
          "The privacy policy states no retention periods and names no hosting, AI or data suppliers",
          "Many Data definitions are field descriptors rather than JSON Schema, and the Amazon Search tool page omits the `keyword` argument its own examples pass"
        ],
        "agentNotes": [
          "Check the outer `code` is 0 before reading `data`, or send `X-Nexscope-Http-Status: semantic` to get HTTP error statuses.",
          "Call an image or video tool once, keep the `taskId`, and poll `nexscope_media_task_result`. A second call bills a second job.",
          "Read the tool's credit cost before a call. Each tool costs at least 10 credits and some cost over 300.",
          "Before you set a 1688 confirmation field to `true`, show the user the preview and get approval.",
          "If the server returns 429 or 503, wait for `Retry-After` when present and back off."
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "D",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 46.2
          }
        ],
        "editorialScores": {
          "ergonomics": 44,
          "maintenance": 65,
          "payments": 35,
          "reliability": 39,
          "schema": 64,
          "security": 41,
          "transparency": 33
        },
        "provenanceScore": 48,
        "checked": {
          "categories": {
            "ergonomics": "2026-11-10",
            "maintenance": "2026-11-10",
            "payments": "2026-11-10",
            "reliability": "2026-11-10",
            "schema": "2026-11-10",
            "security": "2026-11-10",
            "transparency": "2026-11-10"
          },
          "last": "2026-11-10",
          "oldest": "2026-11-10",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "http": "curl --fail-with-body -X POST 'https://api.nexscope.ai/api/skill-api/v1/skills/amazon-search/run' \\\n  -H \"Authorization: Bearer $NEXSCOPE_API_KEY\" \\\n  -H 'Content-Type: application/json' \\\n  -H 'X-Nexscope-Http-Status: semantic' \\\n  -d '{\"keyword\":\"phone case\",\"page\":1}'",
        "config": {
          "mcpServers": {
            "nexscope": {
              "headers": {
                "Authorization": "Bearer YOUR_NEXSCOPE_API_KEY"
              },
              "type": "streamableHttp",
              "url": "https://api.nexscope.ai/mcp"
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/web.extract",
        "tool": "https://letme.dev/nexscope"
      },
      "area": "web-data",
      "unitPrices": [
        {
          "item": "Nexscope credit (Starter)",
          "unit": "credit",
          "usd": 0.00097,
          "note": "$29 a month for 30,000 credits, half price in the first month. Credits reset monthly"
        },
        {
          "item": "Nexscope credit (Pro)",
          "unit": "credit",
          "usd": 0.00086,
          "note": "$129 a month for 150,000 credits"
        },
        {
          "item": "Amazon Search tool call (Starter)",
          "unit": "call",
          "usd": 0.029,
          "note": "A recent average of 30 credits, range 16 to 94, per the MCP tool page on 10 November 2026. About 20 results a page"
        },
        {
          "item": "Starter plan",
          "unit": "month",
          "usd": 29,
          "note": "30,000 credits, 3 API and 3 MCP requests a second, 2 concurrent each"
        }
      ],
      "provenance": {
        "legalEntity": "ECOCREATE TECHNOLOGY PTE. LTD.",
        "domain": "nexscope.ai",
        "domainRegistered": "2026-03-04",
        "domainNote": "RDAP (Identity Digital) gives nexscope.ai a registration date of 4 March 2026 through GoDaddy, with the registrant behind Domains By Proxy. The terms and privacy policy name ECOCREATE TECHNOLOGY PTE. LTD., 'a company incorporated in Singapore', with no registration number or street address.",
        "endpointOnVendorDomain": true,
        "terms": "https://www.nexscope.ai/terms",
        "privacy": "https://www.nexscope.ai/privacy",
        "statusPage": "",
        "changelog": "",
        "securityTxt": "none",
        "checked": "2026-11-10",
        "notes": [
          "The terms (last updated 8 October 2026) name ECOCREATE TECHNOLOGY PTE. LTD. under the laws of Singapore with SIAC arbitration seated in Singapore, cap liability at the amount paid in the six months before a claim, promise no availability, permit the official APIs and MCP integrations within plan limits, forbid bots and scrapers outside them, and give notice of material changes through the service or by email.",
          "The privacy policy (last updated 8 October 2026) names the same company, says uploaded materials are not used to train AI models, names Google Analytics, Microsoft Clarity, Ahrefs Analytics, Google Ads, X advertising and FirstPromoter, lists hosting, storage, AI processing, payment, email, support and authentication providers only by type, gives no retention periods ('this policy does not specify a single deletion deadline for all data') and mentions no DPA.",
          "https://www.nexscope.ai/.well-known/security.txt answered a client error. No status page or changelog is linked from the home page, llms.txt, the API quickstart or the MCP map.",
          "robots.txt on www.nexscope.ai gives `*` and twelve named crawlers, ClaudeBot among them, the same rules and disallows /api/ and /share/. Nothing there was fetched. api.nexscope.ai publishes no robots.txt (/robots.txt answers a JSON login error). Only /openapi.json and one GET to /mcp were sent there, per the batch. The MCP registry's /robots.txt answered a client error.",
          "firstReleased is 2026-08-07, the date on Nexscope's launch post ('Updated Aug 07, 2026', no earlier publication date shown), which names API, MCP and Skills as the ways to connect an agent and 1,000 free starting credits. The API repository dates its snapshot of an already public directory of 225 APIs to 10 September 2026, and the OpenAPI version label is 2026-08-28-public-catalog-v1. The domain dates from 4 March 2026 and the npm `nexscope` skills CLI from 20 March 2026, but neither reaches the API. lastRelease is 2026-11-09, when the 1688 procurement API contracts were synced as released."
        ],
        "score": 48
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/nexscope.json",
      "live": {
        "slug": "nexscope",
        "probe": {
          "target": "https://api.nexscope.ai/mcp",
          "method": "get",
          "lastAt": "2026-11-11T06:59:50.048088824Z",
          "lastOk": true,
          "lastStatus": 405,
          "lastMs": 305,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 271,
          "p95ms24h": 358,
          "samples24h": 43,
          "samples30d": 43,
          "days": [
            {
              "date": "2026-11-11",
              "probes": 43,
              "ok": 43
            }
          ],
          "since": "2026-11-11T02:53:20.057234625Z"
        },
        "githubStars": 18,
        "updatedAt": "2026-11-11T06:59:50.048088824Z"
      },
      "streak": {
        "days": 0,
        "from": "2026-11-11",
        "sinceWatching": true,
        "best": 0
      }
    },
    "answer": "ScrapingBee scores 59.5 (C) on agent readiness against Nexscope's 46.2 (D), and leads in 5 of 7 scored categories.",
    "b": {
      "slug": "scrapingbee",
      "name": "ScrapingBee",
      "vendor": "ScrapingBee (Oxylabs group)",
      "vendorUrl": "https://www.scrapingbee.com",
      "kind": "http-api",
      "category": "web-scrapers",
      "summary": "HTML API that fetches a URL through rotating, premium or stealth proxies with headless rendering, JavaScript scenarios, screenshots and CSS or AI extraction.",
      "url": "https://www.anchorterminal.com/tools/scrapingbee",
      "markdownUrl": "https://www.anchorterminal.com/tools/scrapingbee.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/scrapingbee.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/scrapingbee.json",
      "dns": "scrapingbee.grade.anchorterminal.com",
      "transports": [
        "http",
        "streamable-http"
      ],
      "remoteUrl": "https://app.scrapingbee.com/api/v1/",
      "packages": [
        {
          "registry": "pypi",
          "name": "scrapingbee"
        },
        {
          "registry": "npm",
          "name": "scrapingbee"
        },
        {
          "registry": "pypi",
          "name": "scrapingbee-cli"
        }
      ],
      "auth": "api-key",
      "authNotes": "The HTML API takes the key as a Bearer token in the Authorization header, and the Python (v2.2.0) and Node (v2.0.0) SDKs send it that way since 1 September 2026. The older api_key query parameter still works but is deprecated. remote-mcp.txt says the hosted MCP takes the key only as an api_key query parameter in its URL, \"not a Bearer header\", while the MCP configurations in the official CLI repository's Cursor, Kiro and Antigravity plugins (October 2026) send a Bearer header.",
      "pricing": "paid",
      "pricingNotes": "Trial of 1,000 credits, no card. Hobby $19 a month (75,000 credits, 25 concurrent), Freelance $49 (250,000, 50), Startup $99 (1 million, 100), Business $249 (3 million, 200), Business+ $599 (8 million, 400), and Enterprise plans from $999 (14 million, 500) to $5,799 (120 million, 900), excluding VAT. JavaScript rendering is on by default, so a basic call costs 5 credits, 1 without rendering, 10 or 25 with premium proxies and 75 with stealth proxies. Google search costs 10 credits (https://www.scrapingbee.com/pricing/).",
      "priceSummary": "$19 / mo",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402 in the pricing page, llms.txt or the HTML API and MCP references (checked 2026-09-30).",
        "endpoints": []
      },
      "toolCount": 18,
      "popularity": {
        "githubStars": 132,
        "npmWeekly": 48527,
        "pypiWeekly": 71721,
        "asOf": "2026-09-30"
      },
      "docsUrl": "https://www.scrapingbee.com/documentation/",
      "llmsTxt": "https://www.scrapingbee.com/llms.txt",
      "capabilities": [
        "web.scrape",
        "web.extract",
        "web.search",
        "scraping.proxies",
        "scraping.js-render",
        "scraping.anti-bot",
        "scraping.screenshot",
        "scraping.serp"
      ],
      "tags": [
        "hosted",
        "no-card",
        "mcp",
        "llms-txt",
        "proxies",
        "python",
        "typescript",
        "closed-source"
      ],
      "lastRelease": "2026-09-11",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 59.5,
        "grade": "C",
        "agentReady": false,
        "rank": 702,
        "ranked": true,
        "rankOf": 1520,
        "categoryRank": 20,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 68,
          "maintenance": 75,
          "payments": 40,
          "reliability": 75,
          "schema": 60,
          "security": 37,
          "transparency": 65
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-11-04"
        },
        "negative": 0,
        "verdict": "Dedicated Google, Amazon, Walmart, YouTube, ChatGPT and Gemini endpoints next to the general HTML API, with per-endpoint llms files and an auto mode that bills only the tier that works. The hosted MCP's own notes say it takes the key only as ?api_key= in its URL, and no API changelog or security.txt was found.",
        "bestFor": "Agents that mix general scraping with ready-made Google, Amazon and YouTube endpoints and want spend capped per call.",
        "strengths": [
          "Dedicated Google, Amazon, Walmart, YouTube, ChatGPT and Gemini endpoints next to the general HTML API",
          "Auto mode with a max_cost cap bills only the tier that works, and 429s and failures aren't billed",
          "Per-endpoint llms files plus a reference-notes file that tabulates 12 discrepancies and coverage notes in its own docs",
          "Five incidents in the 90 days to 4 November, each a degraded single component with no downtime shown",
          "The official CLI skills tell agents to treat scraped output as data and flag instruction-like content"
        ],
        "weaknesses": [
          "remote-mcp.txt says the hosted MCP only takes the key as ?api_key= in its URL",
          "JavaScript rendering on by default makes a plain call 5 credits instead of 1",
          "Only a one-off 1,000-credit trial, no monthly free tier",
          "No API changelog, security.txt, bug bounty or certification found",
          "HTML Scraping with Rendering, the default path, was degraded for about 11 hours on 21 October 2026"
        ],
        "agentNotes": [
          "Send render_js=false for static pages and files. It cuts the cost from 5 credits to 1",
          "Use mode=auto with max_cost=25 to stop it escalating to 75-credit stealth requests",
          "Keep the MCP URL with ?api_key= out of logs and shared configs",
          "Back off exponentially on 429 from the MCP, since its concurrency is shared across customers",
          "Expect 404 and 410 from the target to be billed. Other failures aren't"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 2,
        "avgRating": 4,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "C",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 59.5
          }
        ],
        "editorialScores": {
          "ergonomics": 68,
          "maintenance": 75,
          "payments": 40,
          "reliability": 75,
          "schema": 60,
          "security": 37,
          "transparency": 51
        },
        "provenanceScore": 78,
        "checked": {
          "categories": {
            "ergonomics": "2026-11-04",
            "maintenance": "2026-11-04",
            "payments": "2026-11-04",
            "reliability": "2026-11-04",
            "schema": "2026-11-04",
            "security": "2026-11-04",
            "transparency": "2026-11-04"
          },
          "last": "2026-11-04",
          "lastMoved": "2026-11-04",
          "oldest": "2026-11-04",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "http": "curl --get 'https://app.scrapingbee.com/api/v1/' \\\n  --header \"Authorization: Bearer $SCRAPINGBEE_API_KEY\" \\\n  --data-urlencode 'url=https://example.com' --data-urlencode 'render_js=false'",
        "claudeCode": "claude mcp add --transport http scrapingbee \"https://mcp.scrapingbee.com/mcp?api_key=$SCRAPINGBEE_API_KEY\"",
        "config": {
          "mcpServers": {
            "scrapingbee": {
              "args": [
                "mcp-remote",
                "https://mcp.scrapingbee.com/mcp?api_key=${SCRAPINGBEE_API_KEY}"
              ],
              "command": "npx"
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/web.scrape",
        "tool": "https://letme.dev/scrapingbee"
      },
      "area": "web-data",
      "unitPrices": [
        {
          "item": "Hobby plan",
          "unit": "month",
          "usd": 19,
          "note": "75,000 credits, 25 concurrent, excluding VAT"
        },
        {
          "item": "Freelance plan",
          "unit": "month",
          "usd": 49,
          "note": "250,000 credits, 50 concurrent"
        },
        {
          "item": "Startup plan",
          "unit": "month",
          "usd": 99,
          "note": "1 million credits, 100 concurrent"
        },
        {
          "item": "Default request on Hobby",
          "unit": "1k-requests",
          "usd": 1.27,
          "note": "JavaScript rendering on by default, 5 credits each"
        },
        {
          "item": "Request without rendering on Hobby",
          "unit": "1k-requests",
          "usd": 0.25,
          "note": "render_js=false, 1 credit each"
        }
      ],
      "provenance": {
        "legalEntity": "VostokInc SAS",
        "domain": "scrapingbee.com",
        "domainRegistered": "2019-09-18",
        "endpointOnVendorDomain": true,
        "terms": "https://www.scrapingbee.com/terms-and-conditions/",
        "privacy": "https://www.scrapingbee.com/privacy-policy/",
        "statusPage": "https://status.scrapingbee.com",
        "changelog": "",
        "securityTxt": "none",
        "checked": "2026-09-30",
        "notes": [
          "VostokInc is a Paris société par actions simplifiée, registration number 843 352 683, per the legal notices at https://www.scrapingbee.com/legal-notices/.",
          "Owned by the Oxylabs company group since June 2025. The terms still name VostokInc."
        ],
        "score": 78
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/scrapingbee.json",
      "live": {
        "slug": "scrapingbee",
        "probe": {
          "target": "https://app.scrapingbee.com/api/v1/",
          "method": "get",
          "lastAt": "2026-11-11T06:59:59.782077519Z",
          "lastOk": true,
          "lastStatus": 400,
          "lastMs": 102,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 99.99,
          "p50ms24h": 54,
          "p95ms24h": 122,
          "samples24h": 244,
          "samples30d": 7731,
          "days": [
            {
              "date": "2026-10-11",
              "probes": 247,
              "ok": 247
            },
            {
              "date": "2026-10-12",
              "probes": 247,
              "ok": 247
            },
            {
              "date": "2026-10-13",
              "probes": 248,
              "ok": 247
            },
            {
              "date": "2026-10-14",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-15",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-16",
              "probes": 252,
              "ok": 252
            },
            {
              "date": "2026-10-17",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-18",
              "probes": 256,
              "ok": 256
            },
            {
              "date": "2026-10-19",
              "probes": 255,
              "ok": 255
            },
            {
              "date": "2026-10-20",
              "probes": 252,
              "ok": 252
            },
            {
              "date": "2026-10-21",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-22",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-23",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-24",
              "probes": 251,
              "ok": 251
            },
            {
              "date": "2026-10-25",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-10-26",
              "probes": 252,
              "ok": 252
            },
            {
              "date": "2026-10-27",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-28",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-10-29",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-30",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-31",
              "probes": 251,
              "ok": 251
            },
            {
              "date": "2026-11-01",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-11-02",
              "probes": 250,
              "ok": 250
            },
            {
              "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": 243,
              "ok": 243
            },
            {
              "date": "2026-11-08",
              "probes": 243,
              "ok": 243
            },
            {
              "date": "2026-11-09",
              "probes": 243,
              "ok": 243
            },
            {
              "date": "2026-11-10",
              "probes": 244,
              "ok": 244
            },
            {
              "date": "2026-11-11",
              "probes": 72,
              "ok": 72
            }
          ],
          "outages": [
            {
              "start": "2026-10-06T05:06:59.544908317Z",
              "end": "2026-10-06T06:01:15.865578543Z",
              "note": "HTTP 503 server error"
            }
          ],
          "since": "2026-10-06T05:06:59.544908317Z"
        },
        "vendorStatus": {
          "page": "https://status.scrapingbee.com",
          "indicator": "none",
          "summary": "All Systems Operational",
          "checkedAt": "2026-11-11T06:55:54.338965458Z"
        },
        "versions": [
          {
            "registry": "npm",
            "name": "scrapingbee",
            "version": "2.0.0",
            "seenAt": "2026-11-11T06:34:24.294043428Z"
          },
          {
            "registry": "pypi",
            "name": "scrapingbee",
            "version": "2.2.0",
            "released": "2026-09-01",
            "seenAt": "2026-11-11T06:34:23.076420721Z"
          },
          {
            "registry": "pypi",
            "name": "scrapingbee-cli",
            "version": "1.6.0",
            "released": "2026-09-11",
            "seenAt": "2026-11-11T06:34:25.070634621Z"
          }
        ],
        "npmWeekly": 71876,
        "pypiWeekly": 63967,
        "securityTxt": {
          "url": "https://scrapingbee.com/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-11-10T16:07:59.320472835Z"
        },
        "llmsTxt": {
          "url": "https://www.scrapingbee.com/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-11-10T15:44:33.540528101Z"
        },
        "domain": {
          "domain": "scrapingbee.com",
          "registered": "2019-09-18",
          "source": "https://rdap.verisign.com/com/v1/domain/scrapingbee.com",
          "checkedAt": "2026-11-08T15:09:32.62189228Z"
        },
        "pages": [
          {
            "url": "https://www.scrapingbee.com/pricing/",
            "kind": "pricing",
            "status": 200,
            "checkedAt": "2026-11-10T16:45:45.31912885Z",
            "changedAt": "2026-11-03T08:10:43.015244116Z",
            "fingerprint": "ca46bd8fffa9"
          },
          {
            "url": "https://www.scrapingbee.com/privacy-policy/",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-11-10T16:45:47.593049923Z",
            "changedAt": "2026-11-03T08:10:45.094587098Z",
            "fingerprint": "d3c8d33e1f94"
          },
          {
            "url": "https://www.scrapingbee.com/terms-and-conditions/",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-11-10T16:45:49.53562534Z",
            "changedAt": "2026-11-03T08:10:47.137449418Z",
            "fingerprint": "5f232ff741ff"
          }
        ],
        "mcpTools": {
          "url": "https://mcp.scrapingbee.com/mcp?api_key=$SCRAPINGBEE_API_KEY",
          "checkedAt": "2026-11-11T02:44:28.53022594Z",
          "status": "ok",
          "protocol": "2025-11-25",
          "tools": [
            {
              "name": "get_amazon_search_results",
              "title": "Amazon search results",
              "description": "Scrape Amazon search results using ScrapingBee.\n\nScope: one query per call. To run many queries in one pass, or to write\nresults to disk instead of into the conversation, use the ScrapingBee CLI —\n`scrapingbee \u003ccommand\u003e --input-file queries.txt --output-dir results`.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "add_html": {
                    "default": false,
                    "description": "Whether to return the HTML along with the search results.",
                    "type": "boolean"
                  },
                  "autoselect_variant": {
                    "default": false,
                    "description": "Automatically select the default/most-popular variant.",
                    "type": "boolean"
                  },
                  "category_id": {
                    "default": "",
                    "description": "The category ID to use for the search.",
                    "type": "string"
                  },
                  "country": {
                    "default": "",
                    "description": "The country code for localization (e.g., us, uk, de).\nDo not combine with a matching domain (e.g., country=fr\u0026domain=fr).",
                    "type": "string"
                  },
                  "currency": {
                    "default": "",
                    "description": "The currency code (ISO 4217) to display results (e.g., USD, GBP, EUR).",
                    "type": "string"
                  },
                  "domain": {
                    "default": "com",
                    "description": "The Amazon domain to use for the search (e.g., com, co.uk, de).",
                    "type": "string"
                  },
                  "language": {
                    "default": "",
                    "description": "The language code to display results (e.g., en, fr, de).",
                    "type": "string"
                  },
                  "light_request": {
                    "default": true,
                    "description": "Whether to use a light request or not.",
                    "type": "boolean"
                  },
                  "merchant_id": {
                    "default": "",
                    "description": "The merchant ID to use for the search.",
                    "type": "string"
                  },
                  "pages": {
                    "default": 1,
                    "description": "The number of pages to scrape.",
                    "type": "integer"
                  },
                  "query": {
                    "description": "The search query to perform.",
                    "type": "string"
                  },
                  "screenshot": {
                    "default": false,
                    "description": "Force a browser screenshot (returns base64 image).",
                    "type": "boolean"
                  },
                  "sort_by": {
                    "default": "",
                    "description": "The sort order to use for the search\n(most_recent, price_low_to_high, price_high_to_low, featured,\naverage_review, bestsellers).",
                    "type": "string"
                  },
                  "start_page": {
                    "default": 1,
                    "description": "The page number to start scraping from.",
                    "type": "integer"
                  },
                  "tag": {
                    "default": "",
                    "description": "Response-header label only.",
                    "type": "string"
                  },
                  "zip_code": {
                    "default": "",
                    "description": "The ZIP code to use for delivery localization.",
                    "type": "string"
                  }
                },
                "required": [
                  "query"
                ],
                "type": "object"
              },
              "outputSchema": {
                "additionalProperties": true,
                "type": "object"
              },
              "annotations": {
                "readOnlyHint": true
              }
            },
            {
              "name": "get_amazon_product_details",
              "title": "Amazon product details",
              "description": "Scrape Amazon product details using ScrapingBee.\n\nScope: one query per call. To run many queries in one pass, or to write\nresults to disk instead of into the conversation, use the ScrapingBee CLI —\n`scrapingbee \u003ccommand\u003e --input-file queries.txt --output-dir results`.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "add_html": {
                    "default": false,
                    "description": "Whether to return the HTML along with the product details.",
                    "type": "boolean"
                  },
                  "autoselect_variant": {
                    "default": false,
                    "description": "Whether to automatically select product variant if\napplicable.",
                    "type": "boolean"
                  },
                  "country": {
                    "default": "",
                    "description": "The country code for localization (e.g., us, uk, de).\nDo not combine with a matching domain (e.g., country=fr\u0026domain=fr).",
                    "type": "string"
                  },
                  "currency": {
                    "default": "",
                    "description": "The currency code (ISO 4217) to display results (e.g., USD, GBP, EUR).",
                    "type": "string"
                  },
                  "domain": {
                    "default": "",
                    "description": "The Amazon domain to use for the search (e.g., com, co.uk, de).",
                    "type": "string"
                  },
                  "language": {
                    "default": "",
                    "description": "The language code to display results (e.g., en, fr, de).",
                    "type": "string"
                  },
                  "light_request": {
                    "default": true,
                    "description": "Whether to use a light request or not.",
                    "type": "boolean"
                  },
                  "query": {
                    "description": "Search term (must be a valid 10-character ASIN code)",
                    "type": "string"
                  },
                  "screenshot": {
                    "default": false,
                    "description": "Force a browser screenshot (returns base64 image).",
                    "type": "boolean"
                  },
                  "tag": {
                    "default": "",
                    "description": "Response-header label only.",
                    "type": "string"
                  },
                  "zip_code": {
                    "default": "",
                    "description": "The zip code to use for delivery localization.",
                    "type": "string"
                  }
                },
                "required": [
                  "query"
                ],
                "type": "object"
              },
              "outputSchema": {
                "additionalProperties": true,
                "type": "object"
              },
              "annotations": {
                "readOnlyHint": true
              }
            },
            {
              "name": "get_amazon_pricing",
              "title": "Amazon pricing",
              "description": "Retrieve current Amazon product pricing and seller offers for a given ASIN.\n\nScope: one query per call. To run many queries in one pass, or to write\nresults to disk instead of into the conversation, use the ScrapingBee CLI —\n`scrapingbee \u003ccommand\u003e --input-file queries.txt --output-dir results`.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "add_html": {
                    "default": false,
                    "description": "Include page HTML in the response.",
                    "type": "boolean"
                  },
                  "asin": {
                    "description": "Required 10-character ASIN from an Amazon product URL.",
                    "type": "string"
                  },
                  "country": {
                    "default": "",
                    "description": "ISO country code for localization.\nDo not combine with a matching domain (e.g., country=fr\u0026domain=fr).",
                    "type": "string"
                  },
                  "currency": {
                    "default": "",
                    "description": "ISO 4217 display currency.",
                    "type": "string"
                  },
                  "domain": {
                    "default": "com",
                    "description": "Amazon domain (default com).",
                    "type": "string"
                  },
                  "language": {
                    "default": "",
                    "description": "ISO language code.",
                    "type": "string"
                  },
                  "light_request": {
                    "default": true,
                    "description": "Use a light request (default True) or browser-rendered (False).",
                    "type": "boolean"
                  },
                  "tag": {
                    "default": "",
                    "description": "Response-header label only.",
                    "type": "string"
                  },
                  "zip_code": {
                    "default": "",
                    "description": "ZIP code for delivery localization.",
                    "type": "string"
                  }
                },
                "required": [
                  "asin"
                ],
                "type": "object"
              },
              "outputSchema": {
                "additionalProperties": true,
                "type": "object"
              },
              "annotations": {
                "readOnlyHint": true
              }
            },
            {
              "name": "ask_chatgpt",
              "title": "Ask ChatGPT",
              "description": "This tool allows you to send a prompt to OpenAI's ChatGPT via ScrapingBee\nand get back the generated response.\n\nScope: one query per call. To run many queries in one pass, or to write\nresults to disk instead of into the conversation, use the ScrapingBee CLI —\n`scrapingbee \u003ccommand\u003e --input-file queries.txt --output-dir results`.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "add_html": {
                    "default": false,
                    "description": "Whether to include the full HTML of the page in the results.",
                    "type": "boolean"
                  },
                  "country_code": {
                    "default": "",
                    "description": "ISO country code the request should originate from\n(affects web results when search is enabled).",
                    "type": "string"
                  },
                  "prompt": {
                    "description": "The prompt to send to ChatGPT.",
                    "type": "string"
                  },
                  "search": {
                    "default": false,
                    "description": "Whether to enable web search capability for the prompt.",
                    "type": "boolean"
                  },
                  "tag": {
                    "default": "",
                    "description": "Response-header label only.",
                    "type": "string"
                  }
                },
                "required": [
                  "prompt"
                ],
                "type": "object"
              },
              "outputSchema": {
                "additionalProperties": true,
                "type": "object"
              },
              "annotations": {
                "readOnlyHint": true
              }
            },
            {
              "name": "fast_search",
              "title": "Fast web search",
              "description": "Search the web using ScrapingBee's Fast Search API and return structured\nresults. This is the PRIMARY tool for web searches — it returns clean\norganic results and top stories in under one second at a lower credit cost.\n\nUSE THIS TOOL FIRST for any general web search. Only fall back to\nget_google_search_results if you need specialized search types such as\nnews, maps, Google Lens, shopping, image search, or Google AI mode.\n\nScope: one query per call. To run many queries in one pass, or to write\nresults to disk instead of into the conversation, use the ScrapingBee CLI —\n`scrapingbee \u003ccommand\u003e --input-file queries.txt --output-dir results`.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "country_code": {
                    "default": "us",
                    "description": "ISO 3166-1 alpha-2 country code to localize results\n(Example: us, fr, de, in, gb, br, etc.).",
                    "type": "string"
                  },
                  "language": {
                    "default": "en",
                    "description": "Language of the search results (Example: en, fr, de, etc.).",
                    "type": "string"
                  },
                  "page": {
                    "default": 1,
                    "description": "The page number to return. Default is 1,\nuse page=2 for the second page, etc.",
                    "type": "integer"
                  },
                  "search": {
                    "description": "The search query to use.\nMake sure to URL-encode special characters such as :, \u0026 or +.",
                    "type": "string"
                  },
                  "tag": {
                    "default": "",
                    "description": "Response-header label only.",
                    "type": "string"
                  }
                },
                "required": [
                  "search"
                ],
                "type": "object"
              },
              "outputSchema": {
                "additionalProperties": true,
                "type": "object"
              },
              "annotations": {
                "readOnlyHint": true
              }
            },
            {
              "name": "ask_gemini",
              "title": "Ask Gemini",
              "description": "Ask Gemini through ScrapingBee and receive citation objects when available.\n\nScope: one query per call. To run many queries in one pass, or to write\nresults to disk instead of into the conversation, use the ScrapingBee CLI —\n`scrapingbee \u003ccommand\u003e --input-file queries.txt --output-dir results`.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "add_html": {
                    "default": false,
                    "description": "Whether to return the full HTML of searched pages.",
                    "type": "boolean"
                  },
                  "country_code": {
                    "default": "",
                    "description": "ISO country code to set request geolocation.",
                    "type": "string"
                  },
                  "prompt": {
                    "description": "The prompt to send to Gemini.",
                    "type": "string"
                  },
                  "tag": {
                    "default": "",
                    "description": "Response-header label only.",
                    "type": "string"
                  }
                },
                "required": [
                  "prompt"
                ],
                "type": "object"
              },
              "outputSchema": {
                "additionalProperties": true,
                "type": "object"
              },
              "annotations": {
                "readOnlyHint": true
              }
            },
            {
              "name": "get_google_search_results",
              "title": "Google search results",
              "description": "This is a FALLBACK tool —\nuse fast_search first for general web searches. Only use this tool when\nyou need specialized search types that fast_search does not support:\nnews, maps, Google Lens, shopping, image search, or Google AI mode.\n\nScrape Google search results using ScrapingBee and return the results.\nThis tool can scrape normal results, news results, maps results, search\nusing google lens, shopping related results, image results, and get the result from\nGoogle's AI mode.\nIt can even return the HTML along with the search results.\n\nScope: one query per call. To run many queries in one pass, or to write\nresults to disk instead of into the conversation, use the ScrapingBee CLI —\n`scrapingbee \u003ccommand\u003e --input-file queries.txt --output-dir results`.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "add_html": {
                    "default": false,
                    "description": "Whether to return the HTML along with the search results.",
                    "type": "boolean"
                  },
                  "country_code": {
                    "default": "us",
                    "description": "The country code to use for the search\n(Example: us, fr, de, etc.).",
                    "type": "string"
                  },
                  "date_range": {
                    "default": "",
                    "description": "Filter by date range: past_hour, past_day, past_week,\npast_month, past_year. Only for classic, news, and images.",
                    "type": "string"
                  },
                  "device": {
                    "default": "desktop",
                    "description": "The device to use for the search (desktop, mobile).",
                    "type": "string"
                  },
                  "extra_params": {
                    "default": "",
                    "description": "Extra parameters to pass to the search (Example: tbs=qdr:d\u0026udm=7).",
                    "type": "string"
                  },
                  "language": {
                    "default": "en",
                    "description": "The language to use for the search (Example: en, fr, de, etc.).",
                    "type": "string"
                  },
                  "latitude": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Latitude in decimal degrees for geographic searches."
                  },
                  "light_request": {
                    "default": true,
                    "description": "Whether to use a light request or not.",
                    "type": "boolean"
                  },
                  "longitude": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Longitude in decimal degrees for geographic searches."
                  },
                  "max_price": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Shopping maximum price filter."
                  },
                  "min_price": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Shopping minimum price filter."
                  },
                  "nfpr": {
                    "default": false,
                    "description": "Whether to disable Google's autocorrection feature or not.",
                    "type": "boolean"
                  },
                  "page": {
                    "default": 1,
                    "description": "The page number to return.",
                    "type": "integer"
                  },
                  "pages": {
                    "default": 1,
                    "description": "Number of pages to aggregate (max 10, default 1).",
                    "type": "integer"
                  },
                  "radius": {
                    "anyOf": [
                      {
                        "type": "integer"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Radius in meters (requires latitude and longitude)."
                  },
                  "search": {
                    "description": "The search query to use.",
                    "type": "string"
                  },
                  "search_type": {
                    "default": "classic",
                    "description": "The search type to use (classic: normal results,\nnews: news results [not available if device is mobile], maps: maps results,\nlens: search using google lens [requires image url as search parameter],\nshopping: shopping related results, images: image results,\nai_mode: get the result from Google's AI mode, ads: paid-ad results).",
                    "type": "string"
                  },
                  "sort_by": {
                    "default": "",
                    "description": "Shopping sort order: relevance, reviews, price_asc, price_desc.",
                    "type": "string"
                  },
                  "tag": {
                    "default": "",
                    "description": "Response-header label only.",
                    "type": "string"
                  }
                },
                "required": [
                  "search"
                ],
                "type": "object"
              },
              "outputSchema": {
                "additionalProperties": true,
                "type": "object"
              },
              "annotations": {
                "readOnlyHint": true
              }
            },
            {
              "name": "get_page_text",
              "title": "Get page text",
              "description": "Scrape a URL using ScrapingBee and return the page content in\nMarkdown or Text format.\n\nScope: one URL per call, with the result returned into the conversation.\nFor many URLs, a whole site, output written to a file or directory,\nresumable jobs, or a scheduled re-run, use the ScrapingBee CLI instead —\n`scrapingbee scrape --input-file urls.txt --output-dir results`,\n`scrapingbee crawl URL --save-pattern ...`, `scrapingbee schedule --every`.\nThis server has no batch, crawl, file-output or scheduling equivalent.\n\nDocs: https://www.scrapingbee.com/documentation/remote-mcp/",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "ai_query": {
                    "default": "",
                    "description": "Natural-language question for AI extraction.",
                    "type": "string"
                  },
                  "ai_selector": {
                    "default": "",
                    "description": "CSS selector to focus AI extraction on part of the page.",
                    "type": "string"
                  },
                  "auto_mode": {
                    "default": true,
                    "description": "On by default — ScrapingBee automatically picks the cheapest\nconfiguration that successfully fetches the page, escalating proxy\nstrength only as needed (you are charged only for the winning\nconfig). To choose a configuration yourself instead, use one of:\nauto_mode=False for the classic tier (no proxy, cheapest),\npremium_proxy=True, or stealth_proxy=True — the two proxy flags\noverride auto_mode on their own, so auto_mode=False is only needed\nfor the classic tier. Setting render_js also switches to manual.",
                    "type": "boolean"
                  },
                  "block_resources": {
                    "default": true,
                    "description": "Block images/CSS to speed up rendering.",
                    "type": "boolean"
                  },
                  "cookies": {
                    "default": "",
                    "description": "Semicolon-separated cookies to send to the target.",
                    "type": "string"
                  },
                  "country_code": {
                    "default": "",
                    "description": "ISO 3166-1 alpha-2 country code (e.g. \"fr\", \"us\") to\nroute the request through an IP in that country. Only takes effect\nwhen premium_proxy or stealth_proxy is True.",
                    "type": "string"
                  },
                  "custom_google": {
                    "default": false,
                    "description": "Set to True if the url is a google domain in the following\nformat: \u003csubdomain\u003e.google.\u003ctop-level-domain\u003e\n(Example: translate.google.com, mail.google.com, www.google.co.in etc)",
                    "type": "boolean"
                  },
                  "device": {
                    "default": "desktop",
                    "description": "desktop (default) or mobile.",
                    "type": "string"
                  },
                  "js_scenario": {
                    "default": "",
                    "description": "Stringified JSON object of browser interaction instructions.",
                    "type": "string"
                  },
                  "max_cost": {
                    "default": 0,
                    "description": "Optional credit ceiling for auto_mode (integer \u003e= 1). The request\nwill not escalate to a configuration costing more than this many credits.\n0 means no ceiling. Ignored unless auto_mode is True.",
                    "type": "integer"
                  },
                  "premium_proxy": {
                    "default": false,
                    "description": "Manual option: use a premium proxy (middle tier of\nclassic/premium/stealth). Setting this disables auto_mode.",
                    "type": "boolean"
                  },
                  "render_js": {
                    "anyOf": [
                      {
                        "type": "boolean"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Whether to use headless-browser rendering.\nOmit to use the API default (true). Setting this explicitly\nswitches the request to manual configuration (disables auto_mode)."
                  },
                  "return_page_markdown": {
                    "default": true,
                    "description": "Whether to return the page content in Markdown format.",
                    "type": "boolean"
                  },
                  "return_page_text": {
                    "default": false,
                    "description": "Whether to return the page content in Text format.",
                    "type": "boolean"
                  },
                  "session_id": {
                    "anyOf": [
                      {
                        "type": "integer"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Integer 0–10000000 to reuse an IP for up to 5 minutes."
                  },
                  "stealth_proxy": {
                    "default": false,
                    "description": "Manual option: use a stealth proxy (strongest tier of\nclassic/premium/stealth). Setting this disables auto_mode.",
                    "type": "boolean"
                  },
                  "timeout": {
                    "default": 140000,
                    "description": "Request timeout in milliseconds (1000–140000, default 140000).",
                    "type": "integer"
                  },
                  "url": {
                    "description": "The URL of the page to scrape.",
                    "type": "string"
                  },
                  "wait": {
                    "default": 0,
                    "description": "Milliseconds to wait after page load (0–35000).",
                    "type": "integer"
                  },
                  "wait_browser": {
                    "default": "domcontentloaded",
                    "description": "domcontentloaded (default), load, networkidle0, networkidle2.",
                    "type": "string"
                  },
                  "wait_for": {
                    "default": "",
                    "description": "CSS or XPath selector to wait for before returning.",
                    "type": "string"
                  },
                  "window_height": {
                    "default": 1080,
                    "description": "Viewport height (default 1080).",
                    "type": "integer"
                  },
                  "window_width": {
                    "default": 1920,
                    "description": "Viewport width (default 1920).",
                    "type": "integer"
                  }
                },
                "required": [
                  "url"
                ],
                "type": "object"
              },
              "outputSchema": {
                "properties": {
                  "result": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "additionalProperties": true,
                        "type": "object"
                      }
                    ]
                  }
                },
                "required": [
                  "result"
                ],
                "type": "object",
                "x-fastmcp-wrap-result": true
              },
              "annotations": {
                "readOnlyHint": true
              }
            },
            {
              "name": "get_page_html",
              "title": "Get page HTML",
              "description": "Scrape a URL using ScrapingBee and return the page content in HTML.\n\nScope: one URL per call, with the result returned into the conversation.\nFor many URLs, a whole site, output written to a file or directory,\nresumable jobs, or a scheduled re-run, use the ScrapingBee CLI instead —\n`scrapingbee scrape --input-file urls.txt --output-dir results`,\n`scrapingbee crawl URL --save-pattern ...`, `scrapingbee schedule --every`.\nThis server has no batch, crawl, file-output or scheduling equivalent.\n\nDocs: https://www.scrapingbee.com/documentation/remote-mcp/",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "ai_query": {
                    "default": "",
                    "description": "Natural-language question for AI extraction.",
                    "type": "string"
                  },
                  "ai_selector": {
                    "default": "",
                    "description": "CSS selector to focus AI extraction on part of the page.",
                    "type": "string"
                  },
                  "auto_mode": {
                    "default": true,
                    "description": "On by default — ScrapingBee automatically picks the cheapest\nconfiguration that successfully fetches the page, escalating proxy\nstrength only as needed (you are charged only for the winning\nconfig). To choose a configuration yourself instead, use one of:\nauto_mode=False for the classic tier (no proxy, cheapest),\npremium_proxy=True, or stealth_proxy=True — the two proxy flags\noverride auto_mode on their own, so auto_mode=False is only needed\nfor the classic tier. Setting render_js also switches to manual.",
                    "type": "boolean"
                  },
                  "block_resources": {
                    "default": true,
                    "description": "Block images/CSS to speed up rendering.",
                    "type": "boolean"
                  },
                  "cookies": {
                    "default": "",
                    "description": "Semicolon-separated cookies to send to the target.",
                    "type": "string"
                  },
                  "country_code": {
                    "default": "",
                    "description": "ISO 3166-1 alpha-2 country code (e.g. \"fr\", \"us\") to\nroute the request through an IP in that country. Only takes effect\nwhen premium_proxy or stealth_proxy is True.",
                    "type": "string"
                  },
                  "custom_google": {
                    "default": false,
                    "description": "Set to True if the url is a google domain in the following\nformat: \u003csubdomain\u003e.google.\u003ctop-level-domain\u003e\n(Example: translate.google.com, mail.google.com, www.google.co.in etc)",
                    "type": "boolean"
                  },
                  "device": {
                    "default": "desktop",
                    "description": "desktop (default) or mobile.",
                    "type": "string"
                  },
                  "js_scenario": {
                    "default": "",
                    "description": "Stringified JSON object of browser interaction instructions.",
                    "type": "string"
                  },
                  "max_cost": {
                    "default": 0,
                    "description": "Optional credit ceiling for auto_mode (integer \u003e= 1). The request\nwill not escalate to a configuration costing more than this many credits.\n0 means no ceiling. Ignored unless auto_mode is True.",
                    "type": "integer"
                  },
                  "premium_proxy": {
                    "default": false,
                    "description": "Manual option: use a premium proxy (middle tier of\nclassic/premium/stealth). Setting this disables auto_mode.",
                    "type": "boolean"
                  },
                  "render_js": {
                    "anyOf": [
                      {
                        "type": "boolean"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Whether to use headless-browser rendering.\nOmit to use the API default (true). Setting this explicitly\nswitches the request to manual configuration (disables auto_mode)."
                  },
                  "session_id": {
                    "anyOf": [
                      {
                        "type": "integer"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Integer 0–10000000 to reuse an IP for up to 5 minutes."
                  },
                  "stealth_proxy": {
                    "default": false,
                    "description": "Manual option: use a stealth proxy (strongest tier of\nclassic/premium/stealth). Setting this disables auto_mode.",
                    "type": "boolean"
                  },
                  "timeout": {
                    "default": 140000,
                    "description": "Request timeout in milliseconds (1000–140000, default 140000).",
                    "type": "integer"
                  },
                  "url": {
                    "description": "The URL of the page to scrape.",
                    "type": "string"
                  },
                  "wait": {
                    "default": 0,
                    "description": "Milliseconds to wait after page load (0–35000).",
                    "type": "integer"
                  },
                  "wait_browser": {
                    "default": "domcontentloaded",
                    "description": "domcontentloaded (default), load, networkidle0, networkidle2.",
                    "type": "string"
                  },
                  "wait_for": {
                    "default": "",
                    "description": "CSS or XPath selector to wait for before returning.",
                    "type": "string"
                  },
                  "window_height": {
                    "default": 1080,
                    "description": "Viewport height (default 1080).",
                    "type": "integer"
                  },
                  "window_width": {
                    "default": 1920,
                    "description": "Viewport width (default 1920).",
                    "type": "integer"
                  }
                },
                "required": [
                  "url"
                ],
                "type": "object"
              },
              "outputSchema": {
                "properties": {
                  "result": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "additionalProperties": true,
                        "type": "object"
                      }
                    ]
                  }
                },
                "required": [
                  "result"
                ],
                "type": "object",
                "x-fastmcp-wrap-result": true
              },
              "annotations": {
                "readOnlyHint": true
              }
            },
            {
              "name": "extract_page_data",
              "title": "Extract page data",
              "description": "Scrape a URL using ScrapingBee and extract specific data using\nCSS or XPath selectors.\n\nScope: one URL per call, with the result returned into the conversation.\nFor many URLs, a whole site, output written to a file or directory,\nresumable jobs, or a scheduled re-run, use the ScrapingBee CLI instead —\n`scrapingbee scrape --input-file urls.txt --output-dir results`,\n`scrapingbee crawl URL --save-pattern ...`, `scrapingbee schedule --every`.\nThis server has no batch, crawl, file-output or scheduling equivalent.\n\nDocs: https://www.scrapingbee.com/documentation/remote-mcp/",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "ai_extract_rules": {
                    "default": "",
                    "description": "JSON string of AI extraction rules.",
                    "type": "string"
                  },
                  "ai_selector": {
                    "default": "",
                    "description": "CSS selector to focus AI extraction on part of the page.",
                    "type": "string"
                  },
                  "auto_mode": {
                    "default": true,
                    "description": "On by default — ScrapingBee automatically picks the cheapest\nconfiguration that successfully fetches the page, escalating proxy\nstrength only as needed (you are charged only for the winning\nconfig). To choose a configuration yourself instead, use one of:\nauto_mode=False for the classic tier (no proxy, cheapest),\npremium_proxy=True, or stealth_proxy=True — the two proxy flags\noverride auto_mode on their own, so auto_mode=False is only needed\nfor the classic tier. Setting render_js also switches to manual.",
                    "type": "boolean"
                  },
                  "block_resources": {
                    "default": true,
                    "description": "Block images/CSS to speed up rendering.",
                    "type": "boolean"
                  },
                  "cookies": {
                    "default": "",
                    "description": "Semicolon-separated cookies to send to the target.",
                    "type": "string"
                  },
                  "country_code": {
                    "default": "",
                    "description": "ISO 3166-1 alpha-2 country code (e.g. \"fr\", \"us\") to\nroute the request through an IP in that country. Only takes effect\nwhen premium_proxy or stealth_proxy is True.",
                    "type": "string"
                  },
                  "custom_google": {
                    "default": false,
                    "description": "Set to True if the url is a google domain in the following\nformat: \u003csubdomain\u003e.google.\u003ctop-level-domain\u003e\n(Example: translate.google.com, mail.google.com, www.google.co.in etc)",
                    "type": "boolean"
                  },
                  "device": {
                    "default": "desktop",
                    "description": "desktop (default) or mobile.",
                    "type": "string"
                  },
                  "extract_rules": {
                    "description": "A JSON string defining extraction rules.\n\n          SIMPLE SYNTAX:\n          Use {\"key_name\": \"css_or_xpath_selector\"} format.\n          - CSS selector example: {\"title\": \"h1\", \"price\": \"span.price\"}\n          - XPath selector example:\n                {\"title\": \"//h1\", \"items\": \"//div[@class='item']\"}\n          - Extract attribute value of an element using @\u003cattribute\u003e\n                or if you are using extended syntax \u003celement\u003e@\u003cattribute\u003e,\n                for example: {\"image\": \"img@src\"},\n                \"link\": {\"selector\": \"a\",\"output\": \"@href\"}\n\n          Note: Selectors starting with \"/\" are treated as XPath,\n          otherwise CSS.\n\n          EXTENDED SYNTAX:\n          For more control, use a dict with these options:\n          - \"selector\": CSS or XPath selector string (required)\n          - \"type\": \"item\" (single element, default) or\n                \"list\" (multiple elements)\n          - \"output\": It is also possible to add extraction rules inside\n                the output option in order to create powerful extractors.\n\n          Extended example:\n           {\n                \"title\" : \"h1\",\n                \"subtitle\" : \"#subtitle\",\n                \"articles\": {\n                    \"selector\": \".card\",\n                    \"type\": \"list\",\n                    \"output\": {\n                        \"title\": \".post-title\",\n                        \"link\": {\n                            \"selector\": \".post-title\",\n                            \"output\": \"@href\"\n                        },\n                        \"description\": \".post-description\"\n                    }\n                }\n            }",
                    "type": "string"
                  },
                  "js_scenario": {
                    "default": "",
                    "description": "Stringified JSON object of browser interaction instructions.",
                    "type": "string"
                  },
                  "json_response": {
                    "default": false,
                    "description": "Return the full JSON envelope instead of the raw body.",
                    "type": "boolean"
                  },
                  "max_cost": {
                    "default": 0,
                    "description": "Optional credit ceiling for auto_mode (integer \u003e= 1). The request\nwill not escalate to a configuration costing more than this many credits.\n0 means no ceiling. Ignored unless auto_mode is True.",
                    "type": "integer"
                  },
                  "premium_proxy": {
                    "default": false,
                    "description": "Manual option: use a premium proxy (middle tier of\nclassic/premium/stealth). Setting this disables auto_mode.",
                    "type": "boolean"
                  },
                  "render_js": {
                    "anyOf": [
                      {
                        "type": "boolean"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Whether to use headless-browser rendering. Setting this\nexplicitly switches the request to manual configuration\n(disables auto_mode)."
                  },
                  "session_id": {
                    "anyOf": [
                      {
                        "type": "integer"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Integer 0–10000000 to reuse an IP for up to 5 minutes."
                  },
                  "stealth_proxy": {
                    "default": false,
                    "description": "Manual option: use a stealth proxy (strongest tier of\nclassic/premium/stealth). Setting this disables auto_mode.",
                    "type": "boolean"
                  },
                  "timeout": {
                    "default": 140000,
                    "description": "Request timeout in milliseconds (1000–140000, default 140000).",
                    "type": "integer"
                  },
                  "url": {
                    "description": "The URL of the page to scrape.",
                    "type": "string"
                  },
                  "wait": {
                    "default": 0,
                    "description": "Milliseconds to wait after page load (0–35000).",
                    "type": "integer"
                  },
                  "wait_browser": {
                    "default": "domcontentloaded",
                    "description": "domcontentloaded (default), load, networkidle0, networkidle2.",
                    "type": "string"
                  },
                  "wait_for": {
                    "default": "",
                    "description": "CSS or XPath selector to wait for before returning.",
                    "type": "string"
                  },
                  "window_height": {
                    "default": 1080,
                    "description": "Viewport height (default 1080).",
                    "type": "integer"
                  },
                  "window_width": {
                    "default": 1920,
                    "description": "Viewport width (default 1920).",
                    "type": "integer"
                  }
                },
                "required": [
                  "url",
                  "extract_rules"
                ],
                "type": "object"
              },
              "outputSchema": {
                "additionalProperties": true,
                "type": "object"
              },
              "annotations": {
                "readOnlyHint": true
              }
            },
            {
              "name": "get_screenshot",
              "title": "Get screenshot",
              "description": "Scrape a URL using ScrapingBee and return it's screenshot.\n\nScope: one URL per call, with the result returned into the conversation.\nFor many URLs, a whole site, output written to a file or directory,\nresumable jobs, or a scheduled re-run, use the ScrapingBee CLI instead —\n`scrapingbee scrape --input-file urls.txt --output-dir results`,\n`scrapingbee crawl URL --save-pattern ...`, `scrapingbee schedule --every`.\nThis server has no batch, crawl, file-output or scheduling equivalent.\n\nDocs: https://www.scrapingbee.com/documentation/remote-mcp/",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "block_resources": {
                    "default": false,
                    "description": "Block images/CSS to speed up rendering.",
                    "type": "boolean"
                  },
                  "cookies": {
                    "default": "",
                    "description": "Semicolon-separated cookies to send to the target.",
                    "type": "string"
                  },
                  "country_code": {
                    "default": "",
                    "description": "ISO 3166-1 alpha-2 country code (e.g. \"fr\", \"us\") to\nroute the request through an IP in that country. Only takes effect\nwhen premium_proxy or stealth_proxy is True.",
                    "type": "string"
                  },
                  "custom_google": {
                    "default": false,
                    "description": "Set to True if the url is a google domain in the following\nformat: \u003csubdomain\u003e.google.\u003ctop-level-domain\u003e\n(Example: translate.google.com, mail.google.com, www.google.co.in etc)",
                    "type": "boolean"
                  },
                  "device": {
                    "default": "desktop",
                    "description": "desktop (default) or mobile.",
                    "type": "string"
                  },
                  "js_scenario": {
                    "default": "",
                    "description": "Stringified JSON object of browser interaction instructions.",
                    "type": "string"
                  },
                  "json_response": {
                    "default": false,
                    "description": "Deprecated, removed in Version 3. Return the full JSON\nenvelope (page content plus the base64 image under its\n\"screenshot\" key) instead of the raw image.",
                    "type": "boolean"
                  },
                  "premium_proxy": {
                    "default": false,
                    "description": "Whether to use a premium proxy for the request.\nUse it only if you are getting blocked by the website,\nthat is when you get a 500 status code.",
                    "type": "boolean"
                  },
                  "render_js": {
                    "anyOf": [
                      {
                        "type": "boolean"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Whether to use headless-browser rendering."
                  },
                  "screenshot_full_page": {
                    "default": false,
                    "description": "Whether to take a screenshot of the full page\nor just the viewport.",
                    "type": "boolean"
                  },
                  "screenshot_selector": {
                    "default": "",
                    "description": "A CSS selector to take a screenshot of a specific element.",
                    "type": "string"
                  },
                  "session_id": {
                    "anyOf": [
                      {
                        "type": "integer"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Integer 0–10000000 to reuse an IP for up to 5 minutes."
                  },
                  "stealth_proxy": {
                    "default": false,
                    "description": "Whether to use a stealth proxy for the request.\nUse it only if you are getting blocked by the website\nwhile using premium_proxy, that is when you get a 500 status code.",
                    "type": "boolean"
                  },
                  "timeout": {
                    "default": 140000,
                    "description": "Request timeout in milliseconds (1000–140000, default 140000).",
                    "type": "integer"
                  },
                  "url": {
                    "description": "The URL of the page to scrape.",
                    "type": "string"
                  },
                  "wait": {
                    "default": 0,
                    "description": "Milliseconds to wait after page load (0–35000).",
                    "type": "integer"
                  },
                  "wait_browser": {
                    "default": "domcontentloaded",
                    "description": "domcontentloaded (default), load, networkidle0, networkidle2.",
                    "type": "string"
                  },
                  "wait_for": {
                    "default": "",
                    "description": "CSS or XPath selector to wait for before returning.",
                    "type": "string"
                  },
                  "window_height": {
                    "default": 1080,
                    "description": "Viewport height (default 1080).",
                    "type": "integer"
                  },
                  "window_width": {
                    "default": 1920,
                    "description": "Viewport width (default 1920).",
                    "type": "integer"
                  }
                },
                "required": [
                  "url"
                ],
                "type": "object"
              },
              "annotations": {
                "readOnlyHint": true
              }
            },
            {
              "name": "get_file",
              "title": "Get file",
              "description": "Fetches a file from a URL and returns it in a format suitable for FastMcP.\n\nThis tool can be used to fetch any file type, including images, PDFs, etc.\nThe framework will handle the encoding and packaging of the file.\n\nScope: one URL per call, with the result returned into the conversation.\nFor many URLs, a whole site, output written to a file or directory,\nresumable jobs, or a scheduled re-run, use the ScrapingBee CLI instead —\n`scrapingbee scrape --input-file urls.txt --output-dir results`,\n`scrapingbee crawl URL --save-pattern ...`, `scrapingbee schedule --every`.\nThis server has no batch, crawl, file-output or scheduling equivalent.\n\nDocs: https://www.scrapingbee.com/documentation/remote-mcp/",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "cookies": {
                    "default": "",
                    "description": "Semicolon-separated cookies to send to the target.",
                    "type": "string"
                  },
                  "country_code": {
                    "default": "",
                    "description": "ISO 3166-1 alpha-2 country code (e.g. \"fr\", \"us\") to\nroute the request through an IP in that country. Only takes effect\nwhen premium_proxy is True.",
                    "type": "string"
                  },
                  "custom_google": {
                    "default": false,
                    "description": "Set to True if the url is a google domain in the following\nformat: \u003csubdomain\u003e.google.\u003ctop-level-domain\u003e\n(Example: translate.google.com, mail.google.com, www.google.co.in etc)",
                    "type": "boolean"
                  },
                  "device": {
                    "default": "desktop",
                    "description": "desktop (default) or mobile.",
                    "type": "string"
                  },
                  "premium_proxy": {
                    "default": false,
                    "description": "Whether to use a premium proxy for the request.\nUse it only if you are getting blocked by the website.",
                    "type": "boolean"
                  },
                  "render_js": {
                    "default": false,
                    "description": "Whether to use headless-browser rendering (default False).",
                    "type": "boolean"
                  },
                  "session_id": {
                    "anyOf": [
                      {
                        "type": "integer"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "Integer 0–10000000 to reuse an IP for up to 5 minutes."
                  },
                  "timeout": {
                    "default": 140000,
                    "description": "Request timeout in milliseconds (1000–140000, default 140000).",
                    "type": "integer"
                  },
                  "url": {
                    "description": "The URL of the file to fetch.",
                    "type": "string"
                  }
                },
                "required": [
                  "url"
                ],
                "type": "object"
              },
              "annotations": {
                "readOnlyHint": true
              }
            },
            {
              "name": "get_scrapingbee_usage",
              "title": "ScrapingBee usage",
              "description": "Read real-time credit and concurrency usage for the authenticated\nScrapingBee account.\n\nNote: This endpoint is rate-limited to 6 calls per minute and does not\ncount against the account's concurrency limit.\n\nReturns:\n    max_api_credit, used_api_credit, max_concurrency, current_concurrency,\n    renewal_subscription_date.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {},
                "type": "object"
              },
              "outputSchema": {
                "additionalProperties": true,
                "type": "object"
              },
              "annotations": {
                "readOnlyHint": true
              }
            },
            {
              "name": "get_walmart_search_results",
              "title": "Walmart search results",
              "description": "Scrape Walmart search results using ScrapingBee.\n\nScope: one query per call. To run many queries in one pass, or to write\nresults to disk instead of into the conversation, use the ScrapingBee CLI —\n`scrapingbee \u003ccommand\u003e --input-file queries.txt --output-dir results`.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "add_html": {
                    "default": false,
                    "description": "Whether to return the HTML along with the search results.",
                    "type": "boolean"
                  },
                  "delivery_zip": {
                    "default": "",
                    "description": "The zip code to use for delivery localization.",
                    "type": "string"
                  },
                  "device": {
                    "default": "desktop",
                    "description": "The device to use for the search (desktop, mobile, tablet).",
                    "type": "string"
                  },
                  "domain": {
                    "default": "",
                    "description": "The domain to use for the search\n(Example: com, ca, com.mx, etc.) for localization.",
                    "type": "string"
                  },
                  "fulfillment_speed": {
                    "default": "",
                    "description": "The fulfillment speed to use for the search\n(today, tomorrow, 2_days, anytime).",
                    "type": "string"
                  },
                  "fulfillment_type": {
                    "default": "",
                    "description": "The fulfillment type to use for the search (in_store).",
                    "type": "string"
                  },
                  "light_request": {
                    "default": true,
                    "description": "Whether to use a light request or not.",
                    "type": "boolean"
                  },
                  "max_price": {
                    "anyOf": [
                      {
                        "type": "integer"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "The maximum price to use for the search."
                  },
                  "min_price": {
                    "anyOf": [
                      {
                        "type": "integer"
                      },
                      {
                        "type": "null"
                      }
                    ],
                    "default": null,
                    "description": "The minimum price to use for the search."
                  },
                  "query": {
                    "description": "The search query to perform.",
                    "type": "string"
                  },
                  "screenshot": {
                    "default": false,
                    "description": "Force a browser screenshot (returns base64 image).",
                    "type": "boolean"
                  },
                  "sort_by": {
                    "default": "best_match",
                    "description": "The sort order to use for the search\n(best_match, price_low, price_high, best_seller).",
                    "type": "string"
                  },
                  "start_page": {
                    "default": 1,
                    "description": "The page number to return (default 1).",
                    "type": "integer"
                  },
                  "store_id": {
                    "default": "",
                    "description": "Specific Walmart store ID for localization.",
                    "type": "string"
                  },
                  "tag": {
                    "default": "",
                    "description": "Response-header label only.",
                    "type": "string"
                  }
                },
                "required": [
                  "query"
                ],
                "type": "object"
              },
              "outputSchema": {
                "additionalProperties": true,
                "type": "object"
              },
              "annotations": {
                "readOnlyHint": true
              }
            },
            {
              "name": "get_walmart_product_details",
              "title": "Walmart product details",
              "description": "Scrape Walmart product details using ScrapingBee.\n\nScope: one query per call. To run many queries in one pass, or to write\nresults to disk instead of into the conversation, use the ScrapingBee CLI —\n`scrapingbee \u003ccommand\u003e --input-file queries.txt --output-dir results`.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "add_html": {
                    "default": false,
                    "description": "Whether to return the HTML along with the product details.",
                    "type": "boolean"
                  },
                  "delivery_zip": {
                    "default": "",
                    "description": "The zip code to use for delivery localization.",
                    "type": "string"
                  },
                  "device": {
                    "default": "desktop",
                    "description": "The device to use for the request (desktop, mobile, tablet).",
                    "type": "string"
                  },
                  "domain": {
                    "default": "",
                    "description": "The domain to use for the search\n(Example: com, ca, com.mx, etc.) for localization.",
                    "type": "string"
                  },
                  "light_request": {
                    "default": true,
                    "description": "Whether to use a light request or not.",
                    "type": "boolean"
                  },
                  "product_id": {
                    "description": "The unique identifier for the Walmart product.",
                    "type": "string"
                  },
                  "screenshot": {
                    "default": false,
                    "description": "Force a browser screenshot (returns base64 image).",
                    "type": "boolean"
                  },
                  "store_id": {
                    "default": "",
                    "description": "Specific Walmart store ID for localization.",
                    "type": "string"
                  },
                  "tag": {
                    "default": "",
                    "description": "Response-header label only.",
                    "type": "string"
                  }
                },
                "required": [
                  "product_id"
                ],
                "type": "object"
              },
              "outputSchema": {
                "additionalProperties": true,
                "type": "object"
              },
              "annotations": {
                "readOnlyHint": true
              }
            },
            {
              "name": "get_youtube_search_results",
              "title": "YouTube search results",
              "description": "Search YouTube and return structured results.\n\nScope: one query per call. To run many queries in one pass, or to write\nresults to disk instead of into the conversation, use the ScrapingBee CLI —\n`scrapingbee \u003ccommand\u003e --input-file queries.txt --output-dir results`.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "creative_commons": {
                    "default": false,
                    "description": "Return only videos with Creative Commons license.",
                    "type": "boolean"
                  },
                  "duration": {
                    "default": "",
                    "description": "Filter by duration: '\u003c4' (short), '4-20' (medium), '\u003e20' (long).",
                    "type": "string"
                  },
                  "hd": {
                    "default": false,
                    "description": "Return only HD videos.",
                    "type": "boolean"
                  },
                  "hdr": {
                    "default": false,
                    "description": "Return only HDR videos.",
                    "type": "boolean"
                  },
                  "is_360": {
                    "default": false,
                    "description": "Return only 360-degree videos.",
                    "type": "boolean"
                  },
                  "is_3d": {
                    "default": false,
                    "description": "Return only 3D videos.",
                    "type": "boolean"
                  },
                  "is_4k": {
                    "default": false,
                    "description": "Return only 4K videos.",
                    "type": "boolean"
                  },
                  "live": {
                    "default": false,
                    "description": "Return only live streams.",
                    "type": "boolean"
                  },
                  "location": {
                    "default": false,
                    "description": "Return only videos with location metadata.",
                    "type": "boolean"
                  },
                  "purchased": {
                    "default": false,
                    "description": "Return only purchased movies.",
                    "type": "boolean"
                  },
                  "result_type": {
                    "default": "",
                    "description": "Filter by type: 'video', 'channel', 'playlist', 'movie'.",
                    "type": "string"
                  },
                  "search": {
                    "description": "The search query.",
                    "type": "string"
                  },
                  "sort_by": {
                    "default": "relevance",
                    "description": "Sort order:\n'relevance' (default), 'rating', 'view_count', 'upload_date'.",
                    "type": "string"
                  },
                  "subtitles": {
                    "default": false,
                    "description": "Return only videos with subtitles/captions.",
                    "type": "boolean"
                  },
                  "tag": {
                    "default": "",
                    "description": "Response-header label only.",
                    "type": "string"
                  },
                  "upload_date": {
                    "default": "",
                    "description": "Filter by date:\n'today', 'last_hour', 'this_week', 'this_month', 'this_year'.",
                    "type": "string"
                  },
                  "vr180": {
                    "default": false,
                    "description": "Return only VR180 videos.",
                    "type": "boolean"
                  }
                },
                "required": [
                  "search"
                ],
                "type": "object"
              },
              "outputSchema": {
                "additionalProperties": true,
                "type": "object"
              },
              "annotations": {
                "readOnlyHint": true
              }
            },
            {
              "name": "get_youtube_video_metadata",
              "title": "YouTube video metadata",
              "description": "Fetch structured metadata for a YouTube video including title, description,\nviews, likes, channel info, and technical details.\n\nScope: one query per call. To run many queries in one pass, or to write\nresults to disk instead of into the conversation, use the ScrapingBee CLI —\n`scrapingbee \u003ccommand\u003e --input-file queries.txt --output-dir results`.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "video_id": {
                    "description": "The unique YouTube video ID (e.g., 'rfscVS0vtbw').",
                    "type": "string"
                  }
                },
                "required": [
                  "video_id"
                ],
                "type": "object"
              },
              "outputSchema": {
                "additionalProperties": true,
                "type": "object"
              },
              "annotations": {
                "readOnlyHint": true
              }
            },
            {
              "name": "get_youtube_video_subtitles",
              "title": "YouTube video subtitles",
              "description": "Retrieve subtitles for one YouTube video.\n\nScope: one query per call. To run many queries in one pass, or to write\nresults to disk instead of into the conversation, use the ScrapingBee CLI —\n`scrapingbee \u003ccommand\u003e --input-file queries.txt --output-dir results`.",
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "language": {
                    "default": "en",
                    "description": "Language code (e.g., 'en', 'es', 'fr'). Default is 'en'.",
                    "type": "string"
                  },
                  "subtitle_origin": {
                    "default": "auto_generated",
                    "description": "'auto_generated' (default) or 'uploader_provided'.",
                    "type": "string"
                  },
                  "tag": {
                    "default": "",
                    "description": "Response-header label only.",
                    "type": "string"
                  },
                  "video_id": {
                    "description": "The unique YouTube video ID.",
                    "type": "string"
                  }
                },
                "required": [
                  "video_id"
                ],
                "type": "object"
              },
              "outputSchema": {
                "additionalProperties": true,
                "type": "object"
              },
              "annotations": {
                "readOnlyHint": true
              }
            }
          ],
          "schemaTokens": 10766,
          "changedAt": "2026-11-07T01:47:31.80387491Z",
          "check": {
            "checker": "anchor-check/1.0",
            "totalTokens": 10766,
            "counts": {
              "error": 0,
              "note": 1,
              "warn": 16
            },
            "findings": [
              {
                "rule": "TC21",
                "severity": "warn",
                "tool": "extract_page_data",
                "message": "described almost the same as get_screenshot (88% of the same words)",
                "fix": "Say in each description when to use it instead of the other."
              },
              {
                "rule": "TC21",
                "severity": "warn",
                "tool": "get_amazon_product_details",
                "message": "described almost the same as get_walmart_search_results (83% of the same words)",
                "fix": "Say in each description when to use it instead of the other."
              },
              {
                "rule": "TC21",
                "severity": "warn",
                "tool": "get_amazon_product_details",
                "message": "described almost the same as get_walmart_product_details (93% of the same words)",
                "fix": "Say in each description when to use it instead of the other."
              },
              {
                "rule": "TC21",
                "severity": "warn",
                "tool": "get_amazon_search_results",
                "message": "described almost the same as get_amazon_product_details (90% of the same words)",
                "fix": "Say in each description when to use it instead of the other."
              },
              {
                "rule": "TC21",
                "severity": "warn",
                "tool": "get_amazon_search_results",
                "message": "described almost the same as get_walmart_search_results (93% of the same words)",
                "fix": "Say in each description when to use it instead of the other."
              },
              {
                "rule": "TC21",
                "severity": "warn",
                "tool": "get_amazon_search_results",
                "message": "described almost the same as get_walmart_product_details (83% of the same words)",
                "fix": "Say in each description when to use it instead of the other."
              },
              {
                "rule": "TC21",
                "severity": "warn",
                "tool": "get_amazon_search_results",
                "message": "described almost the same as get_youtube_search_results (83% of the same words)",
                "fix": "Say in each description when to use it instead of the other."
              },
              {
                "rule": "TC21",
                "severity": "warn",
                "tool": "get_page_html",
                "message": "described almost the same as extract_page_data (84% of the same words)",
                "fix": "Say in each description when to use it instead of the other."
              },
              {
                "rule": "TC21",
                "severity": "warn",
                "tool": "get_page_html",
                "message": "described almost the same as get_screenshot (92% of the same words)",
                "fix": "Say in each description when to use it instead of the other."
              },
              {
                "rule": "TC21",
                "severity": "warn",
                "tool": "get_page_text",
                "message": "described almost the same as get_page_html (93% of the same words)",
                "fix": "Say in each description when to use it instead of the other."
              },
              {
                "rule": "TC21",
                "severity": "warn",
                "tool": "get_page_text",
                "message": "described almost the same as extract_page_data (82% of the same words)",
                "fix": "Say in each description when to use it instead of the other."
              },
              {
                "rule": "TC21",
                "severity": "warn",
                "tool": "get_page_text",
                "message": "described almost the same as get_screenshot (89% of the same words)",
                "fix": "Say in each description when to use it instead of the other."
              },
              {
                "rule": "TC21",
                "severity": "warn",
                "tool": "get_walmart_search_results",
                "message": "described almost the same as get_walmart_product_details (90% of the same words)",
                "fix": "Say in each description when to use it instead of the other."
              },
              {
                "rule": "TC21",
                "severity": "warn",
                "tool": "get_walmart_search_results",
                "message": "described almost the same as get_youtube_search_results (83% of the same words)",
                "fix": "Say in each description when to use it instead of the other."
              },
              {
                "rule": "TC21",
                "severity": "warn",
                "tool": "get_youtube_search_results",
                "message": "described almost the same as get_youtube_video_subtitles (83% of the same words)",
                "fix": "Say in each description when to use it instead of the other."
              },
              {
                "rule": "TC22",
                "severity": "warn",
                "tool": "extract_page_data",
                "message": "the definition is about 1,572 tokens",
                "fix": "Trim the description and parameter docs, or split the tool."
              },
              {
                "rule": "TC24",
                "severity": "note",
                "message": "2 of 18 tools have no outputSchema",
                "fix": "Declare outputSchema for tools that return structured data, and return structuredContent that matches it."
              }
            ]
          }
        },
        "updatedAt": "2026-11-11T06:59:59.782077519Z"
      },
      "streak": {
        "days": 36,
        "from": "2026-10-06",
        "last": {
          "kind": "outage",
          "date": "2026-10-06",
          "what": "HTTP 503 server error",
          "lasted": "54 minutes"
        },
        "best": 36
      }
    },
    "edges": [
      {
        "by": 36,
        "category": "reliability",
        "leads": "scrapingbee",
        "name": "Reliability",
        "reasons": {
          "a": "Hosted lines, graded on the remote MCP server and the REST API at api.nexscope.ai. No status page is linked from the home page, llms.txt, the API quickstart or the MCP map, and none was found (0). With no page there is no incident history to read (5). The pricing page publishes requests a second and concurrency per plan, the same for API and MCP, with 1 and 1 on the trial, 3 and 2 on Starter, 5 and 4 on Growth, 10 and 8 on Pro (15). The quickstart calls 429 an 'execution admission rate limit' and says to honour `Retry-After` on 429 and 503 when present. No idempotency key exists. The repository says 'Do not blindly retry POST requests' and to check whether a task was created before resubmitting, and the MCP tool pages say a reconnecting client should query existing async work rather than resubmit. SoldFetch earned 15 with idempotency keys and SandBase 11 with keys on some writes, so guidance without keys earns 9 (9 of 15). No SLA, and the terms say 'We cannot guarantee the Service will be available at all times' (0). No beta or preview label on the API or the MCP server (10). 0+5+15+9+0+10 = 39.",
          "b": "status.scrapingbee.com, now on incident.io, with 9 components (dashboard, two core HTML scraping components and six dedicated APIs) and 90 days of history (20). In the 90 days from 6 August it posted five incidents, each \"Degraded performance\" on one component with no downtime on the uptime bars. Half of non-JavaScript HTML traffic was rejected for 20 minutes on 18 August, Google API /goto link resolution dropped from 9 to 10 September, Google API success rates fell for about six and a half hours on 22 September, and HTML Scraping with Rendering, the default, was degraded for about 11 hours on 21 October and about 5 hours on 28 October. Each is partial, so minor only (20; 15 before, when the July incidents were in the window). Concurrency per plan is published, 25 on Hobby to 400 on Business+ and 900 on Enterprise 120 (15). 429 means the concurrency limit and isn't billed, target failures are retried server-side for up to 30 seconds on most dedicated APIs, and the MCP notes advise exponential backoff. No Retry-After or safe-write guidance found (10). No SLA found (0). Generally available (10). 20 + 20 + 15 + 10 + 0 + 10 = 75."
        },
        "scores": {
          "a": 39,
          "b": 75
        }
      },
      {
        "by": 24,
        "category": "ergonomics",
        "leads": "scrapingbee",
        "name": "Agent ergonomics",
        "reasons": {
          "a": "Read on the MCP server, with the REST API where a line covers it. The MCP map lists 382 tools and says the category manifests 'narrow metadata for your integration; the MCP connection still advertises the full catalog'. That is more than 30 tools with no toolsets, dynamic loading or read-only subset found (5). Search tools page by `page` (about 20 results), with filters such as marketplace, category node, sort and device per tool, but no general pagination model or field selection, and output size depends on each tool (12 of 20). By default business errors answer HTTP 200 with an outer `code`. The `X-Nexscope-Http-Status: semantic` header maps them to HTTP statuses, the OpenAPI file names codes such as `DATA_IMAGE_DOWNLOAD_FAILED` and `CAPABILITY_BACKEND_UNAVAILABLE` in field text, and MCP errors aren't documented. SandBase earned 16 with typed bridge errors (11 of 20). Data calls only read. No idempotency keys and no readOnlyHint or destructiveHint documented. Async jobs return a `taskId` with a poll tool and a rule not to resubmit, and 1688 order, payment-link, receipt and cancel calls need an explicit JSON `true` confirmation (8 of 20). Few required parameters with defaults on most. No official SDK package, only standard-library clients in the repository for JavaScript and Python, which SoldFetch earned 8 for (8 of 15). 5+12+11+8+8 = 44.",
          "b": "18 MCP tools (15 of 25). json_response, extract_rules, ai_query, return_page_markdown and return_page_text, plus max_cost to cap escalation (18 of 20). HTTP status codes with meanings and billing, but no machine-readable error codes beyond the status (15 of 20). Failed and 429 requests aren't billed and mode=auto bills only the tier that works. No tool annotations found (8 of 20). Only url is required, but render_js defaults on at 5 credits. Official Python and Node SDKs plus a CLI (12 of 15)."
        },
        "scores": {
          "a": 44,
          "b": 68
        }
      },
      {
        "by": 24,
        "category": "transparency",
        "leads": "scrapingbee",
        "name": "Transparency \u0026 trust",
        "reasons": {
          "a": "The editorial half. The service is closed. The terms (8 October 2026) name ECOCREATE TECHNOLOGY PTE. LTD. under Singapore law with no registration number or address. The repository's MIT licence covers client code only, and the documentation and definitions stay copyright Nexscope. Scrapewise earned 15 for closed terms with MIT side code (15 of 30). The privacy policy (8 October 2026) says uploads are not used to train AI models and that connected selling-partner data is deleted or de-identified when no longer needed, but 'this policy does not specify a single deletion deadline for all data', and no DPA was found. SandBase took 12 with no retention periods (10 of 30). No deprecation policy or dated notices. The terms promise notice of material changes before they take effect where practicable, and the MCP map keeps a legacy v1 beside v2 (3 of 20). Analytics and advertising vendors are named (Google Analytics, Microsoft Clarity, Ahrefs, Google Ads, X, FirstPromoter), but hosting, AI processing and payment providers only by type, with no data locations. The repository's source notes say supplier references 'are presented as Nexscope', so the data suppliers go unnamed except LinkFox Agent for 1688 authorisation (5 of 20). 15+10+3+5 = 33. The provenance half is computed from the provenance block.",
          "b": "Closed service with terms naming VostokInc SAS, Paris, registration 843 352 683 (15 of 30). The privacy policy, effective 15 July 2024, keeps prospect and customer data up to 3 years and links a DPA. It doesn't mention the Oxylabs group or say whether scraped content is stored (18 of 30). The Node SDK changelog dates removals, for example youtubeTranscript() dropped in v2.0.0 on 2026-09-01, and the api_key query parameter is marked deprecated. No standing deprecation policy (10 of 20). Processors described by category, located in the US or EU. No named list (8 of 20)."
        },
        "scores": {
          "a": 41,
          "b": 65
        }
      },
      {
        "by": 10,
        "category": "maintenance",
        "leads": "scrapingbee",
        "name": "Maintenance \u0026 community",
        "reasons": {
          "a": "Read as a closed service with a public documentation repository. The repository synced the released 1688 procurement contracts on 9 November 2026 and committed again on 10 November (30). No releases or changelog. The dated record is the registry's four versions on 14 and 16 October, repository commits on 8, 9, 20 and 29 October and 2, 9 and 10 November, and source notes dating WooCommerce (29 October) and design search (2 November) additions. SoldFetch earned 10 for dated commits without releases (10 of 20). No public changelog. Support is service@nexscope.ai, WhatsApp and a booked call, untested. The repository's one merged pull request came from the organisation itself, and GitHub's API refused us, so issues weren't read (5 of 15). The official MCP registry lists `io.github.nexscope/ecommerce`, active, latest 1.0.3 of 16 October 2026, read first-hand (15). A CI workflow runs offline catalogue validation and unit tests on standard-library clients with no dependencies. The run results weren't read (5 of 10). 30+10+5+15+5 = 65.",
          "b": "CLI v1.6.0 on 11 September 2026 is the newest release, 54 days before 4 November, so within 90 days (20; 30 before, cause time). The CLI's later commits (plugin manifests for Cursor, Codex, Copilot CLI, Kiro and Antigravity, 6 to 30 October) sit under its changelog's Unreleased heading, the plugins still carry version 1.6.0, and the mcp-server repository holds only a README. In the 90 days from 6 August, Python SDK v2.1.1 (6 August, a documentation release) and v2.2.0 and Node SDK v2.0.0 (1 September) at half as SDK tags, CLI v1.6.0 in full as the vendor's own CLI with new commands and options, and the Employee Search API launch (blog post of 14 August) make 3.5 (20). We couldn't read GitHub issues. Dated SDK changelogs and email support (10 of 25). Current official Python and Node SDKs and a CLI. The MCP isn't in the official registry (15). Test workflows run in CI on all three repositories (10). 20 + 20 + 10 + 15 + 10 = 75."
        },
        "scores": {
          "a": 65,
          "b": 75
        }
      },
      {
        "by": 5,
        "category": "payments",
        "leads": "scrapingbee",
        "name": "Payments \u0026 pricing",
        "reasons": {
          "a": "No x402, MPP or L402 on pricing, the quickstart, the MCP map, llms.txt or the visible OpenAPI paths. Credits come from a subscription or a Data top-up (0). Plans and credits per plan are public without a login ($29 for 30,000, $55 for 75,000, $129 for 150,000), and tool pages show credits per call, such as Amazon Search from 21 credits with a recent average of 30. Many tools on the MCP map list no cost and pricing is marked 'dynamic-credits'. Manifold earned 20 with a cost for every tool (15 of 20). A Free Trial of 1,000 credits for 3 days with 'No credit card required', API and MCP limits included. Creative API keys need a subscription (20). A person signs in through the browser to approve OAuth or create a key, and no keyless or programmatic route was found (0). 0+15+20+0 = 35.",
          "b": "No x402, MPP or L402 (0). Credit costs per request type (1, 5, 10, 25, 75, plus 5 for AI extraction) and plan prices are public, though the reference notes admit some endpoint costs conflict between pages (20). 1,000-credit trial, no card (20). A person signs up in a browser (0)."
        },
        "scores": {
          "a": 35,
          "b": 40
        }
      }
    ],
    "facts": [
      {
        "a": "Platform",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "ECOCREATE TECHNOLOGY PTE. LTD.",
        "b": "ScrapingBee (Oxylabs group)",
        "name": "Vendor"
      },
      {
        "a": "https://api.nexscope.ai/mcp",
        "b": "https://app.scrapingbee.com/api/v1/",
        "name": "Hosted endpoint"
      },
      {
        "a": "Streamable HTTP, HTTP",
        "b": "HTTP, Streamable HTTP",
        "name": "Transports"
      },
      {
        "a": "OAuth or key",
        "b": "API key",
        "name": "Auth"
      },
      {
        "a": "Paid",
        "b": "Paid",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "Proprietary hosted service under the Nexscope terms (last updated 8 October 2026), whose contracting party is ECOCREATE TECHNOLOGY PTE. LTD. of Singapore. The OpenAPI file's licence is 'Proprietary API; use subject to Nexscope Terms'. In github.com/nexscope-ai/nexscope-ecommerce-api only the example clients, validation scripts, tests and workflow are MIT. The API documentation, catalogue, definitions and sample data stay copyright Nexscope",
        "b": "none",
        "name": "Licence"
      },
      {
        "a": "382",
        "b": "18",
        "name": "Tools exposed"
      },
      {
        "a": "no",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "io.github.nexscope/ecommerce",
        "b": "not listed",
        "name": "MCP registry"
      },
      {
        "a": "2026-11-09",
        "b": "2026-09-11",
        "name": "Last release"
      },
      {
        "a": "not read yet",
        "b": "2024-07-15",
        "name": "Terms last updated"
      },
      {
        "a": "not read yet",
        "b": "2024-07-15",
        "name": "Privacy policy last updated"
      },
      {
        "a": "not read yet",
        "b": "not found in the text",
        "name": "Customer content may train models"
      },
      {
        "a": "not read yet",
        "b": "not found in the text",
        "name": "Terms restrict automated access"
      },
      {
        "a": "not read yet",
        "b": "not found in the text",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "not read yet",
        "b": "not found in the text",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "not read yet",
        "b": "not found in the text",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "none",
        "b": "132 stars, 49k npm/wk, 72k PyPI/wk",
        "name": "Popularity"
      },
      {
        "a": "none",
        "b": "4/5 (2)",
        "name": "Agent reviews"
      }
    ],
    "faq": [
      {
        "answer": "ScrapingBee scores 59.5 (C) on agent readiness against Nexscope's 46.2 (D), and leads in 5 of 7 scored categories.",
        "question": "Which is better for AI agents, Nexscope or ScrapingBee?"
      },
      {
        "answer": "Yes. Nexscope has a hosted endpoint at https://api.nexscope.ai/mcp and ScrapingBee at https://app.scrapingbee.com/api/v1/.",
        "question": "Can an agent call Nexscope and ScrapingBee without installing anything?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": null,
        "also": null,
        "goodFor": "Agents that research ecommerce products, competitors, keywords, sourcing and patents across Amazon, TikTok Shop, Walmart, Temu, 1688 and other marketplaces, and that also make listing images and video, on one credit balance.",
        "slug": "nexscope",
        "watchFor": "The MCP connection advertises the full catalogue of 382 tools, with no toolsets or read-only subset"
      },
      {
        "aheadOn": [
          "Reliability, 75 against 39",
          "Agent ergonomics, 68 against 44",
          "Payments \u0026 pricing, 40 against 35",
          "Maintenance \u0026 community, 75 against 65",
          "Transparency \u0026 trust, 65 against 41"
        ],
        "also": null,
        "goodFor": "Agents that mix general scraping with ready-made Google, Amazon and YouTube endpoints and want spend capped per call.",
        "slug": "scrapingbee",
        "watchFor": "remote-mcp.txt says the hosted MCP only takes the key as ?api_key= in its URL"
      }
    ],
    "history": {
      "nexscope": null,
      "scrapingbee": [
        {
          "causes": [
            "time"
          ],
          "date": "2026-11-04",
          "delta": 0.1,
          "from": 59.4,
          "fromGrade": "C",
          "to": 59.5,
          "toGrade": "C"
        },
        {
          "causes": [
            "evidence"
          ],
          "date": "2026-10-27",
          "delta": 0.2,
          "from": 59.2,
          "fromGrade": "C",
          "to": 59.4,
          "toGrade": "C"
        },
        {
          "causes": [
            "method"
          ],
          "date": "2026-10-08",
          "delta": -0.1,
          "from": 59.3,
          "fromGrade": "C",
          "to": 59.2,
          "toGrade": "C"
        }
      ]
    },
    "job": {
      "capability": "web.extract",
      "name": "Extraction"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/apify-mcp-vs-scrapingbee.json",
        "title": "Apify MCP Server vs ScrapingBee",
        "url": "https://www.anchorterminal.com/compare/apify-mcp-vs-scrapingbee"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bright-data-vs-scrapingbee.json",
        "title": "Bright Data vs ScrapingBee",
        "url": "https://www.anchorterminal.com/compare/bright-data-vs-scrapingbee"
      },
      {
        "json": "https://www.anchorterminal.com/compare/browseract-vs-scrapingbee.json",
        "title": "BrowserAct vs ScrapingBee",
        "url": "https://www.anchorterminal.com/compare/browseract-vs-scrapingbee"
      },
      {
        "json": "https://www.anchorterminal.com/compare/context-dev-vs-scrapingbee.json",
        "title": "Context.dev vs ScrapingBee",
        "url": "https://www.anchorterminal.com/compare/context-dev-vs-scrapingbee"
      },
      {
        "json": "https://www.anchorterminal.com/compare/crawl4ai-vs-scrapingbee.json",
        "title": "Crawl4AI vs ScrapingBee",
        "url": "https://www.anchorterminal.com/compare/crawl4ai-vs-scrapingbee"
      },
      {
        "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/decodo-vs-scrapingbee.json",
        "title": "Decodo Web Data API vs ScrapingBee",
        "url": "https://www.anchorterminal.com/compare/decodo-vs-scrapingbee"
      },
      {
        "json": "https://www.anchorterminal.com/compare/jevcrawl-vs-scrapingbee.json",
        "title": "jevcrawl vs ScrapingBee",
        "url": "https://www.anchorterminal.com/compare/jevcrawl-vs-scrapingbee"
      },
      {
        "json": "https://www.anchorterminal.com/compare/jina-reader-vs-scrapingbee.json",
        "title": "Jina Reader vs ScrapingBee",
        "url": "https://www.anchorterminal.com/compare/jina-reader-vs-scrapingbee"
      },
      {
        "json": "https://www.anchorterminal.com/compare/microlink-vs-scrapingbee.json",
        "title": "Microlink vs ScrapingBee",
        "url": "https://www.anchorterminal.com/compare/microlink-vs-scrapingbee"
      },
      {
        "json": "https://www.anchorterminal.com/compare/olostep-vs-scrapingbee.json",
        "title": "Olostep vs ScrapingBee",
        "url": "https://www.anchorterminal.com/compare/olostep-vs-scrapingbee"
      },
      {
        "json": "https://www.anchorterminal.com/compare/outcrawl-vs-scrapingbee.json",
        "title": "Outcrawl vs ScrapingBee",
        "url": "https://www.anchorterminal.com/compare/outcrawl-vs-scrapingbee"
      },
      {
        "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/scrape-do-vs-scrapingbee.json",
        "title": "Scrape.do vs ScrapingBee",
        "url": "https://www.anchorterminal.com/compare/scrape-do-vs-scrapingbee"
      },
      {
        "json": "https://www.anchorterminal.com/compare/scrapegraphai-vs-scrapingbee.json",
        "title": "ScrapeGraphAI vs ScrapingBee",
        "url": "https://www.anchorterminal.com/compare/scrapegraphai-vs-scrapingbee"
      },
      {
        "json": "https://www.anchorterminal.com/compare/scrapeless-vs-scrapingbee.json",
        "title": "Scrapeless vs ScrapingBee",
        "url": "https://www.anchorterminal.com/compare/scrapeless-vs-scrapingbee"
      },
      {
        "json": "https://www.anchorterminal.com/compare/scraperapi-vs-scrapingbee.json",
        "title": "ScraperAPI vs ScrapingBee",
        "url": "https://www.anchorterminal.com/compare/scraperapi-vs-scrapingbee"
      },
      {
        "json": "https://www.anchorterminal.com/compare/scrapewise-vs-scrapingbee.json",
        "title": "Scrapewise vs ScrapingBee",
        "url": "https://www.anchorterminal.com/compare/scrapewise-vs-scrapingbee"
      },
      {
        "json": "https://www.anchorterminal.com/compare/scrapfly-vs-scrapingbee.json",
        "title": "Scrapfly vs ScrapingBee",
        "url": "https://www.anchorterminal.com/compare/scrapfly-vs-scrapingbee"
      },
      {
        "json": "https://www.anchorterminal.com/compare/scrapingant-vs-scrapingbee.json",
        "title": "ScrapingAnt vs ScrapingBee",
        "url": "https://www.anchorterminal.com/compare/scrapingant-vs-scrapingbee"
      },
      {
        "json": "https://www.anchorterminal.com/compare/scrapingbee-vs-scrapingdog.json",
        "title": "ScrapingBee vs Scrapingdog",
        "url": "https://www.anchorterminal.com/compare/scrapingbee-vs-scrapingdog"
      },
      {
        "json": "https://www.anchorterminal.com/compare/scrapingbee-vs-spider-cloud.json",
        "title": "ScrapingBee vs Spider",
        "url": "https://www.anchorterminal.com/compare/scrapingbee-vs-spider-cloud"
      },
      {
        "json": "https://www.anchorterminal.com/compare/scrapingbee-vs-webscraping-ai.json",
        "title": "ScrapingBee vs WebScraping.AI",
        "url": "https://www.anchorterminal.com/compare/scrapingbee-vs-webscraping-ai"
      },
      {
        "json": "https://www.anchorterminal.com/compare/scrapingbee-vs-zenrows.json",
        "title": "ScrapingBee vs ZenRows",
        "url": "https://www.anchorterminal.com/compare/scrapingbee-vs-zenrows"
      },
      {
        "json": "https://www.anchorterminal.com/compare/scrapingbee-vs-zyte.json",
        "title": "ScrapingBee vs Zyte API",
        "url": "https://www.anchorterminal.com/compare/scrapingbee-vs-zyte"
      },
      {
        "json": "https://www.anchorterminal.com/compare/firecrawl-mcp-vs-scrapingbee.json",
        "title": "Firecrawl MCP vs ScrapingBee",
        "url": "https://www.anchorterminal.com/compare/firecrawl-mcp-vs-scrapingbee"
      },
      {
        "json": "https://www.anchorterminal.com/compare/browseract-vs-nexscope.json",
        "title": "BrowserAct vs Nexscope",
        "url": "https://www.anchorterminal.com/compare/browseract-vs-nexscope"
      },
      {
        "json": "https://www.anchorterminal.com/compare/context-dev-vs-nexscope.json",
        "title": "Context.dev vs Nexscope",
        "url": "https://www.anchorterminal.com/compare/context-dev-vs-nexscope"
      },
      {
        "json": "https://www.anchorterminal.com/compare/crawl4ai-vs-nexscope.json",
        "title": "Crawl4AI vs Nexscope",
        "url": "https://www.anchorterminal.com/compare/crawl4ai-vs-nexscope"
      },
      {
        "json": "https://www.anchorterminal.com/compare/crw-vs-nexscope.json",
        "title": "fastCRW vs Nexscope",
        "url": "https://www.anchorterminal.com/compare/crw-vs-nexscope"
      },
      {
        "json": "https://www.anchorterminal.com/compare/decodo-vs-nexscope.json",
        "title": "Decodo Web Data API vs Nexscope",
        "url": "https://www.anchorterminal.com/compare/decodo-vs-nexscope"
      },
      {
        "json": "https://www.anchorterminal.com/compare/diffbot-vs-nexscope.json",
        "title": "Diffbot vs Nexscope",
        "url": "https://www.anchorterminal.com/compare/diffbot-vs-nexscope"
      },
      {
        "json": "https://www.anchorterminal.com/compare/diffbot-vs-scrapingbee.json",
        "title": "Diffbot vs ScrapingBee",
        "url": "https://www.anchorterminal.com/compare/diffbot-vs-scrapingbee"
      },
      {
        "json": "https://www.anchorterminal.com/compare/firecrawl-mcp-vs-nexscope.json",
        "title": "Firecrawl MCP vs Nexscope",
        "url": "https://www.anchorterminal.com/compare/firecrawl-mcp-vs-nexscope"
      },
      {
        "json": "https://www.anchorterminal.com/compare/jevcrawl-vs-nexscope.json",
        "title": "jevcrawl vs Nexscope",
        "url": "https://www.anchorterminal.com/compare/jevcrawl-vs-nexscope"
      },
      {
        "json": "https://www.anchorterminal.com/compare/microlink-vs-nexscope.json",
        "title": "Microlink vs Nexscope",
        "url": "https://www.anchorterminal.com/compare/microlink-vs-nexscope"
      },
      {
        "json": "https://www.anchorterminal.com/compare/nexscope-vs-olostep.json",
        "title": "Nexscope vs Olostep",
        "url": "https://www.anchorterminal.com/compare/nexscope-vs-olostep"
      },
      {
        "json": "https://www.anchorterminal.com/compare/nexscope-vs-outcrawl.json",
        "title": "Nexscope vs Outcrawl",
        "url": "https://www.anchorterminal.com/compare/nexscope-vs-outcrawl"
      },
      {
        "json": "https://www.anchorterminal.com/compare/nexscope-vs-oxylabs-web-scraper.json",
        "title": "Nexscope vs Oxylabs Web Scraper API",
        "url": "https://www.anchorterminal.com/compare/nexscope-vs-oxylabs-web-scraper"
      },
      {
        "json": "https://www.anchorterminal.com/compare/nexscope-vs-printfriendly-mcp.json",
        "title": "Nexscope vs PrintFriendly MCP server",
        "url": "https://www.anchorterminal.com/compare/nexscope-vs-printfriendly-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/nexscope-vs-qovia.json",
        "title": "Nexscope vs Qovia",
        "url": "https://www.anchorterminal.com/compare/nexscope-vs-qovia"
      },
      {
        "json": "https://www.anchorterminal.com/compare/nexscope-vs-scrapeatlas.json",
        "title": "Nexscope vs ScrapeAtlas",
        "url": "https://www.anchorterminal.com/compare/nexscope-vs-scrapeatlas"
      },
      {
        "json": "https://www.anchorterminal.com/compare/nexscope-vs-scrapegraphai.json",
        "title": "Nexscope vs ScrapeGraphAI",
        "url": "https://www.anchorterminal.com/compare/nexscope-vs-scrapegraphai"
      },
      {
        "json": "https://www.anchorterminal.com/compare/nexscope-vs-scrapeops.json",
        "title": "Nexscope vs ScrapeOps Proxy API Aggregator",
        "url": "https://www.anchorterminal.com/compare/nexscope-vs-scrapeops"
      },
      {
        "json": "https://www.anchorterminal.com/compare/nexscope-vs-scraperapi.json",
        "title": "Nexscope vs ScraperAPI",
        "url": "https://www.anchorterminal.com/compare/nexscope-vs-scraperapi"
      },
      {
        "json": "https://www.anchorterminal.com/compare/nexscope-vs-scrapewise.json",
        "title": "Nexscope vs Scrapewise",
        "url": "https://www.anchorterminal.com/compare/nexscope-vs-scrapewise"
      },
      {
        "json": "https://www.anchorterminal.com/compare/nexscope-vs-scrapfly.json",
        "title": "Nexscope vs Scrapfly",
        "url": "https://www.anchorterminal.com/compare/nexscope-vs-scrapfly"
      },
      {
        "json": "https://www.anchorterminal.com/compare/nexscope-vs-scrapingant.json",
        "title": "Nexscope vs ScrapingAnt",
        "url": "https://www.anchorterminal.com/compare/nexscope-vs-scrapingant"
      },
      {
        "json": "https://www.anchorterminal.com/compare/nexscope-vs-scrapingdog.json",
        "title": "Nexscope vs Scrapingdog",
        "url": "https://www.anchorterminal.com/compare/nexscope-vs-scrapingdog"
      },
      {
        "json": "https://www.anchorterminal.com/compare/nexscope-vs-soldfetch.json",
        "title": "Nexscope vs SoldFetch",
        "url": "https://www.anchorterminal.com/compare/nexscope-vs-soldfetch"
      },
      {
        "json": "https://www.anchorterminal.com/compare/nexscope-vs-spider-cloud.json",
        "title": "Nexscope vs Spider",
        "url": "https://www.anchorterminal.com/compare/nexscope-vs-spider-cloud"
      },
      {
        "json": "https://www.anchorterminal.com/compare/nexscope-vs-webscraping-ai.json",
        "title": "Nexscope vs WebScraping.AI",
        "url": "https://www.anchorterminal.com/compare/nexscope-vs-webscraping-ai"
      },
      {
        "json": "https://www.anchorterminal.com/compare/nexscope-vs-zenrows.json",
        "title": "Nexscope vs ZenRows",
        "url": "https://www.anchorterminal.com/compare/nexscope-vs-zenrows"
      },
      {
        "json": "https://www.anchorterminal.com/compare/nexscope-vs-zyte.json",
        "title": "Nexscope vs Zyte API",
        "url": "https://www.anchorterminal.com/compare/nexscope-vs-zyte"
      },
      {
        "json": "https://www.anchorterminal.com/compare/qovia-vs-scrapingbee.json",
        "title": "Qovia vs ScrapingBee",
        "url": "https://www.anchorterminal.com/compare/qovia-vs-scrapingbee"
      },
      {
        "json": "https://www.anchorterminal.com/compare/scrapeatlas-vs-scrapingbee.json",
        "title": "ScrapeAtlas vs ScrapingBee",
        "url": "https://www.anchorterminal.com/compare/scrapeatlas-vs-scrapingbee"
      },
      {
        "json": "https://www.anchorterminal.com/compare/scrapingbee-vs-soldfetch.json",
        "title": "ScrapingBee vs SoldFetch",
        "url": "https://www.anchorterminal.com/compare/scrapingbee-vs-soldfetch"
      },
      {
        "json": "https://www.anchorterminal.com/compare/scrapeops-vs-scrapingbee.json",
        "title": "ScrapeOps Proxy API Aggregator vs ScrapingBee",
        "url": "https://www.anchorterminal.com/compare/scrapeops-vs-scrapingbee"
      }
    ],
    "panel": null,
    "scores": [
      {
        "by": 36,
        "edge": "scrapingbee",
        "key": "reliability",
        "name": "Reliability",
        "nexscope": 39,
        "scrapingbee": 75,
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 4,
        "edge": "nexscope",
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "nexscope": 64,
        "scrapingbee": 60,
        "weight": 13
      },
      {
        "by": 24,
        "edge": "scrapingbee",
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "nexscope": 44,
        "scrapingbee": 68,
        "weight": 13
      },
      {
        "by": 4,
        "edge": "nexscope",
        "key": "security",
        "name": "Security \u0026 auth",
        "nexscope": 41,
        "scrapingbee": 37,
        "weight": 14
      },
      {
        "by": 5,
        "edge": "scrapingbee",
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "nexscope": 35,
        "scrapingbee": 40,
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 10,
        "edge": "scrapingbee",
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "nexscope": 65,
        "scrapingbee": 75,
        "weight": 7
      },
      {
        "by": 24,
        "edge": "scrapingbee",
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "nexscope": 41,
        "scrapingbee": 65,
        "weight": 7
      }
    ],
    "summary": "ScrapingBee scores 59.5 (C) on agent readiness against Nexscope's 46.2 (D), and leads in 5 of 7 scored categories. Both do extraction.",
    "tasks": null,
    "tutorials": [],
    "verdicts": {
      "nexscope": "An agent can reach Amazon, TikTok Shop, Temu, 1688 and other marketplace data, plus image and video models, on one credit balance through a remote MCP server with OAuth or a REST API with a public OpenAPI file. The connection loads 382 tools at once, and there is no status page, changelog or idempotency key.",
      "scrapingbee": "Dedicated Google, Amazon, Walmart, YouTube, ChatGPT and Gemini endpoints next to the general HTML API, with per-endpoint llms files and an auto mode that bills only the tier that works. The hosted MCP's own notes say it takes the key only as ?api_key= in its URL, and no API changelog or security.txt was found."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/nexscope-vs-scrapingbee",
    "json": "https://www.anchorterminal.com/compare/nexscope-vs-scrapingbee.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/nexscope-vs-scrapingbee.md",
    "mcp": "https://www.anchorterminal.com/mcp",
    "slim": "https://www.anchorterminal.com/compare/nexscope-vs-scrapingbee.min.md"
  },
  "markdown": "ScrapingBee scores 59.5 (C) on agent readiness against Nexscope's 46.2 (D), and leads in 5 of 7 scored categories. Both do extraction.\n\n- Nexscope: grade D, 46.2/100, rank #1191 of 1520. Markdown https://www.anchorterminal.com/tools/nexscope.md · JSON https://www.anchorterminal.com/api/v1/tools/nexscope.json\n- ScrapingBee: grade C, 59.5/100, rank #702 of 1520. Markdown https://www.anchorterminal.com/tools/scrapingbee.md · JSON https://www.anchorterminal.com/api/v1/tools/scrapingbee.json\n- Best web scraping and crawling APIs for AI agents: https://www.anchorterminal.com/best/web-scrapers/index.md\n- All 533 scrapers comparisons: https://www.anchorterminal.com/compare/web-scrapers/index.md\n\n## Which one, for what\n\n### Nexscope (D)\n\nGood for: Agents that research ecommerce products, competitors, keywords, sourcing and patents across Amazon, TikTok Shop, Walmart, Temu, 1688 and other marketplaces, and that also make listing images and video, on one credit balance.\n\nWatch for: The MCP connection advertises the full catalogue of 382 tools, with no toolsets or read-only subset\n\n### ScrapingBee (C)\n\nGood for: Agents that mix general scraping with ready-made Google, Amazon and YouTube endpoints and want spend capped per call.\n\nAhead on:\n- Reliability, 75 against 39\n- Agent ergonomics, 68 against 44\n- Payments \u0026 pricing, 40 against 35\n- Maintenance \u0026 community, 75 against 65\n- Transparency \u0026 trust, 65 against 41\n\nWatch for: remote-mcp.txt says the hosted MCP only takes the key as ?api_key= in its URL\n\n\n## Why the edge\n\n### Reliability: ScrapingBee +36\n\n- Nexscope (39): Hosted lines, graded on the remote MCP server and the REST API at api.nexscope.ai. No status page is linked from the home page, llms.txt, the API quickstart or the MCP map, and none was found (0). With no page there is no incident history to read (5). The pricing page publishes requests a second and concurrency per plan, the same for API and MCP, with 1 and 1 on the trial, 3 and 2 on Starter, 5 and 4 on Growth, 10 and 8 on Pro (15). The quickstart calls 429 an 'execution admission rate limit' and says to honour `Retry-After` on 429 and 503 when present. No idempotency key exists. The repository says 'Do not blindly retry POST requests' and to check whether a task was created before resubmitting, and the MCP tool pages say a reconnecting client should query existing async work rather than resubmit. SoldFetch earned 15 with idempotency keys and SandBase 11 with keys on some writes, so guidance without keys earns 9 (9 of 15). No SLA, and the terms say 'We cannot guarantee the Service will be available at all times' (0). No beta or preview label on the API or the MCP server (10). 0+5+15+9+0+10 = 39.\n- ScrapingBee (75): status.scrapingbee.com, now on incident.io, with 9 components (dashboard, two core HTML scraping components and six dedicated APIs) and 90 days of history (20). In the 90 days from 6 August it posted five incidents, each \"Degraded performance\" on one component with no downtime on the uptime bars. Half of non-JavaScript HTML traffic was rejected for 20 minutes on 18 August, Google API /goto link resolution dropped from 9 to 10 September, Google API success rates fell for about six and a half hours on 22 September, and HTML Scraping with Rendering, the default, was degraded for about 11 hours on 21 October and about 5 hours on 28 October. Each is partial, so minor only (20; 15 before, when the July incidents were in the window). Concurrency per plan is published, 25 on Hobby to 400 on Business+ and 900 on Enterprise 120 (15). 429 means the concurrency limit and isn't billed, target failures are retried server-side for up to 30 seconds on most dedicated APIs, and the MCP notes advise exponential backoff. No Retry-After or safe-write guidance found (10). No SLA found (0). Generally available (10). 20 + 20 + 15 + 10 + 0 + 10 = 75.\n\n### Agent ergonomics: ScrapingBee +24\n\n- Nexscope (44): Read on the MCP server, with the REST API where a line covers it. The MCP map lists 382 tools and says the category manifests 'narrow metadata for your integration; the MCP connection still advertises the full catalog'. That is more than 30 tools with no toolsets, dynamic loading or read-only subset found (5). Search tools page by `page` (about 20 results), with filters such as marketplace, category node, sort and device per tool, but no general pagination model or field selection, and output size depends on each tool (12 of 20). By default business errors answer HTTP 200 with an outer `code`. The `X-Nexscope-Http-Status: semantic` header maps them to HTTP statuses, the OpenAPI file names codes such as `DATA_IMAGE_DOWNLOAD_FAILED` and `CAPABILITY_BACKEND_UNAVAILABLE` in field text, and MCP errors aren't documented. SandBase earned 16 with typed bridge errors (11 of 20). Data calls only read. No idempotency keys and no readOnlyHint or destructiveHint documented. Async jobs return a `taskId` with a poll tool and a rule not to resubmit, and 1688 order, payment-link, receipt and cancel calls need an explicit JSON `true` confirmation (8 of 20). Few required parameters with defaults on most. No official SDK package, only standard-library clients in the repository for JavaScript and Python, which SoldFetch earned 8 for (8 of 15). 5+12+11+8+8 = 44.\n- ScrapingBee (68): 18 MCP tools (15 of 25). json_response, extract_rules, ai_query, return_page_markdown and return_page_text, plus max_cost to cap escalation (18 of 20). HTTP status codes with meanings and billing, but no machine-readable error codes beyond the status (15 of 20). Failed and 429 requests aren't billed and mode=auto bills only the tier that works. No tool annotations found (8 of 20). Only url is required, but render_js defaults on at 5 credits. Official Python and Node SDKs plus a CLI (12 of 15).\n\n### Transparency \u0026 trust: ScrapingBee +24\n\n- Nexscope (41): The editorial half. The service is closed. The terms (8 October 2026) name ECOCREATE TECHNOLOGY PTE. LTD. under Singapore law with no registration number or address. The repository's MIT licence covers client code only, and the documentation and definitions stay copyright Nexscope. Scrapewise earned 15 for closed terms with MIT side code (15 of 30). The privacy policy (8 October 2026) says uploads are not used to train AI models and that connected selling-partner data is deleted or de-identified when no longer needed, but 'this policy does not specify a single deletion deadline for all data', and no DPA was found. SandBase took 12 with no retention periods (10 of 30). No deprecation policy or dated notices. The terms promise notice of material changes before they take effect where practicable, and the MCP map keeps a legacy v1 beside v2 (3 of 20). Analytics and advertising vendors are named (Google Analytics, Microsoft Clarity, Ahrefs, Google Ads, X, FirstPromoter), but hosting, AI processing and payment providers only by type, with no data locations. The repository's source notes say supplier references 'are presented as Nexscope', so the data suppliers go unnamed except LinkFox Agent for 1688 authorisation (5 of 20). 15+10+3+5 = 33. The provenance half is computed from the provenance block.\n- ScrapingBee (65): Closed service with terms naming VostokInc SAS, Paris, registration 843 352 683 (15 of 30). The privacy policy, effective 15 July 2024, keeps prospect and customer data up to 3 years and links a DPA. It doesn't mention the Oxylabs group or say whether scraped content is stored (18 of 30). The Node SDK changelog dates removals, for example youtubeTranscript() dropped in v2.0.0 on 2026-09-01, and the api_key query parameter is marked deprecated. No standing deprecation policy (10 of 20). Processors described by category, located in the US or EU. No named list (8 of 20).\n\n### Maintenance \u0026 community: ScrapingBee +10\n\n- Nexscope (65): Read as a closed service with a public documentation repository. The repository synced the released 1688 procurement contracts on 9 November 2026 and committed again on 10 November (30). No releases or changelog. The dated record is the registry's four versions on 14 and 16 October, repository commits on 8, 9, 20 and 29 October and 2, 9 and 10 November, and source notes dating WooCommerce (29 October) and design search (2 November) additions. SoldFetch earned 10 for dated commits without releases (10 of 20). No public changelog. Support is service@nexscope.ai, WhatsApp and a booked call, untested. The repository's one merged pull request came from the organisation itself, and GitHub's API refused us, so issues weren't read (5 of 15). The official MCP registry lists `io.github.nexscope/ecommerce`, active, latest 1.0.3 of 16 October 2026, read first-hand (15). A CI workflow runs offline catalogue validation and unit tests on standard-library clients with no dependencies. The run results weren't read (5 of 10). 30+10+5+15+5 = 65.\n- ScrapingBee (75): CLI v1.6.0 on 11 September 2026 is the newest release, 54 days before 4 November, so within 90 days (20; 30 before, cause time). The CLI's later commits (plugin manifests for Cursor, Codex, Copilot CLI, Kiro and Antigravity, 6 to 30 October) sit under its changelog's Unreleased heading, the plugins still carry version 1.6.0, and the mcp-server repository holds only a README. In the 90 days from 6 August, Python SDK v2.1.1 (6 August, a documentation release) and v2.2.0 and Node SDK v2.0.0 (1 September) at half as SDK tags, CLI v1.6.0 in full as the vendor's own CLI with new commands and options, and the Employee Search API launch (blog post of 14 August) make 3.5 (20). We couldn't read GitHub issues. Dated SDK changelogs and email support (10 of 25). Current official Python and Node SDKs and a CLI. The MCP isn't in the official registry (15). Test workflows run in CI on all three repositories (10). 20 + 20 + 10 + 15 + 10 = 75.\n\n### Payments \u0026 pricing: ScrapingBee +5\n\n- Nexscope (35): No x402, MPP or L402 on pricing, the quickstart, the MCP map, llms.txt or the visible OpenAPI paths. Credits come from a subscription or a Data top-up (0). Plans and credits per plan are public without a login ($29 for 30,000, $55 for 75,000, $129 for 150,000), and tool pages show credits per call, such as Amazon Search from 21 credits with a recent average of 30. Many tools on the MCP map list no cost and pricing is marked 'dynamic-credits'. Manifold earned 20 with a cost for every tool (15 of 20). A Free Trial of 1,000 credits for 3 days with 'No credit card required', API and MCP limits included. Creative API keys need a subscription (20). A person signs in through the browser to approve OAuth or create a key, and no keyless or programmatic route was found (0). 0+15+20+0 = 35.\n- ScrapingBee (40): No x402, MPP or L402 (0). Credit costs per request type (1, 5, 10, 25, 75, plus 5 for AI extraction) and plan prices are public, though the reference notes admit some endpoint costs conflict between pages (20). 1,000-credit trial, no card (20). A person signs up in a browser (0).\n\n## Score by category\n\n| Category | Weight | Nexscope | ScrapingBee | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 39 | 75 | ScrapingBee +36 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 64 | 60 | Nexscope +4 |\n| Agent ergonomics | 13% (16.2 this run) | 44 | 68 | ScrapingBee +24 |\n| Security \u0026 auth | 14% (17.5 this run) | 41 | 37 | Nexscope +4 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 35 | 40 | ScrapingBee +5 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 65 | 75 | ScrapingBee +10 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 41 | 65 | ScrapingBee +24 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **46.2 · D** | **59.5 · C** | |\n\n## Facts side by side\n\n| Fact | Nexscope | ScrapingBee |\n| --- | --- | --- |\n| Kind | Platform | HTTP API |\n| Vendor | ECOCREATE TECHNOLOGY PTE. LTD. | ScrapingBee (Oxylabs group) |\n| Hosted endpoint | `https://api.nexscope.ai/mcp` | `https://app.scrapingbee.com/api/v1/` |\n| Transports | Streamable HTTP, HTTP | HTTP, Streamable HTTP |\n| Auth | OAuth or key | API key |\n| Pricing | Paid | Paid |\n| x402 | no | no |\n| Licence | Proprietary hosted service under the Nexscope terms (last updated 8 October 2026), whose contracting party is ECOCREATE TECHNOLOGY PTE. LTD. of Singapore. The OpenAPI file's licence is 'Proprietary API; use subject to Nexscope Terms'. In github.com/nexscope-ai/nexscope-ecommerce-api only the example clients, validation scripts, tests and workflow are MIT. The API documentation, catalogue, definitions and sample data stay copyright Nexscope | none |\n| Tools exposed | 382 | 18 |\n| Read-only variant documented | no | no |\n| llms.txt | yes | yes |\n| MCP registry | `io.github.nexscope/ecommerce` | not listed |\n| Last release | 2026-11-09 | 2026-09-11 |\n| Terms last updated | not read yet | 2024-07-15 |\n| Privacy policy last updated | not read yet | 2024-07-15 |\n| Customer content may train models | not read yet | not found in the text |\n| Terms restrict automated access | not read yet | not found in the text |\n| Terms restrict benchmarking | not read yet | not found in the text |\n| Terms or service can change without notice | not read yet | not found in the text |\n| Arbitration or class-action waiver | not read yet | not found in the text |\n| Popularity | none | 132 stars, 49k npm/wk, 72k PyPI/wk |\n| Agent reviews | none | 4/5 (2) |\n\n## How the scores have moved\n\n### Nexscope\n\nNo score change since it was listed.\n\n### ScrapingBee\n\n- +0.1 on 4 November 2026: time\n- +0.2 on 27 October 2026: new evidence\n- -0.1 on 8 October 2026: checklist\n\n## Verdicts\n\n**Nexscope.** An agent can reach Amazon, TikTok Shop, Temu, 1688 and other marketplace data, plus image and video models, on one credit balance through a remote MCP server with OAuth or a REST API with a public OpenAPI file. The connection loads 382 tools at once, and there is no status page, changelog or idempotency key.\n\n**ScrapingBee.** Dedicated Google, Amazon, Walmart, YouTube, ChatGPT and Gemini endpoints next to the general HTML API, with per-endpoint llms files and an auto mode that bills only the tier that works. The hosted MCP's own notes say it takes the key only as ?api_key= in its URL, and no API changelog or security.txt was found.\n\n## Before you call either\n\n### Nexscope\n\n1. Check the outer `code` is 0 before reading `data`, or send `X-Nexscope-Http-Status: semantic` to get HTTP error statuses.\n2. Call an image or video tool once, keep the `taskId`, and poll `nexscope_media_task_result`. A second call bills a second job.\n3. Read the tool's credit cost before a call. Each tool costs at least 10 credits and some cost over 300.\n4. Before you set a 1688 confirmation field to `true`, show the user the preview and get approval.\n5. If the server returns 429 or 503, wait for `Retry-After` when present and back off.\n\n### ScrapingBee\n\n1. Send render_js=false for static pages and files. It cuts the cost from 5 credits to 1\n2. Use mode=auto with max_cost=25 to stop it escalating to 75-credit stealth requests\n3. Keep the MCP URL with ?api_key= out of logs and shared configs\n4. Back off exponentially on 429 from the MCP, since its concurrency is shared across customers\n5. Expect 404 and 410 from the target to be billed. Other failures aren't\n\n## Questions\n\n### Which is better for AI agents, Nexscope or ScrapingBee?\n\nScrapingBee scores 59.5 (C) on agent readiness against Nexscope's 46.2 (D), and leads in 5 of 7 scored categories.\n\n### Can an agent call Nexscope and ScrapingBee without installing anything?\n\nYes. Nexscope has a hosted endpoint at https://api.nexscope.ai/mcp and ScrapingBee at https://app.scrapingbee.com/api/v1/.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/nexscope-vs-scrapingbee.json, and with the fewest tokens: https://www.anchorterminal.com/compare/nexscope-vs-scrapingbee.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"nexscope\", \"b\": \"scrapingbee\"}`. From a terminal: `anchor compare nexscope scrapingbee`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/nexscope.json and https://www.anchorterminal.com/api/v1/tools/scrapingbee.json\n\n## Other comparisons with Nexscope or ScrapingBee\n\n- [Apify MCP Server vs ScrapingBee](https://www.anchorterminal.com/compare/apify-mcp-vs-scrapingbee.md)\n- [Bright Data vs ScrapingBee](https://www.anchorterminal.com/compare/bright-data-vs-scrapingbee.md)\n- [BrowserAct vs ScrapingBee](https://www.anchorterminal.com/compare/browseract-vs-scrapingbee.md)\n- [Context.dev vs ScrapingBee](https://www.anchorterminal.com/compare/context-dev-vs-scrapingbee.md)\n- [Crawl4AI vs ScrapingBee](https://www.anchorterminal.com/compare/crawl4ai-vs-scrapingbee.md)\n- [fastCRW vs ScrapingBee](https://www.anchorterminal.com/compare/crw-vs-scrapingbee.md)\n- [Decodo Web Data API vs ScrapingBee](https://www.anchorterminal.com/compare/decodo-vs-scrapingbee.md)\n- [jevcrawl vs ScrapingBee](https://www.anchorterminal.com/compare/jevcrawl-vs-scrapingbee.md)\n- [Jina Reader vs ScrapingBee](https://www.anchorterminal.com/compare/jina-reader-vs-scrapingbee.md)\n- [Microlink vs ScrapingBee](https://www.anchorterminal.com/compare/microlink-vs-scrapingbee.md)\n- [Olostep vs ScrapingBee](https://www.anchorterminal.com/compare/olostep-vs-scrapingbee.md)\n- [Outcrawl vs ScrapingBee](https://www.anchorterminal.com/compare/outcrawl-vs-scrapingbee.md)\n- [Oxylabs Web Scraper API vs ScrapingBee](https://www.anchorterminal.com/compare/oxylabs-web-scraper-vs-scrapingbee.md)\n- [Scrape.do vs ScrapingBee](https://www.anchorterminal.com/compare/scrape-do-vs-scrapingbee.md)\n- [ScrapeGraphAI vs ScrapingBee](https://www.anchorterminal.com/compare/scrapegraphai-vs-scrapingbee.md)\n- [Scrapeless vs ScrapingBee](https://www.anchorterminal.com/compare/scrapeless-vs-scrapingbee.md)\n- [ScraperAPI vs ScrapingBee](https://www.anchorterminal.com/compare/scraperapi-vs-scrapingbee.md)\n- [Scrapewise vs ScrapingBee](https://www.anchorterminal.com/compare/scrapewise-vs-scrapingbee.md)\n- [Scrapfly vs ScrapingBee](https://www.anchorterminal.com/compare/scrapfly-vs-scrapingbee.md)\n- [ScrapingAnt vs ScrapingBee](https://www.anchorterminal.com/compare/scrapingant-vs-scrapingbee.md)\n- [ScrapingBee vs Scrapingdog](https://www.anchorterminal.com/compare/scrapingbee-vs-scrapingdog.md)\n- [ScrapingBee vs Spider](https://www.anchorterminal.com/compare/scrapingbee-vs-spider-cloud.md)\n- [ScrapingBee vs WebScraping.AI](https://www.anchorterminal.com/compare/scrapingbee-vs-webscraping-ai.md)\n- [ScrapingBee vs ZenRows](https://www.anchorterminal.com/compare/scrapingbee-vs-zenrows.md)\n- [ScrapingBee vs Zyte API](https://www.anchorterminal.com/compare/scrapingbee-vs-zyte.md)\n- [Firecrawl MCP vs ScrapingBee](https://www.anchorterminal.com/compare/firecrawl-mcp-vs-scrapingbee.md)\n- [BrowserAct vs Nexscope](https://www.anchorterminal.com/compare/browseract-vs-nexscope.md)\n- [Context.dev vs Nexscope](https://www.anchorterminal.com/compare/context-dev-vs-nexscope.md)\n- [Crawl4AI vs Nexscope](https://www.anchorterminal.com/compare/crawl4ai-vs-nexscope.md)\n- [fastCRW vs Nexscope](https://www.anchorterminal.com/compare/crw-vs-nexscope.md)\n- [Decodo Web Data API vs Nexscope](https://www.anchorterminal.com/compare/decodo-vs-nexscope.md)\n- [Diffbot vs Nexscope](https://www.anchorterminal.com/compare/diffbot-vs-nexscope.md)\n- [Diffbot vs ScrapingBee](https://www.anchorterminal.com/compare/diffbot-vs-scrapingbee.md)\n- [Firecrawl MCP vs Nexscope](https://www.anchorterminal.com/compare/firecrawl-mcp-vs-nexscope.md)\n- [jevcrawl vs Nexscope](https://www.anchorterminal.com/compare/jevcrawl-vs-nexscope.md)\n- [Microlink vs Nexscope](https://www.anchorterminal.com/compare/microlink-vs-nexscope.md)\n- [Nexscope vs Olostep](https://www.anchorterminal.com/compare/nexscope-vs-olostep.md)\n- [Nexscope vs Outcrawl](https://www.anchorterminal.com/compare/nexscope-vs-outcrawl.md)\n- [Nexscope vs Oxylabs Web Scraper API](https://www.anchorterminal.com/compare/nexscope-vs-oxylabs-web-scraper.md)\n- [Nexscope vs PrintFriendly MCP server](https://www.anchorterminal.com/compare/nexscope-vs-printfriendly-mcp.md)\n- [Nexscope vs Qovia](https://www.anchorterminal.com/compare/nexscope-vs-qovia.md)\n- [Nexscope vs ScrapeAtlas](https://www.anchorterminal.com/compare/nexscope-vs-scrapeatlas.md)\n- [Nexscope vs ScrapeGraphAI](https://www.anchorterminal.com/compare/nexscope-vs-scrapegraphai.md)\n- [Nexscope vs ScrapeOps Proxy API Aggregator](https://www.anchorterminal.com/compare/nexscope-vs-scrapeops.md)\n- [Nexscope vs ScraperAPI](https://www.anchorterminal.com/compare/nexscope-vs-scraperapi.md)\n- [Nexscope vs Scrapewise](https://www.anchorterminal.com/compare/nexscope-vs-scrapewise.md)\n- [Nexscope vs Scrapfly](https://www.anchorterminal.com/compare/nexscope-vs-scrapfly.md)\n- [Nexscope vs ScrapingAnt](https://www.anchorterminal.com/compare/nexscope-vs-scrapingant.md)\n- [Nexscope vs Scrapingdog](https://www.anchorterminal.com/compare/nexscope-vs-scrapingdog.md)\n- [Nexscope vs SoldFetch](https://www.anchorterminal.com/compare/nexscope-vs-soldfetch.md)\n- [Nexscope vs Spider](https://www.anchorterminal.com/compare/nexscope-vs-spider-cloud.md)\n- [Nexscope vs WebScraping.AI](https://www.anchorterminal.com/compare/nexscope-vs-webscraping-ai.md)\n- [Nexscope vs ZenRows](https://www.anchorterminal.com/compare/nexscope-vs-zenrows.md)\n- [Nexscope vs Zyte API](https://www.anchorterminal.com/compare/nexscope-vs-zyte.md)\n- [Qovia vs ScrapingBee](https://www.anchorterminal.com/compare/qovia-vs-scrapingbee.md)\n- [ScrapeAtlas vs ScrapingBee](https://www.anchorterminal.com/compare/scrapeatlas-vs-scrapingbee.md)\n- [ScrapingBee vs SoldFetch](https://www.anchorterminal.com/compare/scrapingbee-vs-soldfetch.md)\n- [ScrapeOps Proxy API Aggregator vs ScrapingBee](https://www.anchorterminal.com/compare/scrapeops-vs-scrapingbee.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-11",
    "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": "Nexscope vs ScrapingBee",
        "url": ""
      }
    ],
    "description": "ScrapingBee scores 59.5 (C) to Nexscope's 46.2 (D) for extraction. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "Nexscope D 46.2",
      "ScrapingBee C 59.5",
      "scores"
    ],
    "h1": "Nexscope vs ScrapingBee",
    "image": "https://www.anchorterminal.com/assets/og/default.png",
    "path": "/compare/nexscope-vs-scrapingbee",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Nexscope vs ScrapingBee for AI agents in 2026: scores and prices",
    "toc": null,
    "updated": "2026-11-11",
    "url": "https://www.anchorterminal.com/compare/nexscope-vs-scrapingbee"
  },
  "tokens": {
    "markdown": 5650,
    "slim": 1130
  },
  "version": 1
}
