- × 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, crawl sources, 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.crawl(seed, { max: 200 })
→ 200 pages, chunked, vector-store ready.
03 · Company enrichment
zenrows.extract(domain, { schema })
→ hiring, stack, pricing, exec bios.
04 · Market monitoring
zenrows.monitor.create(url, schedule)
→ diff to Slack, email, or webhook.
05 · Competitive intel
zenrows.extract(url, { fields })
→ pricing, hiring, velocity, diffed.
06 · Product monitoring
zenrows.batch.run(urls)
→ millions of SKUs, queued, retried, landed.
07 · Job data
zenrows.crawl(board, { extract })
→ 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 raw REST, 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, crawl } from '@zenrows/ai-sdk';
const result = streamText({
model: anthropic('claude-opus-4-7'),
tools: { fetch, extract, crawl },
prompt: userTask,
});
from langchain.agents import create_agent
from zenrows_langchain import fetch, extract, crawl
agent = create_agent(
model="anthropic:claude-opus-4-7",
tools=[fetch, extract, crawl],
)
result = agent.invoke({"input": user_task})
# Any language, any runtime — typed REST surface.
curl https://api.zenrows.com/v1/fetch \
-H "Authorization: Bearer $ZENROWS_API_KEY" \
-d '{"url":"https://example.com","format":"markdown"}'
Past the threshold
10,000 credits/month for free, always