Alterlab

io.alterlabPublished by alterlab.ioOfficial publisherv1.13.1Updated Nov 7, 2026

Web scraping MCP server — scrape, extract structured data, screenshot any site with anti-bot bypass.

VerifiedStreamable HTTPWeb executableWeb Search & ScrapingBrowser AutomationData & Analytics

Overview

AI-generated overview

AlterLab scrapes, crawls and screenshots websites with anti-bot bypass, and extracts structured JSON from pages for an AI assistant.

What you can do
  • Scrape single URLs to markdown, text, HTML or JSON, with tier escalation, JS rendering, proxies and browser actions
  • Extract structured fields from content you already hold using profiles or a custom schema
  • Crawl whole sites, list site URLs, and run parallel or asynchronous batch scrapes
  • Search the web, query SERPs, read cached news, and run cited research jobs
  • Capture full-page screenshots and manage change monitors and recurring schedules
  • Check pricing, estimate cost, read balance and usage, and open feedback or support tickets
When to use it
Useful when an assistant needs live web content that plain fetching fails on: bot-protected or JavaScript-heavy pages, structured product or article data, site-wide crawls for indexing, or scheduled change monitoring.
Requirements
Runs as a remote endpoint or locally via the npm package with Node.js. An ALTERLAB_API_KEY is required for most tools; optional ALTERLAB_API_URL overrides the API base. An account with paid credits is needed for scraping, and research jobs use your own LLM key.
Before you install
Scraping, crawling, batches, monitors, schedules and workflow runs spend account credits, so check balance and estimates first. Account creation and API keys are created on the user's behalf with email approval. Stored sessions hold login cookies for authenticated scraping, and support tickets email a human.

Installation

In SourceWeft

  1. Open Alterlab in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/io.alterlab%2Fmcp-server/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "alterlab": {
      "type": "http",
      "url": "https://mcp.alterlab.io/mcp"
    }
  }
}

README

[AlterLab Logo]

AlterLab MCP Server

Give Claude, Cursor, and Windsurf the ability to scrape any website, extract structured data, and take screenshots — with automatic anti-bot bypass.

[npm version] [npm downloads] [license] [Smithery]

Get Started Free →   $1 free balance on signup — up to 5,000 scrapes.


One-Line Install

Claude Code

bash
claude mcp add alterlab -- npx -y alterlab-mcp-server@latest

Then set your API key: export ALTERLAB_API_KEY=sk_live_... or add it to .claude.json (see full setup below).

Cursor

bash
# Add to .cursor/mcp.json — see full config below

Smithery

bash
npx -y @smithery/cli install alterlab-mcp-server --client claude

Why AlterLab Instead of WebFetch or Browser MCP?

Claude's built-in WebFetch tool and open-source browser MCP servers fail on most real-world websites. They cannot bypass Cloudflare, render JavaScript SPAs, or extract structured data.

AlterLab replaces broken fetch tools with one MCP server that actually works:

CapabilityWebFetch / fetch()Browser MCPAlterLab MCP
Anti-bot bypass (Cloudflare, DataDome, Akamai)NoPartialYes — automatic
JavaScript rendering (React, Angular, Vue SPAs)NoYes (slow)Yes — headless Chromium
Structured data extraction (JSON, Schema.org)NoNoYes — built-in profiles
Smart tier escalation (cheapest method first)N/AN/AYes — saves 60-80%
Residential proxy rotation (195+ countries)NoNoYes
Screenshot and PDF captureNoScreenshot onlyYes — both
OCR text extraction from imagesNoNoYes
Cost per requestFree (but fails)Free (but slow)From $0.0002

How Does AlterLab Web Scraping Work?

AlterLab uses a multi-tier scraping architecture. It automatically selects the cheapest method capable of fetching each URL:

  1. Curl ($0.0002/req) — Direct HTTP for static pages, RSS feeds, public APIs
  2. HTTP ($0.0003/req) — TLS fingerprint rotation for moderately protected sites
  3. Stealth ($0.002/req) — Browser impersonation for Cloudflare/DataDome-protected sites
  4. Light JS ($0.0025/req) — Lightweight JS extraction from server-rendered HTML
  5. Browser ($0.004/req) — Full headless Chromium for JavaScript-heavy SPAs

Auto mode starts at Tier 1 and escalates only when blocked. Most websites resolve at Tiers 1-2, so $1 gets you 1,000 to 5,000 scrapes depending on the sites you target.


Installation

Install in Claude Desktop / Claude Code

Add to your Claude config file (~/.claude.json for Claude Code, or Settings for Claude Desktop):

