Skip to content
Agentmart
Submit a tool

Zenrows MCP

Zenrows MCP server: Fetch, Extract, Batch, and Browser Sessions for AI agents

Connector by ZenRows · GitHub account verified by the MCP Registry

IndexedMITLocal (stdio)Remote (HTTP)★ 20
Write a review

Install

Works with Claude Code, VS Code, Codex, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.

npx agentmarket install connector/zenrows-zenrows-mcp

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Remote endpoint

  • https://mcp.zenrows.com/mcp Remote (HTTP)

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Zenrows MCP server: Fetch, Extract, Batch, and Browser Sessions for AI agents

Use cases: web-scraping, browser-automation

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this server can do and what it asks for, from its tool list, install config and code. Checked Oct 25, 2026.

Tools
28 read · 24 write · 10 delete
Secrets
2 (API keys, tokens or passwords)
Install scripts
None found
Runs as
Node.js package

Tools by what they do 62

From the running server's own tool list (tools/list) on Oct 25, 2026.

Read 28 · Look things up without changing anything.

  • account_usage
  • batch_content
  • batch_list
  • batch_results
  • batch_status
  • batch_wait
  • browser_generate_pdf
  • browser_get_accessibility_tree
  • browser_get_attribute
  • browser_get_cookies
  • browser_get_html
  • browser_get_local_storage
Show 16 more tools
  • browser_get_text
  • browser_get_title
  • browser_get_url
  • browser_query_selector_all
  • browser_screenshot
  • browser_wait
  • browser_wait_for_navigation
  • browser_wait_for_selector
  • crawl_content
  • crawl_get
  • crawl_list
  • crawl_results
  • crawl_wait
  • extract
  • prepared_domain_status
  • scrape

Write 24 · Create, change, send or run things.

  • batch_create
  • batch_pause
  • batch_rerun
  • batch_resume
  • browser_check
  • browser_click
  • browser_close
  • browser_drag
  • browser_focus
  • browser_go_back
  • browser_go_forward
  • browser_hover
Show 12 more tools
  • browser_navigate
  • browser_new_tab
  • browser_press_key
  • browser_reload
  • browser_scroll
  • browser_select_option
  • browser_switch_tab
  • browser_type
  • browser_uncheck
  • crawl_create
  • crawl_download
  • prepare_domain

Delete 10 · Delete, drop, revoke or wipe things.

  • batch_cancel
  • batch_delete
  • browser_batch
  • browser_clear_cookies
  • browser_clear_local_storage
  • browser_evaluate
  • browser_fill
  • browser_set_cookies
  • browser_set_local_storage
  • crawl_stop

Secrets and settings it asks for

Secrets: values you paste in that let it act as you.

  • Authorization
  • ZENROWS_API_KEY

Network hosts it talks to 11

  • api.zenrows.com · found in code
  • app.zenrows.com · found in code
  • async.api.zenrows.com · found in code
  • codeload.github.com · found in code
  • docs.zenrows.com · found in code
  • github.com · found in code
  • glama.ai · found in code
  • mcp.zenrows.com · found in remote endpoint, install command, code
  • raw.githubusercontent.com · found in code
  • spa.com · found in code
  • zenrows.com · found in code

Files it touches

  • Your home directory (~)
  • Any path the agent passes to its tools

Tools (62)

