Skip to content
Scalekit Docs

ZenRows MCP

Vendor MCP43 toolsOAuth 2.1/DCRDeveloper ToolsAutomation

Connect to ZenRows MCP. Scrape any webpage with anti-bot bypass, render JavaScript-heavy sites, and automate browsers through ZenRows' cloud...

ZenRows MCP connector

  1. Terminal window
    npm install @scalekit-sdk/node

    Full SDK reference: Node.js | Python

  2. Add your Scalekit credentials to your .env file. Find values in app.scalekit.com > Developers > API Credentials.

    .env
    SCALEKIT_ENVIRONMENT_URL=<your-environment-url>
    SCALEKIT_CLIENT_ID=<your-client-id>
    SCALEKIT_CLIENT_SECRET=<your-client-secret>
  3. quickstart.ts
    import { ScalekitClient } from '@scalekit-sdk/node'
    import 'dotenv/config'
    const scalekit = new ScalekitClient(
    process.env.SCALEKIT_ENV_URL,
    process.env.SCALEKIT_CLIENT_ID,
    process.env.SCALEKIT_CLIENT_SECRET,
    )
    const actions = scalekit.actions
    const connector = 'zenrowsmcp'
    const identifier = 'user_123'
    // Generate an authorization link for the user
    const { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })
    console.log('Authorize ZenRows MCP:', link)
    process.stdout.write('Press Enter after authorizing...')
    await new Promise(r => process.stdin.once('data', r))
    // Make your first call
    const result = await actions.executeTool({
    connector,
    identifier,
    toolName: 'zenrowsmcp_batch_status',
    toolInput: { job_id: 'YOUR_JOB_ID' },
    })
    console.log(result)

Connect this agent connector to let your agent:

  • Extract records — Extract structured data from a webpage using ZenRows
  • Wait batch, browser — Poll batch_status until a ZenRows Batch job reaches a terminal state (completed, stopped, or deleted)
  • Status batch — Get status and stats for a ZenRows Batch job, including latest_run.status and latest_run.stats
  • Results batch — List result rows for a ZenRows Batch job
  • Create batch — Submit a cloud Batch job that fans out many URLs asynchronously (ZenRows Batch API, beta)
  • Cancel batch — Stop an in-flight ZenRows Batch job run

Use the exact tool names from the Tool list below when you call execute_tool. If you’re not sure which name to use, list the tools available for the current user first.

zenrowsmcp_batch_cancel#Stop an in-flight ZenRows Batch job run.1 param

Stop an in-flight ZenRows Batch job run.

NameTypeRequiredDescription
job_idstringrequiredBatch job id to stop.
zenrowsmcp_batch_create#Submit a cloud Batch job that fans out many URLs asynchronously (ZenRows Batch API, beta). Not the same as browser_batch. Returns a job_id and latest_run status/stats; poll with batch_status or batch_wait, then fetch rows with batch_results.9 params

Submit a cloud Batch job that fans out many URLs asynchronously (ZenRows Batch API, beta). Not the same as browser_batch. Returns a job_id and latest_run status/stats; poll with batch_status or batch_wait, then fetch rows with batch_results.

NameTypeRequiredDescription
js_renderbooleanoptionalJob-level js_render applied to all tasks.
premium_proxybooleanoptionalJob-level premium_proxy applied to all tasks.
proxy_countrystringoptionalJob-level ISO 3166-1 alpha-2 country code. Requires premium_proxy or mode=auto.
response_typestringoptionalJob-level response_type applied to all tasks.
tasksarrayoptionalList of tasks, each needing a url. Prefer this over urls when you need per-task params.
urlsarrayoptionalShorthand list of URLs, converted to tasks. Ignored when tasks is provided.
waitbooleanoptionalIf true, poll until the job reaches a terminal state before returning.
wait_timeout_msintegeroptionalMax wait time in milliseconds when wait=true (default 600000).
zenrows_paramsobjectoptionalAdditional job-level zenrows_params merged with the flags above.
zenrowsmcp_batch_results#List result rows for a ZenRows Batch job. Each row may include task_id, external_id, status, and a short-lived result_url; download soon as presigned links expire.2 params

List result rows for a ZenRows Batch job. Each row may include task_id, external_id, status, and a short-lived result_url; download soon as presigned links expire.

NameTypeRequiredDescription
job_idstringrequiredBatch job id.
statusstringoptionalFilter results by status (default: all).
zenrowsmcp_batch_status#Get status and stats for a ZenRows Batch job, including latest_run.status and latest_run.stats.1 param

