Skip to main content
You describe the result you want. Your assistant chooses the appropriate Spidra tool, runs it, waits for any background work to finish, and works with the returned data. In normal use, you do not need to call MCP tools by name or write integration code yourself. The server exposes 12 tools for scraping, crawling, job management, and usage reporting. Their descriptions also help the model choose the right tool and avoid unnecessary credit usage. The Spidra MCP server is open source on GitHub.

Before you start

You need:
  1. A Spidra account. Sign up at app.spidra.io.
  2. An MCP-compatible client. Claude Code, Claude Desktop, Cursor, VS Code, Windsurf, Antigravity, OpenCode, and other MCP clients can connect to Spidra.
If you use OAuth, you do not need to create an API key manually. If you prefer a static credential, create an API key under Settings → API Keys in your Spidra dashboard. Spidra API keys start with spd_.

Connect to the hosted server

For most users, the hosted MCP server is the recommended setup. There is nothing to install, run, or update locally.
If your client supports OAuth, add the endpoint and sign in to Spidra when prompted. For CI, scripting, or clients where you prefer a static credential, you can send a Spidra API key in the Authorization header instead:
When you sign in through OAuth, Spidra creates or reuses a dedicated API key labeled MCP (OAuth) on your account. You can view or revoke it at any time under Settings → API Keys.

Set up your client

Run:
Start a new Claude Code session, then run /mcp to complete authentication or confirm that Spidra is connected.If you want to use an API key instead:
Start a new session and run /mcp to confirm the connection.

Run the server locally

You can also run the Spidra MCP server on your own machine over stdio. Use the local setup when:
  • your client does not support remote MCP servers
  • you want the MCP process to run locally
  • you need to connect to a staging or custom Spidra API through SPIDRA_API_URL
Local setups require Node.js 20 or newer. Each configuration below starts npx -y spidra-mcp and passes your Spidra API key to the process through SPIDRA_API_KEY.
Run:
Start a new Claude Code session and run /mcp to confirm that Spidra is connected.

Try it

Once Spidra is connected, ask for web data in normal language.
“Scrape https://news.ycombinator.com and give me the top five stories with their points.”
“Compare the pricing pages for stripe.com and paddle.com and tell me which is cheaper for a small SaaS.”
“Here are 12 product URLs. Get the name, price, and rating from each one and return a table.”
“Crawl the first 10 pages of docs.example.com and summarize what the product does.”
If the assistant returns data from the requested pages, the connection is working. The assistant handles tool selection, polling, and result retrieval automatically.

Choose the right tool

You usually do not need to select a tool yourself. This guidance is built into the tool descriptions so the model can choose appropriately. The main decision is what result you want back, not simply how many URLs you have.
  • Use spidra_scrape when you know the page URL and want one combined answer. It accepts 1 to 3 URLs. When you provide multiple URLs, Spidra combines their content into a single extraction.
  • Use spidra_batch_scrape when you want a separate result for every URL in a list. It accepts 2 to 50 URLs and processes each one independently.
  • Use spidra_crawl when you know where to start but do not already know every page URL. Spidra discovers pages by following links according to your instructions.

Tool reference

Scrapes 1 to 3 URLs and waits for the extraction result, typically for up to 10 to 60 seconds.With one URL, the behavior is straightforward: Spidra extracts the requested information from that page.With multiple URLs, Spidra combines the page content and produces one extraction across all of them. That makes spidra_scrape useful for comparison and synthesis, for example:
“Compare these two pricing pages and summarize the differences.”
If you need one independent result for every URL, use spidra_batch_scrape instead.Example request:
Useful options include:
  • actions for browser interactions such as clicking, typing, scrolling, and looping over elements
  • cookies for authenticated pages
  • useProxy and proxyCountry for residential proxy routing
  • screenshot to capture page screenshots
  • extractContentOnly to remove page boilerplate
  • scrapeMode: "fast" for HTTP-only scraping without browser actions
Returns: extracted content, raw per-page data in pages, optional screenshots, and token statistics in stats.If the scrape takes longer than the initial wait window, the job continues running. The response includes its job ID so the assistant can retrieve it with spidra_check_scrape_status instead of submitting the scrape again.
Processes 2 to 50 URLs in parallel using the same prompt or schema. Each URL is handled independently and receives its own result. Use it for requests such as:
“Extract the name, price, and rating from each of these 15 product pages.”
The tool returns immediately with a batchId. The assistant then checks spidra_check_batch_status until processing finishes.Example request:
Returns: { "batchId": "...", "total": 2 }. The URLs are plain strings.A batch with a completed status can still contain individual failed items. Check failedCount and the per-URL results before treating the entire batch as successful. Failed items can be retried through the batch retry endpoint without rerunning successful items.
Starts from one URL and discovers additional pages by following links according to a plain-English instruction. Returns a jobId immediately. The assistant checks spidra_check_crawl_status until the crawl finishes.Two instructions control different parts of the crawl:
  • crawlInstruction tells Spidra which links to follow.
  • transformInstruction tells Spidra what to extract from each page.
