- × 403
- × 200 (empty)
- × captcha
- × retry
- × retry
- × give up
4,200 tokens. no data.
Six attempts. No answer.
Zenrows gives agents the tools to fetch clean context, extract structured data, and operate dynamic websites, including protected pages that normal tools cannot access.
Zenrows gives your AI tools the answers your team needs, clean context, structured records, fresh sources, and pages other tools cannot reach.
4,200 tokens. no data.
Six attempts. No answer.
zenrows.fetch(url)8 tokens. clean markdown.
One call. Clean text.
zenrows.fetch(url, { format: 'markdown' })
→ clean markdown, source kept for citation.
zenrows.fetch(url, { format: 'markdown', js_render: true })
→ clean markdown, chunked and vector-store ready.
zenrows.fetch(domain, { autoparse: true })
→ hiring, stack, pricing, exec bios, wherever the page has them. (autoparse is Extract's parameter name.)
zenrows.fetch(url, { autoparse: true })
→ structured fields, ready to compare run over run.
zenrows.fetch(url, { autoparse: true })
→ pricing, hiring, velocity, ready to compare.
zenrows.fetch(url, { autoparse: true })
→ full product record, every field, ready to index.
zenrows.fetch(board, { autoparse: true })
→ structured rows across every board.
zenrows.browser.session(url)
→ persistent browser, multi-step state.
Zenrows is the web data infrastructure layer. Consume it from MCP (open standard, runs everywhere), Vercel AI SDK, LangChain, or the raw API, typed schemas, streaming, structured outputs across all of them.
Zenrows is the web data layer your team plugs in once. The same building blocks work across the connectors and assistants your team already uses, with clean structured data on every side.
// Add Zenrows as an MCP server in any client (Claude Code,
// Cursor, VS Code, Vercel AI SDK, OpenAI Agents, ...).
{
"mcpServers": {
"zenrows": {
"command": "npx",
"args": ["-y", "@zenrows/mcp"],
"env": { "ZENROWS_API_KEY": "sk_..." }
}
}
}
import { streamText } from 'ai';
import { anthropic } from '@ai-sdk/anthropic';
import { fetch, extract } from '@zenrows/ai-sdk';
const result = streamText({
model: anthropic('claude-opus-4-7'),
tools: { fetch, extract },
prompt: userTask,
});
from langchain.agents import create_agent
from zenrows_langchain import fetch, extract
agent = create_agent(
model="anthropic:claude-opus-4-7",
tools=[fetch, extract],
)
result = agent.invoke({"input": user_task})
# Any language, any runtime — typed API.
curl https://api.zenrows.com/v1/fetch \
-H "Authorization: Bearer $ZENROWS_API_KEY" \
-d '{"url":"https://example.com","format":"markdown"}'