Skip to main content
Glama
ZenRows
by ZenRows

batch_create

Submit many URLs as an asynchronous Zenrows cloud scraping job, then use the returned job ID to track progress and retrieve batch results.

Instructions

Submit 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 the configuration that succeeds. Pass just the URLs. Set js_render or premium_proxy (job-level or in a task's zenrows_params) only to force a fixed configuration; that turns automatic mode off for the affected tasks and bills them at that configuration's cost.

Returns job_id + latest_run.status/stats. batch_status and batch_wait report progress; batch_results lists the results. If you get BATCH_ACCESS_DENIED, Batch is not enabled for this account or API key.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
urlsNoShorthand: list of URLs (converted to tasks). Ignored when tasks is provided.
waitNoIf true, poll until the job reaches a terminal state before returning
tasksNoList of tasks (each needs a url). Prefer this over urls when you need per-task params.
js_renderNoForce js_render on all tasks. Overrides automatic mode (mode=auto), which already renders when needed.
mode_autoNoAutomatic mode (mode=auto) is on by default; leave unset. False sends plain requests without it.
premium_proxyNoForce premium_proxy on all tasks (10x cost). Overrides automatic mode (mode=auto), which already uses premium proxies when a page needs them.
proxy_countryNoJob-level ISO country code. Works in automatic mode (mode=auto); with js_render alone it requires premium_proxy.
response_typeNoJob-level response_type
zenrows_paramsNoAdditional job-level zenrows_params merged with the flags above
wait_timeout_msNoMax wait time when wait=true (default 600000)

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv2.7.0

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only cover the safety profile (readOnlyHint=false, destructiveHint=false, openWorldHint=true); the description carries the operational load. It discloses the automatic-mode default, that forcing js_render/premium_proxy disables automatic mode for the affected tasks and bills them at that configuration's cost, that premium_proxy is 10x cost, and what BATCH_ACCESS_DENIED means. This is exactly the cost/auth context an agent needs before invoking.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose, then alternation/comparison, then billing semantics, then return values and error handling; every paragraph carries distinct information. Slightly dense and the cost/mode explanation is repeated for both js_render and premium_proxy, keeping it just short of a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 10-parameter, no-output-schema tool this covers what the schema cannot: the default automatic mode, the cost consequences of overrides, the return shape (job_id + latest_run.status/stats), the sibling tools for polling, and the access-denied failure mode. An agent has everything required to call it correctly on the first attempt.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description genuinely adds cross-parameter meaning: proxy_country works in automatic mode and requires premium_proxy when combined with js_render, and job-level vs per-task zenrows_params precedence. It does not restate the urls/tasks precedence rule already in the schema, which is the only real gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb+resource+scope: 'Submit a cloud Batch job that fans out many URLs asynchronously (Zenrows Batch API).' It then explicitly distinguishes itself from the nearest sibling ('NOT the same as browser_batch') and from scrape/extract by workload size, so the agent can route without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-to-use ('large URL lists') and when-not ('scrape and extract handle single pages'), names the sibling it is not (browser_batch) with the distinguishing endpoint and auth header, and points to batch_status/batch_wait/batch_results for the follow-on workflow.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.