For example, crawlInstruction: “Follow blog post links only. Skip tag and category pages.” And transformInstruction: “Extract the title, author, and publish date.”If you omit transformInstruction and do not provide a schema, each crawled page is returned as raw Markdown without AI extraction token cost.Example request:
Useful crawl controls include maxPages (default 5, maximum 50), maxDepth, includePaths, excludePaths, allowSubdomains, crawlEntireDomain, and ignoreQueryParams. Every processed page consumes credits, so start with a small maxPages value when exploring a new site.Returns: { "jobId": "..." }.
Runs a new extraction instruction against a crawl that has already completed. It does not fetch the pages again.Use it when you already have the crawl content but want to ask a different question. For example, suppose you crawled a competitor’s blog and extracted titles and dates. You can later ask for the main topics of each article without crawling the site again.
Only AI extraction credits are charged because the pages are not fetched again. The source crawl must have a completed status.Returns: a new jobId, which is checked like a standard crawl.
spidra_check_scrape_status checks a scrape by job ID. Use it only when spidra_scrape exceeded its initial wait window — the timeout response includes the job ID to check.spidra_check_batch_status returns batch progress, including completedCount, failedCount, and results for completed URLs.spidra_check_crawl_status returns crawl progress while the crawl is running and the extracted page results when it completes.spidra_crawl_pages returns individual crawl-page results and signed download URLs for each page’s raw HTML and Markdown. Download links expire after one hour. The tool also works with cancelled crawls and returns pages that finished before cancellation.spidra_cancel_batch stops a running batch. Completed items keep their results, and credits for unprocessed items are refunded.spidra_cancel_crawl stops a running crawl. Pages already processed remain available, and credits for unprocessed pages are refunded.
spidra_scrape_logs looks up previous Spidra jobs, including their status and credit usage. You can filter by status or search term, or pass a uuid to retrieve a specific job and its full output. For example, ask “Why did my last scrape fail?” and the assistant can use this tool to inspect the job rather than guessing.spidra_usage reports request, credit, and token usage. Supported ranges include 7d, 30d, and weekly. This is useful before starting a large batch or crawl.

Credit-efficient behavior

MCP agents can repeat actions if the server does not give them enough context about what is already running. Spidra’s MCP tools are designed to reduce unnecessary work and duplicate credit usage.
  • Tool descriptions guide the model toward the most appropriate operation for each request.
  • Crawl guidance encourages smaller maxPages values when a large crawl is not necessary.
  • Long-running operations return job IDs and explicit polling instructions instead of encouraging the model to submit the same job again.
  • Timeout responses tell the assistant that the existing job is still running and should be checked, not restarted.
  • Rate-limit errors tell the assistant how long to wait before retrying.
  • Validation errors identify what needs to change.
  • Permanent errors tell the assistant when repeating the same request will not help.
  • Cancelling a batch or crawl refunds credits for work that has not yet been processed.

Output limits

Large pages and crawls can return more content than an AI model can use effectively in one tool response. To keep responses manageable:
  • individual strings longer than 5,000 characters are truncated
  • a single MCP tool response is capped at 80,000 characters
  • truncated values are marked so the assistant knows content was omitted
For complete raw crawl content, use spidra_crawl_pages. It returns signed download links to the full HTML and Markdown files.

Configuration

These environment variables apply when you run the MCP server locally or host your own instance. They are not required when you use the hosted endpoint with OAuth. For HTTP connections, an API key can also be supplied per request:
This is useful when one running server needs to serve multiple users with different Spidra accounts. If a request contains both an API key header and an authenticated OAuth session, the API key in the request takes precedence.

Troubleshooting

The assistant does not see any Spidra tools. Check that the MCP server appears as connected in your client’s MCP settings. If you edited a configuration file manually, reload the MCP server or restart the client. In Claude Code, run /mcp to inspect the connection. “No Spidra API key configured.” For a local stdio setup, make sure SPIDRA_API_KEY is inside the server’s environment configuration, for example:
For the hosted server with API-key authentication, confirm that the request contains Authorization: Bearer spd_YOUR_API_KEY. Also confirm that the key still exists under Settings → API Keys in your Spidra dashboard. The hosted server returns a 401. The API key is missing, malformed, or no longer valid. Check that the header name is exactly Authorization, the value starts with Bearer, the key starts with spd_, and the key has not been revoked. If necessary, create a new key from the Spidra dashboard. OAuth does not start. Confirm that your client supports OAuth for remote MCP servers. If the client does not support OAuth, use an API key or run the MCP server locally. If authentication started but failed, begin a fresh connection rather than reusing an old authorization URL. OAuth reports an invalid or expired transaction. The authorization request may have expired or been interrupted — OAuth transactions expire after 10 minutes. Remove and reconnect the Spidra server, then complete the new authentication flow promptly. If the problem continues, use the API-key setup for that client and contact Spidra support with the error details. A scrape “timed out.” This does not mean the job failed. The job continues running on Spidra, and the timeout response includes its job ID so the assistant can retrieve it with spidra_check_scrape_status. Do not submit the same scrape again simply because the initial wait window expired. Bot-protected sites can take longer to process. Structured results are empty. Check the schema you provided. Every field you expect Spidra to return must be defined with a type:
An object schema with no defined properties gives the extraction model no fields to populate. npx cannot start the server. This only affects local setups. Confirm that node --version reports Node.js 20 or newer, and that your network can reach the npm registry. The hosted MCP server does not use npx and is unaffected by local Node.js issues.