json
{  "mcpServers": {    "alterlab": {      "command": "npx",      "args": ["-y", "alterlab-mcp-server@latest"],      "env": {        "ALTERLAB_API_KEY": "sk_live_your_key_here"      }    }  }}

Install in Cursor

Add to .cursor/mcp.json in your project root:

json
{  "mcpServers": {    "alterlab": {      "command": "npx",      "args": ["-y", "alterlab-mcp-server@latest"],      "env": {        "ALTERLAB_API_KEY": "sk_live_your_key_here"      }    }  }}

Install in Windsurf

Add to Windsurf MCP settings (~/.codeium/windsurf/mcp_config.json):

json
{  "mcpServers": {    "alterlab": {      "command": "npx",      "args": ["-y", "alterlab-mcp-server@latest"],      "env": {        "ALTERLAB_API_KEY": "sk_live_your_key_here"      }    }  }}

Install via Smithery

bash
npx -y @smithery/cli install alterlab-mcp-server --client claude

Get Your API Key

  1. Sign up free — $1 free balance on signup
  2. Go to Dashboard → API Keys and copy your key
  3. Paste it into the ALTERLAB_API_KEY field in your MCP config

Tools

alterlab_scrape — Scrape Any Webpage

Scrape a URL and return its content as markdown, text, HTML, or JSON. Automatically handles anti-bot protection with tier escalation. Returns markdown by default — optimized for LLM context windows.

"Scrape https://www.amazon.com/dp/B0BSHF7WHW and summarize the product"
ParameterTypeDefaultDescription
urlstringrequiredURL to scrape
modeauto | html | js | pdf | ocrautoScraping mode
method / body / content_type / headersenum / string / enum / objectGETPOST support (1.5x cost) and custom target headers
formats(text|json|json_v2|html|markdown|rag|content|raw)[]["markdown"]Output formats
extraction_schema / extraction_promptobject / string—LLM extraction (+$0.001)
extraction_profile / extraction_templateenum—auto, product, article, job_posting, faq, recipe, event, ecommerce_homepage, directory_listing (template is a deprecated alias)
extraction_provider / extraction_modelenum / string—BYOK LLM selection
evidence, promote_schema_org, filter_contentboolean—Extraction behaviour
cache, cache_ttl, force_refreshboolean / number / boolean—Response caching (cache_ttl 60-86400)
render_jsboolean | "auto"API defaultHeadless browser (forces Browser tier, $0.004)
use_proxy, proxy_countryboolean, string—Premium proxy (+$0.0002) and geo-targeting
use_own_proxy, use_system_proxy, proxy_integration_idboolean, boolean, string—Bring-your-own-proxy selection
skip_tls_verificationboolean—Omit (recommended) = verify, fall back on invalid certs; true skip, false require valid cert
wait_for, wait_until, wait_conditionstring—Selector / load-event waits
actionsobject[] (max 20)—Browser actions: wait, wait_for, click, fill, press, scroll, infinite_scroll, screenshot, evaluate
screenshot, generate_pdf, ocrboolean—Add-ons (+$0.0002 / +$0.0004 / +$0.001)
scroll_to_load, scroll_count, enable_scrollboolean / 1-10 / boolean—Lazy-load handling
include_iframes, flatten_shadow_dom, block_images, remove_cookie_bannersboolean—Rendering options
section_filterobject—Filter for json_v2 sections
session_id, cookies, session_headersUUID, object, object—Authenticated scraping
sticky_session, sticky_session_ttlstring, 300-7200—Reuse cookies and exit IP across calls (paid plans)
location{country, language}—Geo-targeting
cost_controlsobject—force_tier, max_tier, max_credits, prefer_cost, prefer_speed, fail_fast, time_budget (prefer_cost, prefer_speed, fail_fast also accepted at top level)
embeddingsobject—enabled, model, chunk_size, chunk_overlap (+$0.001/page)
sync_policyauto | wait_until_deadlineautoWait behaviour for long scrapes
timeout, max_response_bytes, include_raw_htmlnumber, number, boolean90, 5 MB, falseLimits and raw output
estimate_firstbooleanfalseRun a free cost estimate first

Not exposed: source (dashboard tracking tag), sync (the tool is always synchronous), webhook_url (use alterlab_batch/alterlab_crawl webhooks). If a scrape outlives the ~85s synchronous window the tool returns a job_id; fetch it with alterlab_get_job.

alterlab_extract — Extract Structured Data

Extract structured fields from HTML, text or markdown content using pre-built profiles or custom JSON Schema. Returns clean JSON — ready for databases, spreadsheets, or downstream processing.

