Pricing
How usage is billed: per-second sessions, proxy data, CAPTCHA solving, web search and AI models, the monthly spend cap, and how to watch your usage.
You pay for what runs, by the second. There is no fee per session. This page explains each kind of usage and how to keep an eye on it. Plans and their prices are on the pricing page.
Sessions
| What | Price |
|---|---|
| A session with a browser only | $0.045 per hour |
| A session with a shell (with or without a browser) | $0.045 per vCPU-hour plus $0.013 per GiB-hour, about $0.084 per hour on 1 vCPU and 3 GiB |
| A stopped session | Free: no running time, and no charge for the browser and files it kept. It is deleted after your plan’s retention days. |
Time runs from the moment a session starts until it stops. Each session shows its own running time and cost in usage. Stopping a session stops the clock at that second. A stopped session does not count towards your plan’s concurrent sessions. See Lifecycle.
Proxy data
| Proxy | Price per GB |
|---|---|
| Residential | $8.00 per GB |
| Datacenter | $1.50 per GB |
| Your own proxy | No data charge |
Data through the platform’s proxies is counted in both directions. Your plan includes a monthly allowance. See Proxies, and how to use less data.
Automatic CAPTCHA solving
With captcha: "solve", every attempt that reaches the solving service is billed per 1,000, solved or not. The price is captchaSolving.per1000Attempts in GET /v1/pricing. Your plan caps the attempts per month. See CAPTCHAs.
Web search
Your plan includes a number of web searches each calendar month (limits.searchesPerMonth). Beyond that, each 1,000 searches costs limits.extraSearchesPer1000Usd; on a plan without extra searches (Free), the next search gets 402 plan_limit until the 1st. The same search within an hour comes from the cache and is not counted. GET /v1/pricing shows each plan’s numbers in webSearch.byPlan. See Search.
AI models
Agent runs, extract, plain-English steps and the AI helpers in scripts use AI models. They are billed by the tokens the model reads and writes, at the model’s price per million tokens. GET /v1/agent/models lists the prices. Each run, extract and step reports its cost in usage.costUsd, on top of the session’s time.
You can run models on your own provider key instead. That has no model charge from Boxline, and it is outside the cap below. The Free plan runs AI on your own keys only; paid plans include Boxline’s keys, or use your own. See Your own model keys.
Monthly caps
Your plan caps what can run up a bill without you noticing. The caps belong to your organization: all its projects share them.
- Model spend (
limits.modelSpendCapUsd): once this month’s model cost on Boxline’s keys reaches it, agent runs, extract and plain-English steps get402 spend_limituntil the 1st of the month (UTC). - Proxy data (
limits.proxyGbPerMonth): past it, asking for the platform’s proxies gets402 spend_limit. - CAPTCHA solves (
limits.captchaSolvesPerMonth): past it, CAPTCHAs go to a person instead.
GET /v1/auth/me shows your caps in project.limits. See Plans and features. Session time has no cap in the plan: your plan’s running sessions and longest session are the limits there.
To cap everything, session time too, set a monthly spending limit for your organization and for each project. At the limit, new work is refused with 402 spend_limit and running sessions stop. Your plan’s included credit, the balance, and the alerts are on Credit and spending limits.
Watch your usage
GET /v1/project/usage is the one call for what your project used and spent. It totals a period (from and to; this month so far by default): sessions, how many run now (running) and your plan’s concurrencyLimit, agent runs, running time, proxy data, CAPTCHA solves, searches and the cost, with a line per day. It has the numbers of the console’s overview too. See Get usage and cost.
curl "https://api.boxline.dev/v1/project/usage?from=2026-09-01T00:00:00Z" \ -H "x-api-key: $BOXLINE_API_KEY"const usage = await bx.usage({ from: "2026-09-01T00:00:00Z" });console.log(usage.costUsd, usage.sessions, usage.byDay);usage = bx.usage(from_="2026-09-01T00:00:00Z")print(usage["costUsd"], usage["sessions"], usage["byDay"])boxline usage # this month so farboxline usage --from 2026-09-01 --to 2026-09-30{ "from": "2026-09-01T00:00:00.000Z", "to": "2026-09-29T10:00:00.000Z", "sessions": 412, "running": 3, "concurrencyLimit": 25, "agentRuns": 96, "modelCostUsd": 4.12, "ownKeyModelCostUsd": 1.35, "browserSeconds": 51840, "sandboxVcpuSeconds": 7200, "sandboxGibSeconds": 21600, "proxy": { "residentialGb": 1.2, "datacenterGb": 0, "customGb": 0.4, "costUsd": 0 }, "captchaSolves": { "solved": 41, "failed": 3, "refused": 7, "costUsd": 0 }, "searches": { "count": 120, "costUsd": 0 }, "costUsd": 0.78, "byDay": [ { "date": "2026-09-01", "sessions": 14, "seconds": 1800, "costUsd": 0.02, "agentRuns": 6, "modelCostUsd": 0.31, "ownKeyModelCostUsd": 0.08 } ]}costUsd includes proxy data, CAPTCHA solving and searches beyond the allowance. modelCostUsd is the list-price cost of agent runs on Boxline’s model keys, and ownKeyModelCostUsd that of runs on your own keys, which Boxline does not charge for. Both are in the totals and in each day. A day with nothing in it is left out of byDay. Each run, extract and step also reports its own cost. The numbers above are an example, not real prices.
Keep costs under control
- Give every session a
timeoutthat fits the job, not the plan’s maximum. You can change it on a running session with Update a session. - Stop sessions in a
finallyblock (Node) or awithblock (Python). - Stop a session that waits for something slow, instead of keeping it running. A stopped session is free, and you can resume it later.
- List what is running now and then (
GET /v1/sessions?status=RUNNING), and stop what you do not need with bulk stop. - Check
GET /v1/project/usagedaily, and alert yourself whencostUsdpasses a line you set. - Revoke API keys that may have leaked (in the console, or
DELETE /v1/project/api-keys/:id): whoever has a key can start sessions on your bill.
| Plan | Monthly fee | Usage included |
|---|---|---|
| Free | $0.00 | $5.00 |
| Hobby | $19.00 | $15.00 |
| Startup | $99.00 | $80.00 |
| Scale | Custom | Custom |
These docs describe a beta API. Endpoints, fields and SDK methods may change before general availability; breaking changes will be listed in the changelog.