Get status and stats for a ZenRows Batch job, including latest_run.status and latest_run.stats.

NameTypeRequiredDescription
job_idstringrequiredBatch job id returned by batch_create.
zenrowsmcp_batch_wait#Poll batch_status until a ZenRows Batch job reaches a terminal state (completed, stopped, or deleted).2 params

Poll batch_status until a ZenRows Batch job reaches a terminal state (completed, stopped, or deleted).

NameTypeRequiredDescription
job_idstringrequiredBatch job id.
timeout_msintegeroptionalMax wait time in milliseconds (default 600000).
zenrowsmcp_browser_batch#Execute a sequence of browser actions in a single call against an existing session. Actions run sequentially and stop at the first failure unless stop_on_error is false.3 params

Execute a sequence of browser actions in a single call against an existing session. Actions run sequentially and stop at the first failure unless stop_on_error is false.

NameTypeRequiredDescription
actionsarrayrequiredOrdered list of actions to perform. Each action has a 'type' field plus type-specific parameters.
session_idstringrequiredSession ID returned by browser_navigate. Required by all browser_* tools.
stop_on_errorbooleanoptionalIf true (default), stop executing actions when one fails. Set false to continue on errors.
zenrowsmcp_browser_check#Check a checkbox or radio button by CSS selector.2 params

Check a checkbox or radio button by CSS selector.

NameTypeRequiredDescription
selectorstringrequiredCSS selector identifying the target element, e.g. #submit-button or .product-card.
session_idstringrequiredSession ID returned by browser_navigate. Required by all browser_* tools.
zenrowsmcp_browser_clear_cookies#Clear all cookies for the current browser session.1 param

Clear all cookies for the current browser session.

NameTypeRequiredDescription
session_idstringrequiredSession ID returned by browser_navigate. Required by all browser_* tools.
zenrowsmcp_browser_click#Click an element identified by a CSS selector.2 params

Click an element identified by a CSS selector.

NameTypeRequiredDescription
selectorstringrequiredCSS selector identifying the target element, e.g. #submit-button or .product-card.
session_idstringrequiredSession ID returned by browser_navigate. Required by all browser_* tools.
zenrowsmcp_browser_close#Close a browser session and free its resources. Always call this when done to avoid session leaks.1 param

Close a browser session and free its resources. Always call this when done to avoid session leaks.

NameTypeRequiredDescription
session_idstringrequiredSession ID returned by browser_navigate. Required by all browser_* tools.
zenrowsmcp_browser_drag#Drag an element from a source to a target CSS selector.3 params

Drag an element from a source to a target CSS selector.

NameTypeRequiredDescription
session_idstringrequiredSession ID returned by browser_navigate. Required by all browser_* tools.
source_selectorstringrequiredCSS selector for the element to drag from.
target_selectorstringrequiredCSS selector for the element to drop onto.
zenrowsmcp_browser_evaluate#Execute a JavaScript expression in the page context and return its result.2 params

Execute a JavaScript expression in the page context and return its result.

NameTypeRequiredDescription
scriptstringrequiredJavaScript expression to evaluate in the page context. Return value is serialized to JSON.
session_idstringrequiredSession ID returned by browser_navigate. Required by all browser_* tools.
zenrowsmcp_browser_fill#Fill an input, textarea, or contenteditable element with text.3 params

Fill an input, textarea, or contenteditable element with text.

NameTypeRequiredDescription
selectorstringrequiredCSS selector identifying the target element, e.g. #submit-button or .product-card.
session_idstringrequiredSession ID returned by browser_navigate. Required by all browser_* tools.
valuestringrequiredText value to set (fill) or option value to select.
zenrowsmcp_browser_focus#Move keyboard focus to an element identified by a CSS selector.2 params

Move keyboard focus to an element identified by a CSS selector.

NameTypeRequiredDescription
selectorstringrequiredCSS selector identifying the target element, e.g. #submit-button or .product-card.
session_idstringrequiredSession ID returned by browser_navigate. Required by all browser_* tools.
zenrowsmcp_browser_generate_pdf#Render the current page as a PDF document.4 params

Render the current page as a PDF document.

NameTypeRequiredDescription
session_idstringrequiredSession ID returned by browser_navigate. Required by all browser_* tools.
landscapebooleanoptionalRender PDF in landscape orientation (default false).
print_backgroundbooleanoptionalInclude CSS background graphics in the PDF (default false).
scalenumberoptionalPage scale factor for PDF rendering, 0.1–2 (default 1).
zenrowsmcp_browser_get_accessibility_tree#Return the accessibility tree of the current page for element discovery and screen-reader testing.1 param