"Extract the product name, price, and rating from this Amazon page"
ParameterTypeDefaultDescription
contentstring (max 500,000)requiredHTML, text or markdown you already have (this tool does not fetch a URL)
content_typehtml | text | markdownhtmlType of content
extraction_profile / extraction_templateenum—Profile: auto, product, article, job_posting, faq, recipe, event, ecommerce_homepage, directory_listing
extraction_schemaobject—Custom JSON Schema for structured output
extraction_promptstring—Natural language extraction instructions
extraction_provider / extraction_modelenum / string—BYOK LLM selection
formatsenum[]["json"]Output formats
source_url, evidencestring, boolean—Context URL and provenance
cache, cache_ttlauto | skip | only, numberautoExtraction result cache

To scrape and extract in one step, use alterlab_scrape with extraction_schema.

Extraction profiles:

  • Product — name, price, currency, rating, reviews, availability, images, description
  • Article — title, author, published date, body text, featured image
  • Job Posting — title, company, location, salary, description, requirements
  • FAQ — question-answer pairs
  • Recipe — ingredients, instructions, prep time, servings
  • Event — name, date, location, description, organizer

alterlab_screenshot — Screenshot Any Page

Take a full-page screenshot of any URL. Returns a PNG image directly in the conversation — no URLs to copy, no files to download.

"Take a screenshot of our landing page at https://alterlab.io"
ParameterTypeDefaultDescription
urlstringrequiredURL to screenshot
wait_forstring—CSS selector to wait for before capture
wait_untilenumnetworkidlenetworkidle, domcontentloaded, or load
timeoutnumber90Timeout in seconds (1-300)
use_proxy, proxy_countryboolean, string—Premium proxy and geo-targeting
session_id, cookiesUUID, object—Screenshot pages behind a login
location{country, language}—Geo-targeting

alterlab_estimate_cost — Estimate Before You Scrape

Check how much a scrape will cost before running it. Returns the predicted tier, cost per request, and confidence level.

"How much would it cost to scrape linkedin.com?"
ParameterTypeDefaultDescription
urlstringrequiredURL to estimate
modeenumautoScraping mode
methodGET | POSTGETPOST costs 1.5x
render_jsboolean | "auto"falseInclude JS rendering cost
use_proxy, use_own_proxybooleanfalseInclude proxy cost / BYOP discount
screenshot, generate_pdf, ocrboolean—Include add-on cost

alterlab_get_job — Fetch an Async Job

Fetch the status and result of a scrape that returned a job_id (a scrape that outlived the synchronous wait window). Parameter: job_id (string, required).

alterlab_check_balance — Check Your Credits

Check your account balance, total deposited, and total spent. No parameters needed.

"Check my AlterLab balance"

alterlab_list_sessions — List Stored Sessions

List all stored sessions for authenticated scraping. Sessions contain cookies for specific domains, allowing you to scrape content behind login walls.

"List my stored sessions"

alterlab_create_session — Create a Session

Create a new stored session with cookies from a logged-in browser. The session is stored securely and can be reused across multiple scrape requests.

"Create an Amazon session with these cookies: session-id=abc123, session-token=xyz789"
ParameterTypeDefaultDescription
namestringrequiredHuman-readable name (e.g., "My Amazon Account")
domainstringrequiredDomain (e.g., "amazon.com")
consentbooleanrequiredMust be true: explicit GDPR consent to store the cookies (the API rejects creation otherwise)
cookiesRecord<string,string> | cookie objects[]—Cookies as key-value pairs or {name, value, domain, path, ...} objects
headersRecord<string,string>—Custom headers (e.g. a User-Agent)
expires_at, notesstring—Expiry (ISO 8601) and notes
auto_refresh_enabled, notify_before_expiry, notify_on_failurebooleantrueHealth checks and notifications
organization_id, sharedUUID, boolean—Organization sharing

alterlab_validate_session — Validate a Session

Check whether a stored session is still active and its cookies are valid.

"Is my Amazon session still valid?"
ParameterTypeDefaultDescription
session_idstring (UUID)requiredSession ID to validate

alterlab_delete_session — Delete a Session

Permanently delete a stored session and its cookies.

"Delete session abc-123-def"
ParameterTypeDefaultDescription
session_idstring (UUID)requiredSession ID to delete

Authenticated Scraping

AlterLab MCP supports scraping pages that require authentication. This enables AI agents to access user-specific content like order histories, account dashboards, and member-only pricing.

How It Works

  1. Create a session with cookies from a logged-in browser using alterlab_create_session
  2. Scrape authenticated pages by passing the session_id to alterlab_scrape
  3. Manage sessions with list, validate, and delete tools

Example: Check Amazon Prime Pricing

