ScrapeUnblocker MCP Server
OfficialSummary: An MCP server that fetches and scrapes any web page through the ScrapeUnblocker API — bypassing Cloudflare/DataDome/PerimeterX/Akamai anti-bot protection — returning HTML, Markdown, AI-parsed JSON, or structured JSON from 100+ site plugins, using your own API key.
Fetch raw HTML (
fetch_html) of any page, with render-wait (css/js), sleep, timeout andproxy_countrygeo-routing options.Read pages as clean Markdown (
fetch_markdown) — main content only, typically 2–25% the size of the HTML — ideal for summarizing or quoting.Extract AI-parsed JSON (
fetch_parsed) from product, listing or article pages, guided by an optional natural-language hint.Interact with pages (
browse_page): run ordered real-browser steps — wait, click, type, select, press keys, scroll — then capture the resulting HTML; it is not read-only and not idempotent.Discover selectors (
list_elements) listing links, inputs, buttons and selects with ready-to-use selectors, then act on them.Search Google (
google_search) for structured SERP JSON: organic results, ads, AI Overview, People also ask, knowledge panel, news, videos, local/shopping;full_urlsfor exact links.Search and read in one call (
search_and_read): AI Overview plus the top 1–5 results as Markdown, the rest as title/URL/snippet.Use 100+ site plugins (
list_pluginsfree, thenrun_plugin) for pre-parsed structured JSON from Amazon, Walmart, Zillow, Booking, Indeed, Google Trends, YouTube, App Store and more.Call popular plugins directly as their own tools:
amazon_search/amazon_product/amazon_reviews,walmart_search,ebay_search,google_shopping,google_local,maps_place_details,google_images,youtube_search/youtube_transcript,zillow_search,indeed_jobs,trustpilot_reviews,booking_hotels.Filter and page results: price ranges, ratings, sort orders, result counts and pagination across listings, jobs, real estate and reviews.
Bring your own key: authenticated via the
SCRAPEUNBLOCKER_KEYenvironment variable; runs over stdio with Claude Code, Claude Desktop or any MCP client.
Bypasses Akamai's anti-bot protection to fetch fully rendered HTML of web pages.
Bypasses Cloudflare's anti-bot protection to fetch fully rendered HTML of web pages.
Runs Google searches and returns organic results as JSON.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ScrapeUnblocker MCP Server Get the HTML of https://example.com which is blocked by Cloudflare."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
ScrapeUnblocker MCP server
A Model Context Protocol server that lets Claude (and any other MCP client) fetch any web page's HTML - or run one of 100+ ready-made site plugins that return structured JSON - through the ScrapeUnblocker scraping API, bypassing anti-bot protection (Cloudflare, DataDome, PerimeterX, Akamai, Shape).
You bring your own API key. Nothing is shared or proxied through us.
Tools
Tool | What it does |
| Fetch the fully rendered HTML of a URL. |
| Run interactive browser |
| List a page's notable elements with a ready-to-use selector for each (selector discovery). |
| Fetch a page and return AI-parsed structured JSON. |
| Run a Google search and return the results page as JSON: organic results with real URLs, favicons, sitelinks and ratings, ads, AI Overview, People also ask, related searches with links, knowledge panel, news, videos, local and shopping results. Set |
| Fetch a page and return it as clean Markdown: the main content with absolute links, without scripts, styles, navigation or footer. Usually 2-25% the size of the HTML, so it is the cheap way for a model to read a page. |
| Search Google and read the top results in one call: Google's AI Overview (when there is one), the first 1-5 result pages as Markdown, and the other results as title, URL and snippet. Billed as one search plus one request per page read. |
| List the ready-made site plugins (100+: Amazon, Walmart, Zillow, Booking.com, Indeed, Google Trends, YouTube, App Store, Ahrefs, ...) with their parameters. Free - it calls nothing. |
| Run one site plugin and return its structured JSON. |
| The most-used site plugins as tools of their own, each with its parameters in the tool schema - one call, no |
Site plugins (structured JSON for known sites)
For many popular sites there is a plugin that returns the data already
parsed - a Target search, a Zillow listing search, an app's App Store reviews,
Google Trends for a few keywords. The model calls list_plugins (optionally
with search: "zillow" or a category) to find the plugin and its
parameters, then run_plugin with name and params (the most-used plugins, listed in
the table above, can also be called directly as their own tools):
{ "name": "target_search", "params": { "query": "coffee maker", "max_results": 20 } }Every plugin and parameter is documented on the plugin pages. Each run is billed like an API request.
Browser steps (interact, then capture)
Some pages only reveal what you need after you interact with them - accept a
cookie banner, click a tab, type into a search box and submit, or scroll to
trigger lazy loading. Pass a steps array to browse_page and those
actions run in a real browser, in order, after the page loads; the resulting
HTML is then returned.
Available actions:
Action | Fields |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Steps are not idempotent - they run once per call - and they act on the
website, so browse_page is the one tool not marked read-only. If a step fails,
browse_page returns which step failed, why, and the page HTML at that moment so
you can fix the selector and retry.
List elements (discover selectors first)
list_elements loads a page and returns a JSON list of its notable elements
(links, inputs, buttons, selects, ...), each with a ready-to-use selector plus
tag, text and useful attributes (name, id, type, placeholder,
aria_label, href, ...):
{ "url": "https://example.com", "count": 42, "elements": [ { "tag": "input", "selector": "#search", "type": "text", "placeholder": "Search", "aria_label": "Search" } ] }The natural workflow is discover, then act: call list_elements to find the
selectors you need, then pass matching steps to browse_page to click/type/
select and capture the resulting HTML.
Related MCP server: SteadyFetch
Get an API key
Sign up and grab your key at app.scrapeunblocker.com. The server
reads it from the SCRAPEUNBLOCKER_KEY environment variable.
Install
Claude Code
The easiest route is the official plugin, which installs this server for you,
prompts for your API key (stored in your OS keychain rather than an environment
variable), and adds a /scrape-url command plus reference skills:
/plugin marketplace add ScrapeUnblocker/claude-code-plugin
/plugin install scrapeunblocker@scrapeunblockerSee ScrapeUnblocker/claude-code-plugin.
To add the bare server instead:
claude mcp add scrapeunblocker \
--env SCRAPEUNBLOCKER_KEY=your_api_key_here \
-- npx -y scrapeunblocker-mcpClaude Desktop
Add this to your claude_desktop_config.json
(Settings → Developer → Edit Config):
{
"mcpServers": {
"scrapeunblocker": {
"command": "npx",
"args": ["-y", "scrapeunblocker-mcp"],
"env": {
"SCRAPEUNBLOCKER_KEY": "your_api_key_here"
}
}
}
}Restart Claude Desktop and the ScrapeUnblocker tools appear.
Any other MCP client
Run the server over stdio:
SCRAPEUNBLOCKER_KEY=your_api_key_here npx -y scrapeunblocker-mcpExample prompts
"Fetch the HTML of https://www.example-shop.com/product/123 and list the price."
"This page keeps blocking me: . Use fetch_html to get it."
"List the elements on , then use browse_page to type 'laptop' into the search box, press Enter, wait for the results, and give me the HTML."
"Search Google for 'best running shoes 2026' and give me the top 5 links."
"Read https://en.wikipedia.org/wiki/Web_scraping as Markdown and summarise it in five bullets."
"Search the web for the current population of Vilnius and cite the pages you read."
"Find coffee makers on Target under $50 and compare them with Walmart's."
"Show Google Trends for 'coffee' vs 'tea' in the US over the last year."
"What are the newest App Store reviews of WhatsApp saying?"
Development
npm install
npm run build # bundles to dist/ with tsup
npm run typecheck
npm test # builds, then runs the tools against a local stand-in API
SCRAPEUNBLOCKER_KEY=... node dist/index.js # run the serverLicense
MIT
Available Tools
24 toolsamazon_productScrape an Amazon product pageARead-only
Fetches a single Amazon product and returns it as JSON: title, brand and brandStoreUrl, parentAsin, manufacturer, modelNumber, partNumber, productCodes (UPC, EAN, GTIN, ISBN), condition, the amazonsChoice, bestSellerBadge, deal and coupon markers, price + currency, listPrice, savingsPercent and savingsAmount, unitPrice, subscribeAndSavePrice, shippingPrice, recentSales, availability (+ a boolean inStock), maxOrderQuantity, rating, reviewCount, ratingDistribution (percent per star), reviewSummary, seller, sellerUrl, sellerId, shipsFrom, fulfilledByAmazon, prime, delivery, returnPolicy, offersCount and offersFromPrice, bestSellersRank, features (bullet points), categories (breadcrumb), description, fromTheManufacturer and fromTheBrand (text and images), importantInformation, ingredients, whatsInTheBox, documents, warrantyAndSupport, productDetails, productOverview, dimensions, weight, dateFirstAvailable, variantDimensions and variants (each with its own ASIN and options), sustainability, protectionPlans, newerModel, sponsoredProducts, relatedProducts, images (the whole gallery) and videos. A field the page does not show is null or empty. Identify the product with either asin (plus marketplace) or a full product url. Other sellers' full offers are not on the product page: only their count and lowest price are returned here, /marketplace/amazon-offers lists them. prime and delivery are what a visitor who is not signed in sees. Amazon prices each page in the currency of the delivery location it infers from the visitor's IP address, so proxy_country defaults to the marketplace's home country (amazon.com -> US) and the call is routed through proxies in that country. The country of the proxy that served the request is reported as exitCountry. Returns JSON. Billed like an API request; listing plugins bill one unit per result page they fetch, so keep max_results modest.
Inputs: url, asin, marketplace, proxy_country.
amazon_reviewsScrape the reviews on an Amazon product pageARead-only
Returns the review data an Amazon product page shows to a signed-out visitor, as JSON: the overall rating, total reviewCount (global ratings), the 5..1-star histogram (percent per star), the AI customersSay summary (overall text plus per-aspect sentiment, mentions, positive, negative, summary and the quoted review excerpts Amazon shows for the aspect) and the top reviews (each with id, url, author, rating, title, body, date, country, fromOtherCountry, verified, helpfulVotes, variant and images). Identify the product with asin (plus marketplace) or a product url. Scope: Amazon only shows its full review list to signed-in customers, so this endpoint returns the public slice on the product page - typically 5 to 13 top reviews, local ones first and then reviews from other countries - not a complete review export. When Amazon hides the top reviews behind a sign-in prompt (common on amazon.com), reviewsGated is true and reviews is empty; the rating, histogram and customers-say data, including its review excerpts, are still returned. Every field is always present and is null when the page does not show it. proxy_country defaults to the marketplace's home country; the country of the proxy that served the request is reported as exitCountry. Returns JSON. Billed like an API request; listing plugins bill one unit per result page they fetch, so keep max_results modest.
Inputs: url, asin, marketplace, proxy_country.
amazon_searchScrape Amazon search listingsARead-only
Searches any regional Amazon marketplace for keyword and returns the result cards as JSON: asin, title, price + currency, listPrice, rating, reviewCount, a clean product url, image, and the sponsored / prime flags. Filter with min_price / max_price, order with sort (featured, price_asc, price_desc, avg_review, newest), and page with page. Fetch each result's full detail (all fields above plus features and images) through POST /marketplace/amazon-product. Some cards show no price on the search page (Amazon defers it, or the item has buying options); those return price: null and are kept in the list rather than dropped. proxy_country defaults to the marketplace's home country so prices are in the expected currency. Returns JSON. Billed like an API request; listing plugins bill one unit per result page they fetch, so keep max_results modest.
Inputs: keyword (required), page, sort, max_price, +3 more.
booking_hotelsScrape Booking.com hotelsARead-only
Searches Booking.com for location and returns the properties as JSON: name, price (with checkin/checkout), reviewScore, address, coordinates, image and a hotel url. Set adults, children, rooms and currency, and collect up to max_results across pages. Prices only appear when check-in/check-out dates are given. Returns JSON. Billed like an API request; listing plugins bill one unit per result page they fetch, so keep max_results modest.
Inputs: location (required), rooms, adults, checkin, +5 more.
browse_pageInteract with a page, then capture itADestructive
Load a web page in a real browser through ScrapeUnblocker, run an ordered list of browser actions on it (accept a cookie banner, click a tab, type into a search box, choose an option, press a key, scroll to trigger lazy loading, wait), then return the resulting HTML. Workflow: first call the list_elements tool to discover the real selectors on the page, then build steps against them. Steps act on the website and are NOT idempotent - they run once per call; never use them to buy, post, delete or change anything unless the user asked for exactly that. If a step fails, this tool returns which step failed, why, and the page HTML at that moment so you can fix the selector and retry. Billed as one request.
Inputs: url (required), steps (required), wait_value, wait_method, +3 more.
ebay_searchScrape eBay search listingsARead-only
Searches any regional eBay marketplace for keyword and returns the listings as JSON: title, price + currency, condition (with a normalised conditionCode), seller (username, feedback percentage and score), shippingCost, sold, watchers, bids, image and a clean item url. Filter with condition, listing_type, min_price/max_price, free_shipping, seller or category, sort with sort, and page with page/page_size (60, 120 or 240 per page). Set marketplace to search a specific site - prices, currency and availability differ between ebay.com, ebay.de, ebay.co.uk and the rest. When eBay finds no exact match it still serves a full page of its own loosely-related suggestions. That case is reported honestly: exactMatches is false and a notice explains it, so those listings are never mistaken for real matches. Returns JSON. Billed like an API request; listing plugins bill one unit per result page they fetch, so keep max_results modest.
Inputs: keyword (required), page, sort, seller, +9 more.
fetch_htmlFetch page HTMLARead-only
Fetch the fully rendered HTML of any web page through ScrapeUnblocker, bypassing anti-bot protection (Cloudflare, DataDome, PerimeterX, Akamai, Shape). Use this when a normal fetch is blocked (403/429, captcha, 'access denied') or when the page needs a real browser to render. Returns the raw HTML as text. To read or summarise a page, fetch_markdown is much smaller. To click, type or scroll before capturing, use browse_page.
Inputs: url (required), wait_value, wait_method, proxy_country, +2 more.
fetch_markdownFetch page as MarkdownARead-only
Fetch a web page in a real browser through the ScrapeUnblocker API (https://docs.scrapeunblocker.com) and return it as clean Markdown: the main content with absolute links, without scripts, styles, navigation or footer. Use it to read, quote or summarise a page; it is usually 2-25% the size of the HTML. Works on JavaScript-rendered pages and on pages that refuse ordinary fetches (403/429, captcha). Use fetch_html instead when you need the markup, selectors or browser steps. Billed as one request.
Inputs: url (required), wait_value, wait_method, proxy_country, +2 more.
fetch_parsedFetch AI-parsed page dataARead-only
Fetch a web page through ScrapeUnblocker and return AI-parsed structured JSON instead of raw HTML (e.g. product details, article content). Best for extracting fields from product, listing or article pages without writing your own HTML parsing. If the page holds no structured data, the result says so and returns the rendered HTML instead (billed like fetch_html).
Inputs: url (required), rules_hint, proxy_country.
google_imagesScrape Google Images resultsARead-only
Runs the Google Images vertical (udm=2) for q and returns the image results as JSON. Every result carries imageUrl (the full-resolution origin image, not a Google thumbnail; for an image found inside a document such as a PDF, which has no URL of its own, it is Google's thumbnail and sourcePageUrl is the document), sourceDomain and googleImagesUrl (the Google Images viewer link, i.e. the /imgres?... URL a browser copies from the result tile), plus sourcePageUrl, title, sourceName, thumbnailUrl, width, height and fileSize where available. Set proxy_country to target a market: the Google market (gl) follows it automatically, and gl is only an optional override. pages fetches up to 5 result pages of ~100 each; every page fetched is billed as one request. time_range (past hour/day/week/month/year) or date_from/date_to limit the results to images Google found in that period, so a repeated scan returns only what is new. Returns JSON. Billed like an API request; listing plugins bill one unit per result page they fetch, so keep max_results modest.
Inputs: q (required), gl, pages, date_to, +4 more.
google_localScrape Google Local business listingsARead-only
Runs a Google Local (tbm=lcl) search for keyword and returns up to ~20 businesses as JSON: name, rating, reviews, price, category, address, phone, website, hours, and a top review_snippet. phone and website are null when Google does not render them for that result - service businesses (plumbers, contractors) almost always carry both. Local results are location-sensitive - set proxy_country (and optionally gl/hl) to target a market. Returns JSON. Billed like an API request; listing plugins bill one unit per result page they fetch, so keep max_results modest.
Inputs: keyword (required), gl, hl, proxy_country.
google_searchGoogle search resultsARead-only
Run a Google search through ScrapeUnblocker and return the results page as structured JSON: organic results with their real URLs, favicons, sitelinks and star ratings, ads, the AI Overview, People also ask, related searches with their links, the knowledge panel, top stories, videos, local and shopping results. Use this to discover URLs before fetching them. Set full_urls when you need the exact page URL of every result.
Inputs: keyword (required), full_urls, proxy_country, pages_to_check.
google_shoppingScrape Google Shopping product listingsARead-only
Runs the Google Shopping vertical (udm=28) for q and returns the product cards as JSON: title, price, currency, currencyCode, originalPrice, discount, merchant, delivery, rating, reviewCount, image and Google's own ids for the product (productId, catalogId, offerId - stable across searches, for tracking one product). Set proxy_country/gl to target a market (prices/merchants are region-specific) and min_price/max_price to filter. One render returns the first page of products (v1). Note: Google Shopping exposes no per-product URL, so url is omitted. image is the product's thumbnail URL. Returns JSON. Billed like an API request; listing plugins bill one unit per result page they fetch, so keep max_results modest.
Inputs: q (required), gl, max_price, min_price, +2 more.
indeed_jobsScrape Indeed job listingsARead-only
Searches Indeed for query in location and returns the job listings as JSON: title, company, location, salary (with parsed min/max), jobTypes, companyRating, a snippet, datePosted (YYYY-MM-DD), sponsored (Indeed's paid placement) and a clean job url. Filter with country, job_type, days (posting age), remote, sort with sort (date returns the collected jobs newest first, sponsored ones included), and collect up to max_results across pages. Indeed sits behind Cloudflare + PerimeterX - handled for you. Returns JSON. Billed like an API request; listing plugins bill one unit per result page they fetch, so keep max_results modest.
Inputs: query (required), days, sort, start, +7 more.
list_elementsList page elements (selector discovery)ARead-only
Load a page through ScrapeUnblocker and return a JSON list of its notable elements (links, inputs, buttons, selects, etc.) with a ready-to-use selector for each, plus tag, text and useful attributes (name, id, type, placeholder, aria_label, href, ...). Read-only and does not interact with the page. This is the discovery half of interactive scraping: call list_elements to find the selectors you need, then pass matching steps to browse_page to click/type/select and capture the resulting HTML.
Inputs: url (required), proxy_country.
list_pluginsList site pluginsARead-only
List ScrapeUnblocker's ready-made site plugins: scrapers for specific sites that return clean structured JSON (Amazon, Walmart, Target, eBay, Zillow, Redfin, Booking.com, Airbnb, Indeed, Glassdoor, Google Trends / Shopping / Maps, YouTube, Spotify, App Store, Google Play, Trustpilot, Yelp, Ahrefs, Semrush and 100+ more). Check here before scraping a known site with fetch_html - a plugin returns the data already parsed. Without arguments it lists every plugin with its parameters (* = required); category or search narrow the list; name returns one plugin's full parameter docs. Free - it calls nothing.
Inputs: name, search, category.
maps_place_detailsScrape Google Maps place detailsARead-only
Returns the full data for one Google Maps place as JSON: name, address (+ addressLines), phone, website, rating, categories, latitude/longitude, plusCode, hours + openNow, description, photo, cid, featureId, googleMapsUrl and relatedPlaces. Identify the place with place_id (ChIJ...), a Maps url, or a raw feature_id (0xHEX:0xHEX). Location-neutral - the feature id resolves the place directly; proxy_country defaults to a US proxy to clear Google's consent wall. Returns JSON. Billed like an API request; listing plugins bill one unit per result page they fetch, so keep max_results modest.
Inputs: gl, hl, raw, url, +3 more.
run_pluginRun a site pluginARead-only
Run one ScrapeUnblocker site plugin and return its JSON - e.g. a Target or Walmart search, a Zillow listing search, Google Trends for some keywords, an app's App Store reviews. Find the plugin and its parameters with list_plugins first. params uses the parameter names list_plugins shows (snake_case); a list value is fine where a parameter takes several. Each run is billed like an API request; listing plugins bill one unit per result page they fetch, so keep max_results modest.
Inputs: name (required), params.
search_and_readSearch Google and read the top resultsARead-only
Search Google through the ScrapeUnblocker API (https://docs.scrapeunblocker.com) and read the top results in one call: returns Google's AI Overview when there is one, each of the first results pages (default 3, max 5) as Markdown, and the other organic results as title, URL and snippet. Use it to answer a question from the live web. Billed as one request for the search plus one per page read.
Inputs: keyword (required), results, proxy_country.
trustpilot_reviewsScrape Trustpilot company reviewsARead-only
Returns a company's Trustpilot profile and reviews as JSON. company is the reviewed domain (e.g. www.nike.com). The response has a company summary (trustScore, totalReviews, ratingDistribution 1-5, categories, contact) and a reviews array - each with url, rating, title, text, verified, verificationLevel, verificationSource, source, pending, merged, author (name, country, review count, id, image, profileUrl, reviewsOfThisCompany), reply (the company's response, with dates) and date / experiencedDate / updatedDate. Page with page/pages (20 reviews per page), and filter with stars, sort (recency/relevancy), language, date, search, verified or replies. Returns JSON. Billed like an API request; listing plugins bill one unit per result page they fetch, so keep max_results modest.
Inputs: company (required), date, page, sort, +7 more.
walmart_searchScrape Walmart product searchARead-only
Searches Walmart for query and returns the products as JSON: name, price and wasPrice, rating, reviewCount, brand, seller, availability, image, a product url, sponsored, unitPrice, priceRange, promotions, fulfillment, deliveryAvailable and variants. The response also carries the search's totalResults, pages, filters and sponsoredProducts. Sort with sort, filter with min_price/max_price, and collect up to max_results across pages. Returns JSON. Billed like an API request; listing plugins bill one unit per result page they fetch, so keep max_results modest.
Inputs: query (required), page, sort, max_price, +3 more.
youtube_searchSearch YouTubeARead-only
Searches YouTube for query and returns the results as JSON. For each video: videoId, title, url, channel (name/id/url), publishedText, viewCount (+ text), lengthSeconds (+ text), thumbnails, descriptionSnippet, badges, verified and isLive. Filter with type (video / channel / playlist / all) and sort (relevance / date / views / rating), and collect up to max_results across pages. Returns JSON. Billed like an API request; listing plugins bill one unit per result page they fetch, so keep max_results modest.
Inputs: query (required), sort, type, max_results, +1 more.
youtube_transcriptGet a YouTube video transcriptARead-only
Returns a YouTube video's captions as JSON: timestamped segments (start, dur, text) and a joined text, plus availableLanguages, the picked language, isAutoGenerated, and the video's title, author and lengthSeconds. Pass a video id or any YouTube video URL; choose a caption language with lang. Ideal for LLM/RAG pipelines, subtitles and content analysis. Returns JSON. Billed like an API request; listing plugins bill one unit per result page they fetch, so keep max_results modest.
Inputs: video (required), lang, format, proxy_country.
zillow_searchScrape Zillow real-estate listingsARead-only
Searches Zillow for location (a city/state or ZIP) and returns the listings as JSON: price, beds, baths, area, address, homeType, zestimate, rentZestimate, daysOnZillow, coordinates, broker and a clean url. Filter with status (for_sale / for_rent / sold), min_price/max_price, beds, baths and home_type, sort with sort, and collect up to max_results across pages. Rental results can include apartment buildings (isBuilding: true): they have no zpid and carry lotId, buildingName, a rent range (price to maxPrice), units and availableUnits instead. Returns JSON. Billed like an API request; listing plugins bill one unit per result page they fetch, so keep max_results modest.
Inputs: location (required), beds, page, sort, +7 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 24 tools
Most verticals are clearly separated, and the generic fetch family (fetch_html, fetch_markdown, fetch_parsed) is well differentiated by output type. However, there is real overlap: list_plugins/run_plugin can run the same Amazon, Walmart, Zillow and Trustpilot scrapers that are also exposed as dedicated tools, and search_and_read overlaps google_search plus fetch_markdown. An agent must decide between two valid paths for many tasks.
Everything is snake_case, so there is no casing chaos. The patterns vary only mildly: verb_noun for generic utilities (fetch_html, browse_page, list_plugins), site_action for verticals (amazon_search, google_images, zillow_search), and a few noun_noun/entity_action forms (trustpilot_reviews, maps_place_details, youtube_transcript). Readable and predictable enough to guess a tool's name.
24 tools is heavy for a single server, though partly justified by covering many distinct scraping verticals. The dedicated platform tools duplicate what list_plugins/run_plugin already provide, so several tools do not strictly earn their place. Trimming the per-site tools in favor of the plugin mechanism would bring this into a healthier 10-15 range.
The surface is broad: generic fetch, markdown, parsed, interactive browsing with selector discovery, search-and-read, plus deep verticals for Amazon, Walmart, eBay, Google Search/Shopping/Images/Local, Maps, YouTube, Trustpilot, Zillow, Indeed and Booking. Gaps are minor and mostly recoverable through run_plugin (e.g. no dedicated product-detail tool for eBay/Target/Walmart beyond search).
Maintenance
Related MCP Connectors
Fetch bot-protected and JavaScript-heavy pages for AI agents, or parse them to JSON with templates.
Fetch and extract data from any public web page, even JS-rendered or anti-bot protected
Web scraping, search, crawling, structured extraction and research for AI agents.
Web search, browser automation, scraping, crawling and CAPTCHA solving for AI agents.
Related MCP Servers
AlicenseAqualityBmaintenanceEnables AI agents to fetch bot-protected web pages, run structured Google searches, and check domain authority through UnblockingAPI's anti-detection engine and residential proxies.3350 npm2MIT- AlicenseNot gradedqualityDmaintenanceProvides AI agents with reliable web fetching capabilities, handling retries, caching, and anti-bot bypass automatically.MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to fetch any web page (including those behind Cloudflare or CAPTCHAs), extract clean markdown, structured data, crawl sites, and map URLs via BypassAPI.MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to search the web, read and extract content from webpages, fetch JSON from REST APIs, and collect links while bypassing anti-bot protections.35 npmISC