Return the accessibility tree of the current page for element discovery and screen-reader testing.

NameTypeRequiredDescription
session_idstringrequiredSession ID returned by browser_navigate. Required by all browser_* tools.
zenrowsmcp_browser_get_attribute#Get the value of a specific HTML attribute from an element matching a CSS selector.3 params

Get the value of a specific HTML attribute from an element matching a CSS selector.

NameTypeRequiredDescription
attributestringrequiredHTML attribute name to read, e.g. href, src, data-id.
selectorstringrequiredCSS selector identifying the target element, e.g. #submit-button or .product-card.
session_idstringrequiredSession ID returned by browser_navigate. Required by all browser_* tools.
zenrowsmcp_browser_get_cookies#Return all cookies set in the current browser session.1 param

Return all cookies set in the current browser session.

NameTypeRequiredDescription
session_idstringrequiredSession ID returned by browser_navigate. Required by all browser_* tools.
zenrowsmcp_browser_get_html#Return the outer HTML of an element or the full page if no selector is given.2 params

Return the outer HTML of an element or the full page if no selector is given.

NameTypeRequiredDescription
session_idstringrequiredSession ID returned by browser_navigate. Required by all browser_* tools.
selectorstringoptionalCSS selector identifying the target element, e.g. #submit-button or .product-card.
zenrowsmcp_browser_get_text#Return the visible text content of an element or the full page if no selector is given.2 params

Return the visible text content of an element or the full page if no selector is given.

NameTypeRequiredDescription
session_idstringrequiredSession ID returned by browser_navigate. Required by all browser_* tools.
selectorstringoptionalCSS selector identifying the target element, e.g. #submit-button or .product-card.
zenrowsmcp_browser_get_title#Return the current page title.1 param

Return the current page title.

NameTypeRequiredDescription
session_idstringrequiredSession ID returned by browser_navigate. Required by all browser_* tools.
zenrowsmcp_browser_get_url#Return the current page URL.1 param

Return the current page URL.

NameTypeRequiredDescription
session_idstringrequiredSession ID returned by browser_navigate. Required by all browser_* tools.
zenrowsmcp_browser_go_back#Navigate to the previous page in the browser history.1 param

Navigate to the previous page in the browser history.

NameTypeRequiredDescription
session_idstringrequiredSession ID returned by browser_navigate. Required by all browser_* tools.
zenrowsmcp_browser_go_forward#Navigate to the next page in the browser history.1 param

Navigate to the next page in the browser history.

NameTypeRequiredDescription
session_idstringrequiredSession ID returned by browser_navigate. Required by all browser_* tools.
zenrowsmcp_browser_hover#Move the mouse pointer over an element identified by a CSS selector.2 params

Move the mouse pointer over an element identified by a CSS selector.

NameTypeRequiredDescription
selectorstringrequiredCSS selector identifying the target element, e.g. #submit-button or .product-card.
session_idstringrequiredSession ID returned by browser_navigate. Required by all browser_* tools.
zenrowsmcp_browser_local_storage#Read, write, or clear localStorage in the current page context.4 params

Read, write, or clear localStorage in the current page context.

NameTypeRequiredDescription
actionstringrequiredOperation: get a value, set a value, or clear all
session_idstringrequiredSession ID returned by browser_navigate. Required by all browser_* tools.
keystringoptionallocalStorage key to read or write.
valuestringoptionalText value to set (fill) or option value to select.
zenrowsmcp_browser_navigate#Open a ZenRows browser session and navigate to a URL. Returns a session_id required by all subsequent browser_* tools; always call browser_close when done.3 params

Open a ZenRows browser session and navigate to a URL. Returns a session_id required by all subsequent browser_* tools; always call browser_close when done.

