mcpField
S
scrapeunblocker-mcp

scrapeunblocker-mcp

Local
scrapeunblocker.comBrowser Automation2Updated 3d ago

About scrapeunblocker-mcp

scrapeunblocker-mcp wraps the ScrapeUnblocker web-scraping API as an MCP server for Claude and other MCP clients. It supports browser interactions, search, and structured JSON from site plugins; users provide their own API key.

Key features

  1. 01Fetch fully rendered page HTML
  2. 02Parse pages into structured JSON
  3. 03Extract page content as Markdown
  4. 04Interact with pages in a real browser
  5. 05Run more than 100 site plugins
  6. 06Search Google and read result pages

Use cases

  1. 01Retrieve web content for analysis
  2. 02Use a page search box and read results
  3. 03Collect product or review data from sites
  4. 04Compare search results and information across pages

MCP support

The MCP server exposes web fetching, page interaction, Google search, and site-plugin tools to MCP clients, making requests through the ScrapeUnblocker API. It requires a user-provided SCRAPEUNBLOCKER_KEY.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

mcp.json · Universal config
{
"mcpServers": {
"com-scrapeunblocker-scrapeunblocker": {
"command": "npx",
"args": [
"-y",
"scrapeunblocker-mcp"
],
"env": {
"SCRAPEUNBLOCKER_KEY": "<SCRAPEUNBLOCKER_KEY>"
}
}
}
}
Run commandnpx -y scrapeunblocker-mcp
Environment variables to set
SCRAPEUNBLOCKER_KEYSecretYour ScrapeUnblocker API key (get one at https://app.scrapeunblocker.com).

Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.

Packages
npmscrapeunblocker-mcp0.8.1

Tools

4

Saved tool list · updated 3d ago

ParameterTypeRequiredDescription
urlstringYesThe absolute URL to fetch (http/https).
stepsarrayNoOptional ordered browser actions to run in a real browser after the page loads, before the HTML is captured. Use `list_elements` first to find selectors. Runs once (not idempotent).
wait_valuestringNoThe CSS selector or JS expression paired with wait_method (e.g. '#price' or 'document.readyState==="complete"').
wait_methodenumNoOptional render-wait strategy: 'css' waits for a selector, 'js' waits for a JS expression to be truthy.css | js
proxy_countrystringNoOptional ISO 3166-1 alpha-2 country code to route through, e.g. 'US', 'GB', 'DE'.
sleep_secondsnumberNoExtra seconds to wait after load before capturing the HTML.
method_timeout_secondsintegerNoCap in seconds for the render-wait method.

Details

From the project README

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

ToolWhat it does
fetch_htmlFetch the fully rendered HTML of a URL.
browse_pageRun interactive browser steps on a page (click, type, select, scroll, wait), then return the resulting HTML. Not read-only: it acts on the website.
list_elementsList a page's notable elements with a ready-to-use selector for each (selector discovery).
fetch_parsedFetch a page and return AI-parsed structured JSON.
google_searchRun a Google search and return organic results as JSON.
fetch_markdownFetch 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_and_readSearch 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_pluginsList 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_pluginRun one site plugin and return its structured JSON.
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_hotelsThe most-used site plugins as tools of their own, each with its parameters in the tool schema - one call, no list_plugins lookup. Same JSON as run_plugin.
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:

ActionFields
wait_forselector, selector_type? (css/xPath/className/tagName), timeout_ms?
wait_for_textvalue, timeout_ms?
waitvalue (ms)
clickselector, selector_type?, timeout_ms?
typeselector, selector_type?, value, clear?, timeout_ms? (typed human-like)
selectselector, selector_type?, value, timeout_ms?
press_keyvalue (Enter, Tab, Escape, Backspace, Delete, Space, Arrow*, Home, End, PageUp, PageDown)
scrollvalue ("bottom" or a pixel offset)

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.

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@scrapeunblocker

See ScrapeUnblocker/claude-code-plugin.

To add the bare server instead:

claude mcp add scrapeunblocker \
  --env SCRAPEUNBLOCKER_KEY=your_api_key_here \
  -- npx -y scrapeunblocker-mcp
Claude 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-mcp

Example 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 server

License

MIT

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.