
Mcp Server
Gives Claude the ability to scrape websites that block standard HTTP clients. Exposes three core tools: alterlab_scrape returns page content as markdown or HTML with automatic anti-bot bypass for Cloudflare and similar protections, alterlab_extract pulls structured data using built-in profiles for products, articles, jobs, recipes, and events or custom JSON schemas, and alterlab_screenshot captures full-page PNGs with configurable wait conditions. Uses tiered scraping that starts with simple curl requests and escalates to headless Chromium only when needed. Supports residential proxy rotation across 195 countries, JavaScript rendering for SPAs, and session management for authenticated scraping. Requires an AlterLab API key with pay-per-use pricing starting at $0.0002 per request.
- GitHub stars
- 2
- tools
- 26
- transport
- STDIO, HTTP
- last updated
- Nov 12, 2026
Install
From registry metadata$ npx add-mcp https://mcp.alterlab.io/mcp --name alterlabRun in your terminal. add-mcp asks which agents to add it to (Claude Code, Codex, Cursor and more). Add -g to install it for every project.
Review the command, arguments and environment values before installing. MCP servers run with your local permissions.
Other ways
Claude Code
$ claude mcp add --transport http alterlab https://mcp.alterlab.io/mcpRun in your terminal. Add --scope user to make it available in every project.
Tools
Verified live · 26 toolsVerified live against the running server on Nov 6, 2026.
alterlab_scrapeFetch 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 s...40 params
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 s...
actionsarrayblock_imagesbooleanbodystringcachebooleancache_ttlnumbercontent_typestringapplication/json · application/x-www-form-urlencoded · text/plain · application/graphqlcookiesobjectcost_controlsobjectestimate_firstbooleanevidencebooleanextraction_modelstringextraction_profilestringextraction_promptstringextraction_providerstringopenai · anthropic · openrouter · groqextraction_schemaobjectfail_fastbooleanfilter_contentbooleanforce_refreshbooleanformatsarraygenerate_pdfboolean+20 more parameters. See the server's own documentation for the full schema.
alterlab_extractExtract 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_...13 params
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_...
cachestringauto · skip · onlydefault: autocache_ttlintegercontent*stringcontent_typestringhtml · text · markdowndefault: htmlevidencebooleanextraction_modelstringextraction_profilestringextraction_promptstringextraction_providerstringopenai · anthropic · openrouter · groqextraction_schemaobjectextraction_templatestringformatsarraysource_urlstringalterlab_screenshotCapture 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...4 params
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...
actionsarrayurl*stringwait_forstringwait_untilstringnetworkidle · domcontentloaded · loaddefault: networkidlealterlab_crawlCrawl 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...21 params
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...
cost_controlsobjectexclude_patternsarrayextraction_modelstringextraction_profilestringauto · product · article · job_posting · faq · recipeextraction_schemaobjectformatsarrayheadersobjectinclude_patternsarrayinclude_subdomainsbooleanmax_concurrencyintegermax_depthintegermax_pagesintegerrender_jsvaluerespect_robotsbooleansitemapstringinclude · skip · onlydefault: includesitemap_pathstringtimeoutnumberurl*stringuse_proxybooleanwait_forstring+1 more parameters. See the server's own documentation for the full schema.
alterlab_searchSearch the web and read the results in one call. Returns a unified, vendor-neutral result list (URLs, titles, snippets) with each result page as concise markdown and a per-result content_status (ok, partial, blocked, timeout, dead_origin, pending; only fetched pages are billed...13 params
Search the web and read the results in one call. Returns a unified, vendor-neutral result list (URLs, titles, snippets) with each result page as concise markdown and a per-result content_status (ok, partial, blocked, timeout, dead_origin, pending; only fetched pages are billed...
concisebooleancountrystringdomainstringextraction_schemaobjectformatsarraylanguagestringmodestringfast · standard · deepnum_resultsintegerpageintegerquery*stringsafe_searchbooleanscrape_resultsbooleantime_rangestringhour · day · week · month · yearalterlab_researchAnswer 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 you...13 params
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 you...
criteriaarrayeffortstringlite · standard · deep · exhaustivejob_idstringmax_cost_microcentsintegermax_depthintegermax_sourcesintegermin_sourcesintegermodelstringoutputstringjson · report · bothoutput_schemaobjectproviderstringquerystringsourcesobjectalterlab_mapList 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...11 params
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...
exclude_patternsarrayinclude_metadatabooleaninclude_patternsarrayinclude_subdomainsbooleanmax_depthintegermax_pagesintegerrespect_robotsbooleansearchstringsitemapstringinclude · skip · onlydefault: includesitemap_pathstringurl*stringalterlab_batch_scrapeScrape 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 conten...6 params
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 conten...
formatsarraymax_concurrentintegerrender_jsbooleantimeoutintegerurls*arrayuse_proxybooleanalterlab_batchStart 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...2 params
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...
urls*arraywebhook_urlstringalterlab_estimate_costEstimate 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 au...5 params
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 au...
formatsarraymodestringauto · html · js · pdf · ocrdefault: autorender_jsbooleanurl*stringuse_proxybooleanalterlab_pricingGet 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 scra...
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 scra...
No parameters. Call it with no arguments.
alterlab_newsSearch 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...6 params
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...
categorystringlanguagestringlimitintegerquerystringsincestringsourcestringalterlab_keyword_ideasFan 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 i...6 params
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 i...
countrystringdepthinteger1 · 2languagestringquote_onlybooleanseed*stringsourcesarrayalterlab_ai_visibilityRun 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, s...11 params
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, s...
actionstringcheck · quote · status · resultsbrandstringbrand_domainsarraycompetitorsarraycountrystringenginesarrayhard_cap_microcentsintegerpromptsarrayquote_onlybooleanrun_idstringruns_per_promptintegeralterlab_feedbackTell 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). De...11 params
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). De...
category*stringblocked · wrong_result · confusing · slow · pricing · suggestiondry_runbooleanexpected*stringhappened*stringjob_idstringnewbooleansame_asstringsuggestionstringtool_namestringtried*stringurlstringalterlab_support_ticketOpen 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 AP...6 params
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 AP...
body*stringcategory_slugstringjob_idstringon_behalf_of_userbooleansubject*stringtool_namestringalterlab_create_accountCreate 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...2 params
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...
agent_namestringemail*stringalterlab_create_api_keyCreate 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....
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....
No parameters. Call it with no arguments.
search_alterlabUse 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 whe...3 params
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 whe...
limitintegerq*stringtypestringread_alterlab_pageUse 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 an...1 params
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 an...
url*stringalterlab_serpQuery 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 eac...10 params
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 eac...
actionstringsearch · historycitystringcountrystringdevicestringdesktop · mobilelanguagestringnum_resultsintegerpageintegerquery*stringsafe_searchbooleansearch_enginestringgoogle · bing · duckduckgoalterlab_jobLook 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 id...3 params
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 id...
actionstringstatus · explainjob_id*stringwaitintegeralterlab_balanceRead 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 cr...1 params
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 cr...
actionstringbalance · usagealterlab_monitorManage 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.14 params
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.
action*stringcreate · list · deleteactive_onlybooleancheck_intervalstringdiff_modestringsemantic · exact · selectorformatsarraylimitintegermonitor_idstringmonitor_selectorsarraynamestringnotify_onstringchange · alwaysoffsetintegertimezonestringurlstringwebhook_urlstringalterlab_scheduleManage 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...11 params
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...
action*stringcreate · list · deleteactive_onlybooleancronstringformatsarraylimitintegernamestringoffsetintegerschedule_idstringtimezonestringurlsarraywebhook_urlstringalterlab_workflow_runStart 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.2 params
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.
input_dataobjectworkflow_id*stringSponsors
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.
Details
- Repository
- github.com/rapiercraft/alterlab-mcp-server
- Categories
- Search & Web Crawling, Data & Analytics
- Package
alterlab-mcp-server- Transport
- STDIO, HTTP
- Registry
- MCP registry, active
- Tools verified
- Nov 6, 2026