NameTypeRequiredDescription
urlstringrequiredFull URL to navigate to or scrape (must include scheme, e.g. https://).
proxy_countrystringoptionalISO 3166-1 alpha-2 country code for geo-targeted proxy, e.g. US, GB, DE.
proxy_regionstringoptionalWorld region for geo-targeted proxy: eu, na, ap, sa, af, or me.
zenrowsmcp_browser_new_tab#Open a new browser tab and navigate to a URL in the current session.2 params

Open a new browser tab and navigate to a URL in the current session.

NameTypeRequiredDescription
session_idstringrequiredSession ID returned by browser_navigate. Required by all browser_* tools.
urlstringoptionalFull URL to navigate to or scrape (must include scheme, e.g. https://).
zenrowsmcp_browser_press_key#Simulate pressing a keyboard key, optionally combined with modifier keys.2 params

Simulate pressing a keyboard key, optionally combined with modifier keys.

NameTypeRequiredDescription
keystringrequiredlocalStorage key to read or write.
session_idstringrequiredSession ID returned by browser_navigate. Required by all browser_* tools.
zenrowsmcp_browser_query_selector_all#Return all elements matching a CSS selector as an array of handles.2 params

Return all elements matching a CSS selector as an array of handles.

NameTypeRequiredDescription
selectorstringrequiredCSS selector identifying the target element, e.g. #submit-button or .product-card.
session_idstringrequiredSession ID returned by browser_navigate. Required by all browser_* tools.
zenrowsmcp_browser_reload#Reload the current page.1 param

Reload the current page.

NameTypeRequiredDescription
session_idstringrequiredSession ID returned by browser_navigate. Required by all browser_* tools.
zenrowsmcp_browser_screenshot#Capture a screenshot of the current page or a specific element.3 params

Capture a screenshot of the current page or a specific element.

NameTypeRequiredDescription
session_idstringrequiredSession ID returned by browser_navigate. Required by all browser_* tools.
full_pagebooleanoptionalCapture the full scrollable page, not just the visible viewport.
selectorstringoptionalCSS selector identifying the target element, e.g. #submit-button or .product-card.
zenrowsmcp_browser_scroll#Scroll the page in a given direction by a specified pixel distance.3 params

Scroll the page in a given direction by a specified pixel distance.

NameTypeRequiredDescription
directionstringrequiredScroll direction
session_idstringrequiredSession ID returned by browser_navigate. Required by all browser_* tools.
distanceintegeroptionalPixels to scroll (default 500).
zenrowsmcp_browser_select_option#Select an option in a <select> element by value or label.3 params

Select an option in a <select> element by value or label.

NameTypeRequiredDescription
selectorstringrequiredCSS selector identifying the target element, e.g. #submit-button or .product-card.
session_idstringrequiredSession ID returned by browser_navigate. Required by all browser_* tools.
valuestringrequiredText value to set (fill) or option value to select.
zenrowsmcp_browser_set_cookies#Set one or more cookies in the current browser session.2 params

Set one or more cookies in the current browser session.

NameTypeRequiredDescription
cookiesarrayrequiredArray of cookie objects to set. Each object requires name and value; domain, path, expires, secure, and http_only are optional.
session_idstringrequiredSession ID returned by browser_navigate. Required by all browser_* tools.
zenrowsmcp_browser_switch_tab#Switch focus to a different tab in the current session by tab ID.2 params

Switch focus to a different tab in the current session by tab ID.

NameTypeRequiredDescription
session_idstringrequiredSession ID returned by browser_navigate. Required by all browser_* tools.
tab_idstringrequiredNumeric tab ID returned by browser_new_tab.
zenrowsmcp_browser_type#Type text into the focused element character by character, simulating real keyboard input.4 params

Type text into the focused element character by character, simulating real keyboard input.

NameTypeRequiredDescription
selectorstringrequiredCSS selector identifying the target element, e.g. #submit-button or .product-card.
session_idstringrequiredSession ID returned by browser_navigate. Required by all browser_* tools.
textstringrequiredText to type character by character into the focused element.
clear_firstbooleanoptionalIf true, clear the existing field value before typing.
zenrowsmcp_browser_uncheck#Uncheck a checkbox identified by a CSS selector.2 params

Uncheck a checkbox identified by a CSS selector.

NameTypeRequiredDescription
selectorstringrequiredCSS selector identifying the target element, e.g. #submit-button or .product-card.
session_idstringrequiredSession ID returned by browser_navigate. Required by all browser_* tools.
zenrowsmcp_browser_wait#Pause execution for a specified number of milliseconds.2 params

Pause execution for a specified number of milliseconds.

NameTypeRequiredDescription
msintegerrequiredMilliseconds to pause execution.
session_idstringrequiredSession ID returned by browser_navigate. Required by all browser_* tools.
zenrowsmcp_browser_wait_for_navigation#Wait for a page navigation to complete after triggering a link or form submission.2 params

Wait for a page navigation to complete after triggering a link or form submission.

NameTypeRequiredDescription
session_idstringrequiredSession ID returned by browser_navigate. Required by all browser_* tools.
timeout_msintegeroptionalMaximum milliseconds to wait before timing out.
zenrowsmcp_browser_wait_for_selector#Wait until an element matching a CSS selector appears in the DOM.3 params

Wait until an element matching a CSS selector appears in the DOM.

NameTypeRequiredDescription
selectorstringrequiredCSS selector identifying the target element, e.g. #submit-button or .product-card.
session_idstringrequiredSession ID returned by browser_navigate. Required by all browser_* tools.
visiblebooleanoptionalIf true, wait until the element is visible in the viewport; if false, wait until present in DOM.
zenrowsmcp_extract#Extract structured data from a webpage using ZenRows. Prefer this over scrape when you need JSON fields (products, articles, listings) rather than a full page body. Supports auto (site-tailored Extract, open beta), autoparse (general-purpose), or css (explicit selector map) modes.10 params

Extract structured data from a webpage using ZenRows. Prefer this over scrape when you need JSON fields (products, articles, listings) rather than a full page body. Supports auto (site-tailored Extract, open beta), autoparse (general-purpose), or css (explicit selector map) modes.

NameTypeRequiredDescription
urlstringrequiredThe webpage URL to extract data from.
css_extractorstringoptionalRequired when mode=css. JSON map of field to selector, e.g. {"title":"h1","price":".price"}.
fallback_autoparsebooleanoptionalWhen mode=auto and the domain is not in the Extract open beta, retry once with autoparse.
js_renderbooleanoptionalEnable headless JavaScript rendering for SPAs and dynamically loaded content.
modestringoptionalExtraction mode: 'auto' (default, site-tailored Extract), 'autoparse' (general-purpose JSON), or 'css' (requires css_extractor).
mode_autobooleanoptionalEnable Adaptive Stealth Mode (mode=auto) for tougher, anti-bot-protected sites.
premium_proxybooleanoptionalUse premium residential proxies to bypass anti-bot protection. Higher credit cost.
proxy_countrystringoptionalISO 3166-1 alpha-2 country code for geo-targeted proxy. Requires premium_proxy or mode_auto.
waitintegeroptionalMilliseconds to wait after page load before extracting. Max 30000. Requires js_render.
wait_forstringoptionalCSS selector to wait for before extracting. Requires js_render.
zenrowsmcp_scrape#Scrape any webpage and return its content using ZenRows. Returns clean markdown by default; supports JavaScript rendering, premium proxies, CSS extraction, and structured output.14 params

Scrape any webpage and return its content using ZenRows. Returns clean markdown by default; supports JavaScript rendering, premium proxies, CSS extraction, and structured output.

NameTypeRequiredDescription
urlstringrequiredFull URL to navigate to or scrape (must include scheme, e.g. https://).
autoparsebooleanoptionalAutomatically extract structured data from the page into JSON. Best for product pages, articles, and listings.
css_extractorstringoptionalCSS selector map for targeted extraction, e.g. {"title":"h1","price":".price-tag"}. Returns JSON instead of full page content.
js_instructionsstringoptionalJSON array of browser interactions before scraping, e.g. [{"click":"#load-more"},{"wait":1000}]. Requires js_render=true.
js_renderbooleanoptionalEnable headless JavaScript rendering. Required for SPAs (React, Vue, Angular) and dynamically loaded content.
outputsstringoptionalComma-separated data types to extract as structured JSON: emails, headings, links, menus, images, videos, audios. Use * for all.
premium_proxybooleanoptionalUse premium residential proxies to bypass heavy anti-bot protection. Higher credit cost.
proxy_countrystringoptionalISO 3166-1 alpha-2 country code for geo-targeted proxy, e.g. US, GB, DE.
response_typestringoptionalOutput format. 'markdown' (default) preserves structure and is ideal for LLMs. 'plaintext' strips all formatting for pure text extraction. 'pdf' returns a PDF of the page. 'html' returns the raw HTML source (omits the response_type param; ZenRows default). Ignored when autoparse, css_extractor, outputs, or screenshot params are set.
screenshotbooleanoptionalCapture an above-the-fold screenshot instead of text content.
screenshot_fullpagebooleanoptionalCapture a full-page screenshot including content below the fold.
screenshot_selectorstringoptionalCapture a screenshot of a specific element by CSS selector instead of the full page.
waitintegeroptionalMilliseconds to wait after page load before capturing. Max 30000. Requires js_render=true.
wait_forstringoptionalCSS selector to wait for before capturing. Requires js_render=true.