Skip to content
Scalekit Docs
Talk to an Engineer Dashboard

Connect AI agents to the ZenRows MCP server

Vendor MCP
Open markdown

The ZenRows MCP connector routes your AI agent's tool calls to ZenRows's own MCP server through Scalekit. Each user signs in to ZenRows once, and Scalekit stores and refreshes their tokens, so your agent never handles credentials. It comes with 62 tools.

Tools
62
What they doRead · write · destructive
18 · 42 · 218 read42 write2 destructive
Users sign in with
OAuth app
Scalekit's or your own

What you can do

  • Scrape webpages: fetch any page as clean markdown, with JavaScript rendering and premium proxies when needed
  • Extract structured data: pull products, articles, or listings from a page as JSON fields
  • Drive a live browser: open pages, click, type, fill forms, scroll, and switch tabs in a browser session
  • Capture page content: get the visible text, HTML, a screenshot, or a PDF render of the current page
  • Run batch jobs: submit many URLs at once, check job status, cancel runs, and download the results

Setup

  1. Install the SDK

    Terminal window
    npm install @scalekit-sdk/node dotenv
  2. Set your credentials

    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. Create the ZenRows MCP connection

    In AgentKit > Connections, create a ZenRows MCP connection. The name you give it is the connection_name your code passes. See Configure connections.

    Scalekit credentials are available for ZenRows MCP server, so you don't need to register an OAuth app.

  4. Authorize a user and make your first call

    quickstart.mts
    import { ScalekitClient } from '@scalekit-sdk/node'
    import 'dotenv/config'
    import { createInterface } from 'node:readline/promises'
    const scalekit = new ScalekitClient(
    process.env.SCALEKIT_ENVIRONMENT_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)
    const rl = createInterface({ input: process.stdin, output: process.stdout })
    await rl.question('Press Enter after authorizing...')
    rl.close()
    // Make your first call
    const result = await actions.executeTool({
    connector,
    identifier,
    toolName: 'zenrowsmcp_batch_results',
    toolInput: { job_id: 'YOUR_JOB_ID' },
    })
    console.log(result)
    Terminal window
    npx tsx quickstart.mts

    Each user signs in once. See Authorize a user for the full flow and statuses.

Tools

Pass the exact name to execute_tool
Try in PlaygroundRequest a tool
  • zenrowsmcp_batch_resultsList result rows for a ZenRows Batch job.Read-only

    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.

    Inputs

    job_idstringrequired
    Batch job id returned by batch_create or batch_list
    cursorstring
    next_cursor from a previous batch_results call
    limitstring
    Max rows to return (default 100, max 1000)
    run_idstring
    An earlier run's id (from batch_status or batch_rerun). Default: the job's latest run.
    statusstring
    Filter rows by status (default all). processing = tasks not finished yet. successful also returns expired rows.
  • zenrowsmcp_batch_statusGet status and stats for a ZenRows Batch job, including latest_run.status and latest_run.stats.Read-only

    Batch Status

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

    Inputs

    job_idstringrequired
    Batch job id returned by batch_create or batch_list
  • zenrowsmcp_batch_waitPoll batch_status until a ZenRows Batch job reaches a terminal state (completed, stopped, or deleted).Read-only

    Batch Wait

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

    Inputs

    job_idstringrequired
    Batch job id returned by batch_create or batch_list
    timeoutstring
    Max wait in seconds (default 50). Many MCP clients cancel a call after 60 s.
    timeout_msstring
    Deprecated: the same wait in milliseconds. Use the seconds parameter instead.
  • zenrowsmcp_browser_generate_pdfRender the current page as a PDF document.Read-only

    Browser Generate Pdf

    Render the current page as a PDF document.

    Inputs

    session_idstringrequired
    Session ID returned by browser_navigate
    landscapeboolean
    Landscape orientation (default false)
    print_backgroundboolean
    Print background graphics (default false)
    scalestring
    Page scale factor (default 1)
  • zenrowsmcp_browser_get_accessibility_treeReturn the accessibility tree of the current page for element discovery and screen-reader testing.Read-only

    Browser Get Accessibility Tree

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

    Inputs

    session_idstringrequired
    Session ID returned by browser_navigate. Required by all browser_* tools.
  • zenrowsmcp_browser_get_attributeGet the value of a specific HTML attribute from an element matching a CSS selector.Read-only

    Browser Get Attribute

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

    Inputs

    attributestringrequired
    HTML attribute name to read, e.g. href, src, data-id.
    selectorstringrequired
    CSS selector identifying the target element, e.g. #submit-button or .product-card.
    session_idstringrequired
    Session ID returned by browser_navigate. Required by all browser_* tools.
  • zenrowsmcp_browser_get_cookiesReturn all cookies set in the current browser session.Read-only

    Browser Get Cookies

    Return all cookies set in the current browser session.

    Inputs

    session_idstringrequired
    Session ID returned by browser_navigate. Required by all browser_* tools.
  • zenrowsmcp_browser_get_htmlReturn the outer HTML of an element or the full page if no selector is given.Read-only

    Browser Get Html

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

    Inputs

    session_idstringrequired
    Session ID returned by browser_navigate. Required by all browser_* tools.
    selectorstring
    CSS selector identifying the target element, e.g. #submit-button or .product-card.