browse(task). Each call runs an Outcrawl agent in a real browser, returns a schema-shaped answer with its sources, and your model writes the reply.
What you need
- An Outcrawl API key in
OUTCRAWL_API_KEY. - Your model provider’s key. The program uses OpenAI tool calling (
OPENAI_API_KEY); Anthropic tool use works the same way. npm install @outcrawl/sdk openaiorpip install outcrawl openai.
How it works
1
Declare one tool
Your model sees a single function,
browse, that takes a plain-language task. Nothing about Outcrawl leaks into your prompt.2
Run an agent with a schema
Each call submits an agent run with a JSON schema, so every answer comes back as
{ answer, sources } rather than free text.3
Cap it and set its rules
Each run’s
caps.budget is 40 credits. A per-run rule tells it not to sign in, buy anything or submit personal details, and the buying part is enforced.4
Watch it, then feed the result back
The submit answers with a
watchUrl you can open to watch the browser live. The finished run’s data goes back to your model as the tool result, with its status and what it cost.The program
ConcurrencyLimitError means every browser slot on your account is in use. Every key on your account shares one browser slot count. Browsers, agent runs, crawls, searches and scrapes that aren’t served from cache each hold a slot. This is why the program runs tool calls one at a time.
What you get back
The console, while it runs:What it costs
An agent run is billed for the model’s usage, browser time and proxy usage, and a typical run costs about 15 credits a minute all in, proxy usage included. A lookup like this one takes about 60 seconds: about 15 credits per browse call, with acaps.budget of 40 for each call. That is an estimate: the real figure depends on the task, and how much a page weighs varies.
A Builder plan’s 10,000 monthly credits covers about 650 browse calls at that size. The model in your own app is billed by your model provider, not by Outcrawl.
Make it yours
- Run several tool calls at once with
Promise.allorasyncio.gather, keeping the number below your plan’s concurrent browsers. - Add a
profileto the agent call sobrowseworks on sites where your user is signed in. - Stream the run to your UI:
for await (const record of job)yields each step as it happens. - Give the model a second tool,
read(url), backed byoc.scrapeat 1 credit a page, for pages that need no interaction.
Related
Agents
Schemas, caps and statuses.
Monitoring a run
The watch link and the event stream.
Rules
What a run is allowed to do.
Pricing
Every rate on this page.