User: "What's my Prime member price for this product?"
Claude: [calls alterlab_list_sessions → finds Amazon session]Claude: [calls alterlab_scrape with session_id for authenticated pricing]Claude: "The Prime member price is $24.99 (public price: $34.99)"

Inline Cookies vs Stored Sessions

  • Stored sessions (session_id): Best for repeated access to the same domain. Create once, reuse across requests.
  • Inline cookies (cookies): Best for one-off authenticated requests where you don't need to save the session.

What Can You Do with AlterLab MCP?

Research and Analysis

Ask Claude to scrape and analyze websites in real-time:

  • "Scrape the top 5 results from this Google search and summarize them"
  • "Extract all product prices from this Amazon category page"
  • "Compare the pricing pages of these 3 competitors"

Code Generation with Real Data

Let Cursor or Windsurf fetch live data while building:

  • "Scrape this API documentation page and generate TypeScript types from it"
  • "Extract the color palette from this website and create a Tailwind config"
  • "Screenshot this design and recreate it in React"

Content and SEO

Use Claude to analyze content at scale:

  • "Scrape this blog post and suggest improvements for SEO"
  • "Extract all FAQ entries from this help center and create a structured dataset"
  • "Compare our landing page to the competitor's and identify gaps"

Monitoring and Alerts

Build agentic workflows that watch the web:

  • "Check if this product is back in stock"
  • "Scrape this page daily and alert me when the price drops below $50"
  • "Monitor this job board for new senior engineering positions"

Pricing — Pay-As-You-Go Web Scraping

No subscriptions. No monthly minimums. Add balance and use it whenever you need it.

Base Scraping Costs

TierMethodCost per RequestUse Case
CurlDirect HTTP$0.0002Static pages, RSS feeds, public APIs
HTTPTLS fingerprinting$0.0003Sites with basic bot detection
StealthBrowser impersonation$0.002Cloudflare, DataDome, PerimeterX protected sites
Light JSJSON extraction$0.0025Server-rendered pages needing structured data
BrowserHeadless Chromium$0.004Full JavaScript SPAs (React, Angular, Vue)

Optional Add-Ons

Add-OnExtra CostDescription
JavaScript Renderingforces Browser tierNo separate add-on: render_js bills the Browser tier ($0.004)
PDF Generation+$0.0004PDF of the rendered page
LLM Extraction / Embeddings+$0.001extraction_schema / extraction_prompt, embeddings
POST requestsx1.5method: "POST" costs 1.5x the tier price
Own proxy (BYOP)-20%use_own_proxy discount on the tier price
Search$0.001 / $0.004duckduckgo / google and bing engines
Screenshot Capture+$0.0002Full-page PNG screenshot
Premium Proxy+$0.0002Geo-targeted residential proxy (195+ countries)
OCR Text Extraction+$0.001Extract text from images on the page

$1 = 5,000 light scrapes. New accounts get $1 free balance on signup.


Environment Variables

VariableRequiredDefaultDescription
ALTERLAB_API_KEYYes—Your API key (get one free)
ALTERLAB_API_URLNohttps://api.alterlab.ioAPI base URL (for self-hosted or development)

Frequently Asked Questions

How do I add web scraping to Claude, Cursor, or Windsurf?

Install the AlterLab MCP server. For Claude Code, run claude mcp add alterlab -- npx -y alterlab-mcp-server@latest and set your ALTERLAB_API_KEY. For Claude Desktop, Cursor, or Windsurf, add the JSON config block to your MCP settings file. Once configured, your AI assistant can scrape any URL, extract structured data, and take screenshots directly in conversation.

Can Claude scrape websites that are behind Cloudflare or anti-bot protection?

Yes. AlterLab automatically handles Cloudflare, DataDome, PerimeterX, Akamai, and other anti-bot systems. It uses a multi-tier approach that starts with the cheapest method and escalates only when blocked. You don't need to configure anything — anti-bot bypass is fully automatic.

What is an MCP server and how does it work with Claude?

MCP (Model Context Protocol) is Anthropic's open standard for connecting AI assistants to external tools and data sources. An MCP server is a small program that exposes tools — like web scraping — that Claude, Cursor, or Windsurf can call during a conversation. The AlterLab MCP server gives your AI assistant 23 tools: scrape, extract, screenshot, crawl, search, map, batch scraping, session management, beta features, and more.

How is AlterLab different from Firecrawl, ScrapingBee, or Apify MCP servers?

AlterLab starts at $0.0002 per request — 5-20x cheaper than most scraping APIs — because it only uses expensive browser rendering when a site actually requires it. Smart tier escalation means you pay for what each site needs, not the maximum. AlterLab also includes built-in structured data extraction with pre-built profiles (product, article, job posting, etc.).