As the server listed them on Oct 25, 2026. Descriptions are the server’s own words; hidden characters are shown as [U+…].

  • account_usageCheck Credit Usageread-only

    Read 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 renews at the end of the billing period (period_ends_at in this tool's response). Plans and credit options are described at https://www.zenrows.com/pricing. AUTH006 is the concurrency limit, not a credi…

  • batch_cancelCancel Batch Jobcan change or delete data

    Stop a Batch job's current run for good. No task still waiting is started or billed; tasks already in flight finish (and bill). Results so far stay readable with batch_results. Tasks that never started stay pending: batch_rerun (default failed and pending) runs them later. Idempotent: a run that already ended answers with its final status and already_ended:true. To halt without ending the run, use batch_pause.

  • batch_contentBatch Task Contentread-only

    Read one Batch task's stored result, by job_id and task_id (from batch_results). A text result (HTML, Markdown, plain text, JSON) comes back inline, cut to max_chars (default 20000); a final note says when it was cut. A binary result (a PDF) is not inlined: the reply gives its result_url, presigned for 2 hours. Finding that URL reads the run's results; on a large run one call may run out of time first and answer with lookup_cursor: call batch_content again with it to go on. BATCH_TASK_NOT_READY: the task has not finished; BATCH_TASK_FAILED: it failed (task_error holds its error); BATCH_RESULT…

  • batch_createCreate Batch Job

    Submit a Batch job: many URLs scraped asynchronously in the cloud (Zenrows Batch API). Suited to large URL lists; scrape and extract handle single pages. Not the same as browser_batch. Tasks use automatic mode (mode=auto) by default: Zenrows enables JS rendering and premium proxies only on the pages that need them. Pass just the URLs. Set js_render or premium_proxy (job-level, or per task) only to force a fixed configuration; that turns automatic mode off for those tasks. Cost: the same credits as the regular API, per successful task: 1 for a basic request, 5 with js_render, 10 with premium_…

  • batch_deleteDelete Batch Jobcan change or delete data

    Delete a Batch job with all its runs and results, for good. A run in flight stops picking up tasks at once, and the job frees its active-job slot. The job reads as not found right away; storage is cleaned up in the background. Idempotent. To keep the results, use batch_cancel instead.

  • batch_listList Batch Jobsread-only

    List this account's Batch jobs, newest first, each with its latest run's status and stats. Filter by status (open or closed) and type (regular or scheduled). Pass next_cursor as cursor for the next page; a page can hold fewer than limit jobs while next_cursor is still set, so keep paging until it is null. Deleted jobs are not listed.

  • batch_pausePause Batch Job

    Pause a Batch job's current run: it picks up no new tasks until batch_resume. Tasks already in flight still finish and bill; for a hard cost stop use batch_cancel. A paused run still counts as an active job. Idempotent; a run that already ended answers with its final status and already_ended:true.

  • batch_rerunRerun Batch Job

    Start a new run of a Batch job whose latest run ended (completed, stopped or failed). By default it reruns only the tasks that failed or never started (status ["failed", "pending"]), and carries the others' results over: the recovery after a run that failed on credits or was cancelled. Pass status to pick other task statuses, or full:true to scrape every task again. Rerun tasks are billed like new ones. A rerun of only some tasks works up to 10 days after the run started (BATCH_RERUN_WINDOW_EXPIRED after that; full:true still works). BATCH_NO_MATCHING_TASKS: no task has those statuses. BATCH_…

  • batch_resultsBatch Job Resultsread-only

    List a Batch run's result rows, a page at a time: up to limit rows (default 100, max 1000) and next_cursor. Pass next_cursor back as cursor to continue; it is null once every row was read. Each row has task_id, external_id, url, metadata, status (successful, failed, pending, processing, expired), type, result_url when successful, and error when failed. A result_url is presigned and expires after 2 hours: call batch_results again for a fresh one, or read the body with batch_content. Results are kept 14 days by default; after that a successful row reads as status "expired", with no result_url, …

  • batch_resumeResume Batch Job

    Resume a paused Batch run: it picks up its remaining tasks again, billed as they finish. Idempotent on a run that is not paused; a run that already ended answers with its final status and already_ended:true. Needs credits: BATCH_INSUFFICIENT_CREDITS or BATCH_KEY_CAP_REACHED otherwise.

  • batch_statusBatch Job Statusread-only

    Get a Batch job's latest run: job_id, run_id, status (pending, running, completed, stopped, failed), stats (total, completed, successful, failed) and the job. A failed run answers ok:false with error.code BATCH_INSUFFICIENT_CREDITS, BATCH_KEY_CAP_REACHED, AUTH_INVALID (subscription_inactive) or BATCH_RUN_FAILED, error.server_code (the failure_reason) and failure_detail; batch_rerun recovers it once fixed. A paused run has paused:true; one still writing its tasks has ingesting:true.

  • batch_waitWait for Batch Jobread-only

    Poll a Batch job until its run ends (completed, stopped or failed) or pauses, and return its status and stats like batch_status. If the wait runs out first, it returns the current state with ok:true, timed_out:true and a note: call batch_wait again. A paused run returns at once with paused:true (it does not move until batch_resume). A failed run answers ok:false with error.code and server_code (insufficient_credits, subscription_inactive or api_key_cap_reached). Transient poll errors are retried. A call that carries a progressToken gets a progress notification after each poll.

  • browser_batchRun Batch of Browser Actionscan change or delete data

    Execute 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 batch results are returned as base64 strings inside the JSON; browser_screenshot returns them as images. A batch can include evaluate, so it can change or delete page state the same way browser_evaluate…

  • browser_checkCheck Checkbox

    Check a checkbox or radio button.

  • browser_clear_cookiesClear Cookiescan change or delete data

    Clear all cookies for the current browser session.

Show 47 more tools
  • browser_clear_local_storageClear Local Storagecan change or delete data

    Delete every localStorage entry in the current page context.

  • browser_clickClick Element

    Click an element on the page using a CSS selector.

  • browser_closeClose Browser Session

    Close a browser session and free all associated resources, including the concurrency slot it holds.

  • browser_dragDrag Element

    Drag an element from its current position to a target element.

  • browser_evaluateEvaluate JavaScriptcan change or delete data

    Execute JavaScript in the browser context and return the result. The script can change or delete the session's page state, such as cookies, storage and form data.

  • browser_fillFill Input

    Clear an input field and set its value, replacing what was there (browser_type appends instead).

  • browser_focusFocus Element

    Move focus to an element, triggering focus-dependent UI changes.

  • browser_generate_pdfGenerate PDFread-only

    Render the current page as a PDF document.

  • browser_get_accessibility_treeGet Accessibility Treeread-only

    Get 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_attributeGet Element Attributeread-only

    Get the value of a specific attribute on an element.

  • browser_get_cookiesGet Cookiesread-only

    Get all cookies for the current page.

  • browser_get_htmlGet HTMLread-only

    Get the HTML source of an element or the full page.

  • browser_get_local_storageGet Local Storage Itemread-only

    Read one localStorage value in the current page context.

  • browser_get_textGet Text Contentread-only

    Get the visible text content of an element or the entire page body.

  • browser_get_titleGet Page Titleread-only

    Get the title of the current page.

  • browser_get_urlGet Current URLread-only

    Get the current URL of the browser session.

  • browser_go_backGo Back

    Navigate back to the previous page in the browser history.

  • browser_go_forwardGo Forward

    Navigate forward to the next page in the browser history.

  • browser_hoverHover Element

    Move the mouse cursor over an element to trigger hover effects.

  • browser_navigateOpen Browser & Navigate

    Open 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_country: geo-restricted content (ISO 3166-1 alpha-2, e.g. "US", "DE") - proxy_region: world region for geo-targeted proxy (eu, na, ap, sa, af, me)

  • browser_new_tabOpen New Tab

    Open a new browser tab. Returns a tab_id to use with browser_switch_tab.

  • browser_press_keyPress Key

    Press a keyboard key. Examples: "Enter", "Tab", "Escape", "ArrowDown", "Control+a".

  • browser_query_selector_allQuery All Matching Elementsread-only

    Find all elements matching a CSS selector and return their text, HTML, and attributes.

  • browser_reloadReload Page

    Reload the current page of a browser session.

  • browser_screenshotTake Screenshotread-only

    Take a screenshot of the current page or a specific element. Use for visual verification or when the accessibility tree is not sufficient.

  • browser_scrollScroll Page

    Scroll the page in a given direction.

  • browser_select_optionSelect Option

    Select an option from a <select> dropdown element.

  • browser_set_cookiesSet Cookiescan change or delete data

    Set one or more cookies in the browser session. A cookie with the same name, domain and path replaces the existing one.

  • browser_set_local_storageSet Local Storage Itemcan change or delete data

    Write one localStorage value in the current page context. An existing value under the same key is replaced.

  • browser_switch_tabSwitch Tab

    Switch focus to a different browser tab.

  • browser_typeType Text

    Type text into an input element. Appends to existing content unless clear_first is set.

  • browser_uncheckUncheck Checkbox

    Uncheck a checkbox, found by CSS selector, in a browser session.

  • browser_waitWaitread-only

    Wait for a fixed duration. browser_wait_for_selector waits only until an element appears.

  • browser_wait_for_navigationWait for Navigationread-only

    Wait 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_wait_for_selectorWait for Elementread-only

    Wait 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).

  • crawl_contentCrawl Page Contentread-only

    Read 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 note says when it was cut. To read a page the crawl did not store, use scrape on its URL instead.

  • crawl_createCreate Crawl

    Start 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 each page's HTML. For a single page, use scrape. Each page fetched is billed as one scrape on this account; max_pages bounds the cost (default 100), max_items bounds how many URLs are kept (default 10…

  • crawl_downloadDownload Crawl

    Save 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 INVALID_PATH), else ~/.zenrows/crawls/<crawl_id>.jsonl. An existing file is kept and the call fails with FILE_EXISTS unless overwrite is true. On a running crawl the file holds only what was kept so far:…

  • crawl_getGet Crawlread-only

    Get 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_key_cap_reached means the account ran out of credits or the API key hit a credit cap (the URLs kept before that stay readable); completed with no results and no error means the crawl's pages held nothin…

  • crawl_listList Crawlsread-only

    List 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_resultsCrawl Resultsread-only

    List 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 since. A stopped crawl can still add URLs from pages fetched before the stop for up to 10 minutes, so next_cursor stays set during that window: call again later. next_cursor is null once the crawl ended a…

  • crawl_stopStop Crawlcan change or delete data

    Stop 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 persists, CRAWL_BUSY says when to call again. Pages in flight still finish, so coverage and results can keep growing for up to 10 minutes after the stop; read them with crawl_get and crawl_results.

  • crawl_waitWait for Crawlread-only

    Poll 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_wait again. A call that carries a progressToken gets a progress notification after each poll, with the status and counts.

  • extractExtract Structured Dataread-only

    Extract structured data from a webpage via Zenrows. Returns JSON fields (products, articles, listings) in "data" rather than a full page body. Set include_html to also get the page HTML. Modes: - auto (default): extract=auto, site-tailored Extract (currently free, billing may apply later). Works on any prepared domain, with any API key. Error REQS007 says why in "reason": - domain_not_prepared: call prepare_domain with the domain and 1 to 5 example URLs (a few minutes, no credits), poll prepared_domain_status about every 30 seconds until it says ready, then call extract again. …

  • prepare_domainPrepare a Domain for Extract

    Prepare a domain so extract (mode=auto) works on it. Use this when extract returns error REQS007 with reason domain_not_prepared. Send the domain (the host, e.g. shop.example.com; a leading www. is dropped, and each host is prepared separately) and 1 to 5 example URLs: real pages you want extracted, one per page kind (for example one product page and one listing page). It returns at once with status "preparing" and never waits; preparation takes a few minutes and costs no credits. Then call prepared_domain_status about every 30 seconds until status is "ready", and call extract again. Each new…

  • prepared_domain_statusPrepared Domain Statusread-only

    Check a domain submitted with prepare_domain, and the account's monthly allowance. Returns status (preparing, ready or failed), state (the current step), roles (one per page kind), a failure code and detail when it failed, the allowance (used, limit, remaining) and "next": what to do now. Poll about every 30 seconds; preparation takes a few minutes. Call extract again once status is "ready". Costs no credits.

  • scrapeScrape Webpageread-only

    Scrape 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 return the page, and charges only for the configuration that succeeds. Pass just the URL. Set js_render or premium_proxy only to force a fixed configuration. Doing so switches off automatic mode, and ev…

Signals

Stars
20
Forks
5
Open issues
2
Contributors
10
Last commit
Oct 23, 2026 (5 days ago)
Last release
Oct 23, 2026 (5 days ago)

From GitHub (fetched Oct 24, 2026).

Details

Registry name
io.github.ZenRows/zenrows-mcp
Version
2.16.0
Auth
Bearer token, API key
Packages
npm @zenrows/mcp
License
MIT
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from ZenRows

Cite this page

Zenrows MCP. Agent Mart. https://agentmart.dev/connectors/zenrows-zenrows-mcp (last updated 2026-10-24)