- × 403
- × 200 (empty)
- × captcha
- × retry
- × retry
- × give up
4,200 tokens. no data.
Six attempts. No answer.
Solution · AI Agents
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.
Where agents actually break
4,200 tokens. no data.
Six attempts. No answer.
zenrows.fetch(url)8 tokens. clean markdown.
One call. Clean text.
01 · Research
zenrows.fetch(url, { format: 'markdown' })
→ clean markdown, source kept for citation.
02 · RAG ingestion
zenrows.fetch(url, { format: 'markdown', js_render: true })
→ clean markdown, chunked and vector-store ready.
03 · Company enrichment
zenrows.fetch(domain, { autoparse: true })
→ hiring, stack, pricing, exec bios, wherever the page has them. (autoparse is Extract's parameter name.)
04 · Market monitoring
zenrows.fetch(url, { autoparse: true })
→ structured fields, ready to compare run over run.
05 · Competitive intel
zenrows.fetch(url, { autoparse: true })
→ pricing, hiring, velocity, ready to compare.
06 · Catalog enrichment
zenrows.fetch(url, { autoparse: true })
→ full product record, every field, ready to index.
07 · Job data
zenrows.fetch(board, { autoparse: true })
→ structured rows across every board.
08 · Browser workflows
zenrows.browser.session(url)
→ persistent browser, multi-step state.
One layer, every surface
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"}'
Past the threshold