Can I scrape Amazon, Walmart, and other e-commerce sites from Claude?

Yes. AlterLab handles all major e-commerce anti-bot protection. Use the alterlab_extract tool with extraction_profile: "product" to get structured JSON: product name, price, currency, rating, review count, availability, and images — ready for analysis, comparison, or data pipelines.

Can Cursor scrape documentation and generate code from it?

Yes. With AlterLab MCP installed in Cursor, you can ask it to scrape API documentation, library docs, or any reference page and generate TypeScript types, API clients, or component code from the live content. This is more reliable than relying on the LLM's training data, which may be outdated.

Does AlterLab MCP work with JavaScript-heavy sites (React, Angular, Vue)?

Yes. Use render_js: true or set mode: "js" to enable full headless Chromium rendering. AlterLab renders the complete page including all JavaScript, waits for dynamic content to load, then extracts content from the fully rendered DOM. This works for React, Angular, Vue, Next.js, and any other JavaScript framework.

What output format is best for AI and LLM context windows?

Use markdown (the default). It preserves document structure — headings, tables, lists, links — while being 60-80% smaller than raw HTML. Claude, GPT-4, and other LLMs process markdown significantly better than HTML. AlterLab's markdown output is specifically optimized for LLM context windows.

Is there rate limiting?

Free-tier accounts have rate limits. Adding any balance removes rate limits. The MCP server includes automatic retry with exponential backoff for transient rate limit errors (429).

Can I use this MCP server for large-scale scraping?

Yes. For parallel scraping, use alterlab_batch to scrape up to 100 URLs in a single request — much faster than sequential calls. For crawling entire domains, use alterlab_crawl. You can also build agentic workflows that scrape many URLs sequentially, or use the n8n integration for workflow automation.


Error Handling

The MCP server returns helpful error messages with suggested next actions:

ErrorWhat HappensSuggested Action
401 UnauthorizedInvalid API keyCheck ALTERLAB_API_KEY is set correctly
402 Insufficient CreditsBalance too lowRun alterlab_check_balance, add funds
403 ForbiddenSite blocked the requestTry render_js: true + use_proxy: true
429 Rate LimitedToo many requestsAutomatic retry with backoff
504 Gateway TimeoutScrape took too longIncrease timeout, simplify request

Agentic Workflows — AI Agents That Scrape the Web

AlterLab MCP turns any AI agent into a web-capable agent. Instead of relying on stale training data, your agent can fetch live information from any website during execution.

Use Cases for AI Agents

  • Research agents — scrape multiple sources, cross-reference facts, generate reports with citations
  • Data pipeline agents — extract structured product/pricing/job data on a schedule
  • Competitive intelligence — monitor competitor pages, track pricing changes, detect new features
  • Content generation — scrape real data to ground LLM output in facts, not hallucinations
  • Lead enrichment — scrape company websites to enrich CRM records with live data
  • Compliance monitoring — check regulatory pages, terms of service, and policy updates

Compatible AI Frameworks and Clients

Works with any tool that supports MCP (Model Context Protocol):

  • Claude Desktop / Claude Code — Anthropic's AI assistant
  • Cursor — AI-powered code editor
  • Windsurf — Codeium's AI IDE
  • Cline — VS Code AI assistant
  • GitHub Copilot — via MCP configuration
  • Custom agents — any framework using the MCP SDK (Python, TypeScript, Go)
  • n8n — workflow automation via n8n-nodes-alterlab

Contributing

bash
git clone https://github.com/RapierCraft/alterlab-mcp-server.gitcd alterlab-mcp-servernpm installnpm run build

Support

License

MIT

Source: README.md at commit 2bd2f49

Tools

26

alterlab_scrape

Scrape URL

Fetch one URL and return its content as clean markdown, text, HTML, or JSON. Use when a normal fetch returns 403/429, a bot-protection challenge page, a CAPTCHA, or an empty JavaScript shell. Website challenges and JavaScript-heavy pages are handled automatically by a 5-tier system that starts at the cheapest tier that works and escalates only when needed. Returns markdown by default, ready for LLM context. Supports GET and POST via method, structured extraction via extraction_schema or extraction_prompt, and cost caps via cost_controls. Supports browser actions via actions, plus screenshot and generate_pdf; the response includes action_results, one entry per action with index, type, success, error, result (evaluate) and screenshot_url (screenshot actions). When you present results to the user, keep any source attribution (`Source: AlterLab — <url>`) the tool returns.

Parametersurlrequiredbodymodecachemethodactionscookiesformatstimeoutevidencelocationtemplate+28 more

alterlab_extract

Extract Structured Data

