Zenrows MCP
Zenrows MCP server — Fetch, Extract, Batch, and Browser Sessions for AI coding assistants
Connect it
Settings → Connectors → Add custom connector
URL: https://mcp.zenrows.com/mcpSettings → Apps & Connectors → Advanced → Developer mode
Create connector with URL: https://mcp.zenrows.com/mcp{
"mcpServers": {
"zenrows-mcp": {
"url": "https://mcp.zenrows.com/mcp",
"headers": {
"Authorization": "<YOUR_AUTHORIZATION>"
}
}
}
}claude mcp add --transport http zenrows-mcp https://mcp.zenrows.com/mcp --header "Authorization: <value>"{
"servers": {
"zenrows-mcp": {
"type": "http",
"url": "https://mcp.zenrows.com/mcp",
"headers": {
"Authorization": "<YOUR_AUTHORIZATION>"
}
}
}
}{
"mcpServers": {
"zenrows-mcp": {
"command": "npx",
"args": [
"-y",
"@zenrows/mcp@2.10.2"
],
"env": {
"ZENROWS_API_KEY": "<value>"
}
}
}
}claude mcp add zenrows-mcp -- npx -y @zenrows/mcp@2.10.252 tools, verified live
scraperead-onlyScrape any webpage and return its content using Zenrows (Fetch). Returns full-page content (markdown/HTML/PDF/screenshot). For structured JSON fields (products, articles, listings), the extract tool returns parsed fields instead of a full page body. By default the request uses automatic mode (mode=auto): Zenrows adds JS rendering or premium proxies per page only when a plain request does not ret
extractread-onlyExtract structured data from a webpage via Zenrows. Returns JSON fields (products, articles, listings) rather than a full page body. Modes: - auto (default): extract=auto, site-tailored Extract (currently free, billing may apply later). Works on any domain Zenrows has prepared, with any API key; falls back to autoparse when the domain isn't prepared yet (REQS007) - autoparse: general-purpose
batch_createSubmit a cloud Batch job that fans out many URLs asynchronously (Zenrows Batch API). NOT the same as browser_batch — this hits https://async.api.zenrows.com/v1 with X-API-Key. Suited to large URL lists; scrape and extract handle single pages. Tasks use automatic mode (mode=auto) by default: Zenrows enables JS rendering and premium proxies only on the pages that need them, and charges only for th
batch_statusread-onlyGet status and stats for a Zenrows Batch job (latest_run.status + latest_run.stats).
batch_resultsread-onlyList result rows for a Batch job (cursor-paginated server-side; returns the full list). Each row may include task_id, external_id, status, and a short-lived result_url for the body. Download result_url soon — presigned links expire.
batch_cancelcan modifyStop an in-flight Batch job run (POST /jobs/:id/stop).
batch_waitread-onlyPoll batch_status until the job reaches a terminal state (completed, failed, stopped, or deleted). A run that hits an API key credit cap ends as failed with failure_reason api_key_cap_reached.
crawl_createStart a crawl from one URL (Zenrows Crawl API). Crawl follows the links in each page's HTML up to depth hops (no depth limit when depth is omitted), keeps the URLs that match include_patterns / exclude_patterns, and stays on the start URL's registrable domain (subdomains count). Use crawl when you have one start page (a listing, category, blog index) and need the URLs behind it, optionally with e
crawl_getread-onlyGet a crawl and one page of the URLs it kept: crawl_id, status (running, completed, stopped, failed), the crawl (with coverage: pages_fetched, pages_failed, items_found), results and next_cursor. completed with stop_reason max_items / max_pages means a limit ended it; stopped with stop_reason user means crawl_stop ended it; stopped with no stop_reason and error.code insufficient_credits or api_ke
crawl_resultsread-onlyList the URLs a crawl kept, in the order it kept them, following the API's pages up to limit. Each result has url and, when the crawl has output_format, content_status (pending, fetched, failed) and, once fetched, content_url: pass it to crawl_content as content. While the crawl runs the list is partial (partial=true): call again later with the returned next_cursor to get only the URLs kept sinc
crawl_contentread-onlyRead the stored page of one URL a crawl kept, in the crawl's output_format. Works only for crawls created with an output_format, and only for results whose content_status is fetched. Pass crawl_id and content_id: a content id, or content_url from a crawl_results row. Returns the page as stored — raw HTML for output_format "html", Markdown for "markdown" — cut to max_chars (default 20000); a final
crawl_listread-onlyList this account's crawls, newest first, with status and coverage (no results). Pass next_cursor as cursor for the next page; next_cursor is absent on the last page.
crawl_stopcan modifyStop a running crawl. No page still waiting is fetched or billed; pages already in flight finish. The URLs kept so far stay readable with crawl_results. A stopped crawl cannot resume. Idempotent: a crawl that already ended answers with its final status. A 429, 502, 503 or 504 is retried up to 3 times, waiting at most 50 seconds in all; a 503 crawl_busy means the stop was not saved yet, and if it
crawl_waitread-onlyPoll a crawl until it ends (completed, stopped, or failed) and return its status, its counts and the first 20 URLs (first_urls). For every result, call crawl_download (one file) or crawl_results (pages). A crawl that ends completed with no results and no error finished; it is not a failure (see crawl_get). If the wait runs out first, it returns the crawl with status running and a note: call crawl_
crawl_downloadSave every result of a crawl to one local file, as JSON lines: url, content_status and, once fetched, content (the page). Returns the file's path and line count, not the results, so a crawl of any size costs one small reply. Read the file with your own tools. The file goes to path when given (a relative path inside ~/.zenrows/crawls; an absolute path or one that leaves that folder fails with INVA
account_usageread-onlyRead the current plan's credit allowance and how much of it is spent. Useful before a large batch, or after a 402 / AUTH004, to see whether the account has credits left and when the allowance renews. The call is free and does not use a concurrency slot. Credit costs per request: 1 basic, 5 js_render, 10 premium_proxy, 25 both. AUTH004 ("usage exceeded") means this allowance is spent until it re
browser_navigateOpen a Zenrows Browser Sessions session and navigate to a URL. This is the entry point for all browser automation. It creates a new session backed by Zenrows' hosted browser infrastructure and navigates to the given URL in one step. Returns a session_id that every other browser_* tool takes. The session holds one concurrency slot until browser_close closes it. When to use options: - proxy_count
browser_closeClose a browser session and free all associated resources, including the concurrency slot it holds.
browser_go_backNavigate back to the previous page in the browser history.
browser_go_forwardNavigate forward to the next page in the browser history.
browser_reloadReload the current page of a browser session.
browser_clickClick an element on the page using a CSS selector.
browser_hoverMove the mouse cursor over an element to trigger hover effects.
browser_typeType text into an input element. Appends to existing content unless clear_first is set.
browser_fillClear an input field and set its value, replacing what was there (browser_type appends instead).
browser_select_optionSelect an option from a <select> dropdown element.
browser_checkCheck a checkbox or radio button.
browser_uncheckUncheck a checkbox, found by CSS selector, in a browser session.
browser_focusMove focus to an element, triggering focus-dependent UI changes.
browser_press_keyPress a keyboard key. Examples: "Enter", "Tab", "Escape", "ArrowDown", "Control+a".
browser_scrollScroll the page in a given direction.
browser_dragDrag an element from its current position to a target element.
browser_get_accessibility_treeread-onlyGet the ARIA accessibility tree of the current page as readable text. Shows the page structure and the selectors needed to interact with elements, in fewer tokens than a screenshot. The tree shows all interactive elements (buttons, inputs, links) with their roles, labels, and states — everything needed to drive browser interactions.
browser_get_urlread-onlyGet the current URL of the browser session.
browser_get_titleread-onlyGet the title of the current page.
browser_get_textread-onlyGet the visible text content of an element or the entire page body.
browser_get_attributeread-onlyGet the value of a specific attribute on an element.
browser_get_htmlread-onlyGet the HTML source of an element or the full page.
browser_query_selector_allread-onlyFind all elements matching a CSS selector and return their text, HTML, and attributes.
browser_screenshotread-onlyTake a screenshot of the current page or a specific element. Use for visual verification or when the accessibility tree is not sufficient.
browser_generate_pdfread-onlyRender the current page as a PDF document.
browser_wait_for_selectorread-onlyWait until an element matching the CSS selector is stable in the DOM. Set visible=true to also require the element to be visible (not hidden).
browser_wait_for_navigationread-onlyWait for the page to navigate to a new URL. It waits for the next navigation event, so a navigation that already finished is not seen and the call waits until timeout_ms. Pages that update without changing URL (AJAX/SPA) fire no navigation event. Optional timeout_ms (default 30000ms).
browser_waitread-onlyWait for a fixed duration. browser_wait_for_selector waits only until an element appears.
browser_evaluateExecute JavaScript in the browser context and return the result.
browser_get_cookiesread-onlyGet all cookies for the current page.
browser_set_cookiesSet one or more cookies in the browser session.
browser_clear_cookiesClear all cookies for the current browser session.
browser_local_storageRead, write, or clear localStorage in the current page context.
browser_new_tabOpen a new browser tab. Returns a tab_id to use with browser_switch_tab.
browser_switch_tabSwitch focus to a different browser tab.
browser_batchExecute a sequence of browser actions in a single call against an existing session. Use this when you already know the full sequence of steps — it reduces round trips and is faster than calling each tool individually. Actions run sequentially and stop at the first failure unless stop_on_error is false. Each step result is returned in the results array at the same index. Note: screenshots in bat
Change history
Alternatives in Browser & Scraping
Compare →CMCrawlora MCPB
Hosted MCP: 3631 structured web-data tools across 471 platform groups.
FAfastCRWB
Scrape, crawl, map & search the web. Open-source, self-hostable Rust crawler & search for AI agents.
SMScrapeunblocker MCP RemoteB
Fetch any page's HTML or AI-parsed JSON, Google results, or 100+ site plugins via ScrapeUnblocker
ApiFlash MCP by usefulapiB
Capture website screenshots and extract page HTML or text with ApiFlash; check your quota.
Bannerbear MCP by usefulapiB
Generate images, videos, and screenshots from your Bannerbear templates via AI.
GPgamedev.plB
Build browser games on gamedev.pl from your coding agent.