ZenRows MCP connector
OAuth 2.1/DCRDeveloper ToolsAutomationConnect to ZenRows MCP. Scrape any webpage with anti-bot bypass, render JavaScript-heavy sites, and automate browsers through ZenRows' cloud...
ZenRows MCP connector
-
Install the SDK
Section titled “Install the SDK”Terminal window npm install @scalekit-sdk/nodeTerminal window pip install scalekit -
Set your credentials
Section titled “Set your credentials”Add your Scalekit credentials to your
.envfile. 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> -
Authorize and make your first call
Section titled “Authorize and make your first call”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.actionsconst connector = 'zenrowsmcp'const identifier = 'user_123'// Generate an authorization link for the userconst { 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 callconst result = await actions.executeTool({connector,identifier,toolName: 'zenrowsmcp_browser_check',toolInput: { session_id: 'YOUR_SESSION_ID', selector: 'YOUR_SELECTOR' },})console.log(result)quickstart.py import osfrom scalekit.client import ScalekitClientfrom dotenv import load_dotenvload_dotenv()scalekit_client = ScalekitClient(env_url=os.getenv("SCALEKIT_ENV_URL"),client_id=os.getenv("SCALEKIT_CLIENT_ID"),client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),)actions = scalekit_client.actionsconnection_name = "zenrowsmcp"identifier = "user_123"# Generate an authorization link for the userlink_response = actions.get_authorization_link(connection_name=connection_name,identifier=identifier,)print("Authorize ZenRows MCP:", link_response.link)input("Press Enter after authorizing...")# Make your first callresult = actions.execute_tool(tool_input={"session_id":"YOUR_SESSION_ID","selector":"YOUR_SELECTOR"},tool_name="zenrowsmcp_browser_check",connection_name=connection_name,identifier=identifier,)print(result)
What you can do
Section titled “What you can do”Connect this agent connector to let your agent:
- Scrape records — Scrape any webpage and return its content using ZenRows
- Selector browser wait for — Wait until an element matching a CSS selector appears in the DOM
- Navigation browser wait for — Wait for a page navigation to complete after triggering a link or form submission
- Wait browser — Pause execution for a specified number of milliseconds
- Uncheck browser — Uncheck a checkbox identified by a CSS selector
- Type browser — Type text into the focused element character by character, simulating real keyboard input
Tool list
Section titled “Tool list”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_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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
actionstringrequiredOperation: get a value, set a value, or clear allsession_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_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.
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.
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.
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.
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.
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.
directionstringrequiredScroll directionsession_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.
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.
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.
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.
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.
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.
msintegerrequiredMilliseconds to pause execution.session_idstringrequiredSession ID returned by browser_navigate. Required by all browser_* tools.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.
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_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.
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.