Extract structured data (prices, product info, contact details, custom fields) as JSON from HTML, text or markdown you already hold. Use when you have content and need specific fields. Does not fetch a URL: to fetch and extract in one step, use alterlab_scrape with extraction_schema. LLM extraction (extraction_prompt, extraction_schema) requires your own LLM API key (OpenAI, Anthropic, OpenRouter, etc.) added in the dashboard BYOK settings; without one it fails with byok_key_required. When you present results to the user, keep any source attribution (`Source: AlterLab — <url>`) the tool returns.

Parameterscachecontentrequiredformatsevidencecache_ttlsource_urlcontent_typeextraction_modelextraction_promptextraction_schemaextraction_profileextraction_provider+1 more

alterlab_screenshot

Capture Screenshot

Capture a full-page PNG screenshot of one URL, an image rather than text content. Use when a normal fetch returns 403/429, a bot-protection challenge page, a CAPTCHA, or an empty JavaScript shell. Works on anti-bot-protected sites, rendered in a real headless browser. Use wait_for to wait for an element and wait_until to control load timing. Pass actions (for example dismiss_consent or evaluate) to prepare the page; the screenshot is captured after they run and action_results is returned. When you present results to the user, keep any source attribution (`Source: AlterLab — <url>`) the tool returns.

Parametersurlrequiredactionswait_forwait_until

alterlab_crawl

Crawl Website

Crawl a whole website and return the content of every page, for RAG, indexing or site-wide export. Use when you need many pages from one domain; for one URL use alterlab_scrape, for a URL list only use alterlab_map. Works on JavaScript-heavy and protected sites, with anti-bot handling on every page. Returns a crawl_id immediately; results are available from GET /api/v1/crawl/{crawl_id}. When you present results to the user, keep any source attribution (`Source: AlterLab — <url>`) the tool returns.

Parametersurlrequiredformatsheaderssitemaptimeoutwait_formax_depthmax_pagesrender_jsuse_proxywebhook_urlsitemap_path+9 more

alterlab_research

Deep Research

Answer a hard question with a cited report or structured JSON by running a budgeted research job: it plans searches, reads many sources, follows leads and attaches a citation to every claim. Use when one search is not enough; for a quick lookup use alterlab_search. Runs on your own LLM key (BYOK); without one it returns byok_key_required and charges nothing. Set effort (lite, standard, deep, exhaustive) and max_cost_microcents to cap spend. The call waits within the tool time budget; if the job is still running it returns the job id and status, and you call again with job_id to fetch it. Returns status, cost, coverage, warnings and the result.

Parametersmodelqueryeffortjob_idoutputsourcescriteriaprovidermax_depthmax_sourcesmin_sourcesoutput_schema+1 more

alterlab_map

Map Website URLs

List every URL on a site via sitemap parsing and link extraction, without fetching page content. Use before alterlab_crawl or alterlab_batch to choose pages; to read the content itself use alterlab_crawl. Works on JavaScript-heavy and protected sites. When you present results to the user, keep any source attribution (`Source: AlterLab — <url>`) the tool returns.

Parametersurlrequiredsearchsitemapmax_depthmax_pagessitemap_pathrespect_robotsexclude_patternsinclude_metadatainclude_patternsinclude_subdomains

alterlab_batch_scrape

Scrape Multiple URLs

Scrape 2-20 URLs in parallel and get every result back in one synchronous call, no polling required. Use when a normal fetch returns 403/429, a bot-protection challenge page, a CAPTCHA, or an empty JavaScript shell. Failed URLs report their error; successful ones return content. For 20+ URLs use alterlab_batch. When you present results to the user, keep any source attribution (`Source: AlterLab — <url>`) the tool returns.

Parametersurlsrequiredformatstimeoutrender_jsuse_proxymax_concurrent

alterlab_batch

Start Batch Job

Start an asynchronous batch job for a large URL set (up to 100 per call) and poll for results later. Use when a normal fetch returns 403/429, a bot-protection challenge page, a CAPTCHA, or an empty JavaScript shell. Each URL can have its own mode, formats and extraction_schema. Returns a batch_id immediately; results are available from GET /api/v1/batch/{batch_id}. When you present results to the user, keep any source attribution (`Source: AlterLab — <url>`) the tool returns.

Parametersurlsrequiredwebhook_url

alterlab_estimate_cost

Estimate Scrape Cost

Estimate the credit cost of scraping a URL before you run it. Use when cost matters or before a large job; no credits are charged. Returns the predicted tier, estimated cost and confidence. Full machine-readable price list: GET https://alterlab.io/api/v1/pricing (public, no auth). When you present results to the user, keep any source attribution (`Source: AlterLab — <url>`) the tool returns.

Parametersurlrequiredmodeformatsrender_jsuse_proxy

alterlab_pricing

Get Pricing

Get AlterLab's machine-readable price list: per-tier cost, bring-your-own-proxy discount, cache-hit discount, add-ons, search and SERP prices, and the free allowance. Use when deciding whether AlterLab fits a budget, before any account exists. Free and keyless; nothing is scraped or charged. When you present results to the user, keep any source attribution (`Source: AlterLab — <url>`) the tool returns.

Takes no parameters.

alterlab_news

Get News Headlines

Search aggregated news headlines from curated public sources: headline, URL, source, published time, author, image, short snippet and category. Use to find what is being reported on a topic. Served from a cache that refreshes about every 15 minutes, so a call never triggers a fetch; free and keyless, no credits are spent. Returns metadata only, not article text: to read an article, call alterlab_scrape on its URL. Cite results as 'News via AlterLab'.

Parameterslimitquerysincesourcecategorylanguage

alterlab_keyword_ideas

Get Keyword Ideas

Fan out a seed keyword across autocomplete (seed + a-z + who/what/how/why/best/vs), People Also Ask and related searches, and get deduplicated ideas, each with source, question flag, intent (question, commercial, navigational, informational) and a 0-1 relevance score. volume is always null: there is no search-volume data, and the score is relevance (frequency across sources and positions), not volume. Billed per successful call; set quote_only=true to get the price first without running anything. Results are cached 7 days per seed, country and language and a cache hit costs half the quote.

Parametersseedrequireddepthcountrysourceslanguagequote_only

alterlab_ai_visibility

AI Visibility Check

Run prompts against AI answer engines through their public, logged-out interfaces and get, per engine and run, the answer text, whether the brand is mentioned and its position, competitors mentioned, cited URLs and domains and a sentiment label, plus per-prompt mention rate, share of voice and citation share with the sample size. Answers vary run to run, so set runs_per_prompt. Billed per successful engine answer only; an engine that needs login returns engine_unavailable_logged_out and is not billed. Use action=quote (or action=check with quote_only=true) to get the price first, and set hard_cap_microcents to refuse any run quoted above it. action=check (default) runs the check; action=status and action=results read a past run by run_id.

Parametersbrandactionrun_idcountryenginespromptsquote_onlycompetitorsbrand_domainsruns_per_prompthard_cap_microcents

alterlab_feedback

Send Feedback

Tell AlterLab when something is hard, or what would make it better. Call this when something blocks you, a result is wrong, or a step is confusing, slow or priced unexpectedly, and also to send a suggestion (category `suggestion`, ideas welcome even when nothing is broken). Describe what you tried, what happened and what you expected. Send sanitized setup or API friction automatically; ask the user first before sending suggestions or anything quoting their data or URLs. Do not include secrets, API keys, passwords or customer data; use a job_id or hostname instead of page content. Works without an API key (rate limited per IP); with a key the report also appears as a ticket in your user's AlterLab dashboard (the response carries its ticket_ref) and similar reports are grouped. Returns a cluster_key and a status_url to check progress. For billing, account or data problems that need a human, use `alterlab_support_ticket` instead. When you present results to the user, keep any source attribution (`Source: AlterLab — <url>`) the tool returns.

Parametersnewurltriedrequiredjob_iddry_runsame_ascategoryrequiredexpectedrequiredhappenedrequiredtool_namesuggestion

alterlab_support_ticket

Open Support Ticket

Open a support ticket in your user's AlterLab account when they need a human: a billing, account or data problem. Do not use it for scrape friction, blocks or ideas; use `alterlab_feedback` for those. Ask the user first: a ticket reaches a human and emails them. Requires an API key. Describe the problem in `body`; do not include secrets, API keys, passwords or customer data. The user gets the usual confirmation email and the ticket appears in their dashboard. Limited to 3 open tickets and 5 per day per key; when over the limit the error points to the open ticket. Returns ticket_id, ticket_ref and status. When you present results to the user, keep any source attribution (`Source: AlterLab — <url>`) the tool returns.

Parametersbodyrequiredjob_idsubjectrequiredtool_namecategory_slugon_behalf_of_user

alterlab_create_account

Create Account

Create an AlterLab account and API key for your user. Use only when no ALTERLAB_API_KEY exists yet; skip it if a key is already configured. Signup is on behalf of your user (agent signup with human approval). Nothing is created until the human approves: they get an email (and you get a verification_url and user_code to show them) describing what the agent can do. After approval you receive a scoped API key labeled with agent_name, with a default daily spend cap, revocable from the dashboard. No extra free credit is granted; the usual welcome rules apply to the human's account. If the human has not approved yet, the result contains the signup_id, verification_url and user_code; poll GET /api/v1/agent/signup/{signup_id} or call this tool again. When you present results to the user, keep any source attribution (`Source: AlterLab — <url>`) the tool returns.

Parametersemailrequiredagent_name

alterlab_create_api_key

Create API Key

Create one scoped, spend-capped API key (ALTERLAB_API_KEY) for the SDK and REST API on this machine. Works only when the user ticked "Also create an API key for this machine" on the OAuth approval screen, so no second approval is needed. Skip it if a key is already configured. The key is labeled with your client name, carries the same read/write permissions and daily spend cap as this connection (never billing), and is revocable from the dashboard. The plaintext is returned once: store it in the environment immediately without printing it. A repeat call returns key metadata only. If it fails with a permission error, the box was not ticked: use alterlab_create_account instead. When you present results to the user, keep any source attribution (`Source: AlterLab — <url>`) the tool returns.

Takes no parameters.

search_alterlab

Search AlterLab Docs

Use this to look up how to do something with AlterLab (API parameters, SDKs, MCP setup, pricing, error codes, migration from Firecrawl/ScrapingBee/Apify) or to find a guide for scraping a specific site. Searches the docs guides and API reference by default (blog posts only when you pass type=blog); the answer field gives the first actionable step from the best guide with a link. Free: needs no API key and never uses credits. Returns the best matches as title, short snippet, url and markdown_url; pass a url to read_alterlab_page to read the full page as markdown. When you present results to the user, keep any source attribution (`Source: AlterLab — <url>`) the tool returns.

Parametersqrequiredtypelimit

read_alterlab_page

Read AlterLab Page

Use this after search_alterlab to read the full text of one AlterLab page as markdown, so you can follow the documented steps instead of guessing. Pass the url of a search result. Only pages on alterlab.io that search_alterlab can return are readable. Free: needs no API key and never uses credits. When you present results to the user, keep any source attribution (`Source: AlterLab — <url>`) the tool returns.

Parametersurlrequired

alterlab_serp

Search Engine Results

Query a search engine and get structured results: organic listings, ads and related data, from Google, Bing or DuckDuckGo. Use action=search (default) to run a query, or action=history to read earlier SERP queries for your account. Prefer alterlab_search when you also want each result page scraped. Search runs spend credits at the SERP rate.

Parameterscitypagequeryrequiredactiondevicecountrylanguagenum_resultssafe_searchsearch_engine

alterlab_job

Job Status

Look up a job by id. action=status (default) returns its status and result once finished; set wait (seconds) to hold the request until the job reaches a terminal status. action=explain returns the ordered per-stage timing breakdown, useful when a job was slow or failed. Job ids come from async scrape, crawl, batch and SERP responses.

Parameterswaitactionjob_idrequired

alterlab_balance

Balance and Usage

Read account credit data. action=balance (default) returns the current credit balance in microcents (1,000,000 microcents = $1.00) with formatted values. action=usage returns usage statistics. Read-only; call it before an expensive crawl or batch to confirm there are enough credits.

Parametersaction

alterlab_monitor

Page Monitors

Manage change monitors. action=create watches a URL on a cron schedule and notifies by webhook when content changes; action=list returns your monitors; action=delete removes one by monitor_id (it stops running and cannot be restored). Each check spends credits like a scrape.

Parametersurlnamelimitactionrequiredoffsetformatstimezonediff_modenotify_onmonitor_idactive_onlywebhook_url+2 more

alterlab_schedule

Scrape Schedules

Manage recurring scrape schedules. action=create runs a scrape of one or more URLs on a cron expression; action=list returns your schedules; action=delete removes one by schedule_id (it stops triggering). Every run spends credits like a scrape; minimum intervals depend on your balance tier.

Parameterscronnameurlslimitactionrequiredoffsetformatstimezoneactive_onlyschedule_idwebhook_url

alterlab_workflow_run

Run Workflow

Start an execution of a workflow you saved in the AlterLab dashboard. Optional input_data is passed to the workflow's webhook trigger node. Returns run_id, workflow_id and the initial status. The run spends credits for the steps it executes.

Parametersinput_dataworkflow_idrequired

Version history

10
  1. v1.13.1LatestNov 7, 2026
  2. v1.12.11Nov 6, 2026
  3. v1.12.10Nov 5, 2026
  4. v1.12.9Nov 4, 2026
  5. v1.12.2Nov 4, 2026
  6. v1.12.0Nov 3, 2026
  7. v1.11.2Nov 3, 2026
  8. v1.10.0Oct 30, 2026
  9. v1.9.0Oct 16, 2026
  10. v1.8.0Sep 16, 2026

Score

100% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

Other Alterlab integrations