Get prices and plans
Get prices and plans.
GET
/v1/pricingRequest
| Method and path | GET/v1/pricing |
|---|---|
| Base URL | https://api.boxline.dev |
| Authentication | None. Anyone can call it. |
curl "https://api.boxline.dev/v1/pricing"import { Boxline } from "@boxline/sdk";const bx = new Boxline(); // reads BOXLINE_API_KEY and BOXLINE_API_URLconst pricing = await bx.pricing(); // no API key neededconsole.log(pricing.browserSessionPerHour, pricing.plans.map((p) => p.name));from boxline import Boxlinebx = Boxline() # reads BOXLINE_API_KEY and BOXLINE_API_URLpricing = bx.pricing() # no API key neededprint(pricing["browserSessionPerHour"], [p["name"] for p in pricing["plans"]])Responses
200 OK
The public price table.
Fields
| Name | Type | Default | Allowed values | Description |
|---|---|---|---|---|
currency | string | – | USD | |
billing | string | – | – | |
browserSessionPerHour | number | – | – | |
sandboxPerVcpuHour | number | – | – | |
sandboxPerGibHour | number | – | – | |
defaultShellMachine | object | – | – | |
defaultShellMachine.vcpu | number | – | – | |
defaultShellMachine.gib | number | – | – | |
defaultShellMachine.perHour | number | – | – | |
stoppedSessions | object | – | – | A stopped session is free. |
stoppedSessions.perHour | number | – | – | |
proxies | object | – | – | |
proxies.residentialPerGb | number | – | – | |
proxies.datacenterPerGb | number | – | – | |
proxies.customPerGb | number | – | – | |
captchaSolving | object | – | – | |
captchaSolving.per1000Attempts | number | – | – | |
webSearch | object | – | – | Searches included per month and the price per 1,000 beyond them, for each public plan. |
webSearch.byPlan | object | – | – | |
plans | object[] | – | – | |
plans[].id | string | – | – | |
plans[].name | string | – | – | |
plans[].priceUsd | number | null | – | – | null = custom price. |
plans[].includedUsd | number | – | – | |
plans[].concurrency | integer | – | – | |
plans[].maxTimeoutSeconds | integer | – | – | |
plans[].modelSpendCapUsd | number | null | – | – | null = no cap. |
plans[].proxyGbPerMonth | number | null | – | – | null = no cap. |
plans[].captchaSolvesPerMonth | integer | null | – | – | 0 = not on this plan, null = no cap. |
plans[].maxCredentials | integer | – | – | Credentials a project may keep (passwords and secrets together). |
plans[].maxProfiles | integer | null | – | – | Browser profiles a project may keep; null = no limit (Free 10, Hobby 100, Startup 500, Scale 2000). |
plans[].maxProfileBytes | integer | null | – | – | Bytes a project's profiles may hold together; null = no limit (Free 50 MB, Hobby 1 GB, Startup 5 GB, Scale 20 GB). |
plans[].searchesPerMonth | integer | null | – | – | Web searches included per calendar month (UTC); null = no limit. |
plans[].extraSearchesPer1000Usd | number | null | – | – | Price per 1,000 searches beyond searchesPerMonth; null = no searches beyond it (402 plan_limit). |
plans[].webhookEndpoints | integer | null | – | – | Webhook endpoints a project may have; null = no limit. |
plans[].tasks | integer | null | – | – | Tasks a project may have; null = no plan limit (1,000 per project at most). |
plans[].schedules | integer | null | – | – | Tasks with a schedule switched on; 0 = no schedules, null = no limit. |
plans[].retentionDays | integer | – | – | Days an ended session's recording, logs and agent-run steps are kept (Free 7, Hobby and Startup 30, Scale 90). From 1 to 365. |
plans[].maxCrawlPages | integer | – | – | The most pages one crawl may ask for (Free 200, paid plans 1000). At least 1. |
plans[].features | object | – | – | What the plan may use. |
plans[].features.shell | boolean | – | – | |
plans[].features.profiles | boolean | – | – | |
plans[].features.recording | boolean | – | – | |
plans[].features.realisticBrowser | boolean | – | – | |
plans[].features.residentialProxy | boolean | – | – | |
plans[].features.datacenterProxy | boolean | – | – | |
plans[].features.customProxy | boolean | – | – | |
plans[].features.captchaSolving | boolean | – | – | |
plans[].features.agentRuns | boolean | – | – | |
plans[].features.steps | boolean | – | – | |
plans[].features.extract | boolean | – | – | |
plans[].features.quickApis | boolean | – | – | |
plans[].features.crawl | boolean | – | – | |
plans[].features.loginDetails | boolean | – | – | Credentials of type password, with their 2FA codes. |
plans[].features.platformModels | boolean | – | – | Model calls on Boxline's own keys. Off on Free, which runs models on the project's own keys only. |
plans[].features.extensions | boolean | – | – | Chrome extensions (upload them |
plans[].features.webSearch | boolean | – | – | |
plans[].public | boolean | – | – | |
plans[].organizationId | string | null | – | – | Set only on a private plan: the one organization it is for. |
features | object | – | – | The same keys as PlanFeatures, with a label for people. |
{ "currency": "USD", "billing": "…", "browserSessionPerHour": 0, "sandboxPerVcpuHour": 0, "sandboxPerGibHour": 0, "defaultShellMachine": { "vcpu": 0, "gib": 0, "perHour": 0 }, "stoppedSessions": { "perHour": 0 }, "proxies": { "residentialPerGb": 0, "datacenterPerGb": 0, "customPerGb": 0 }, "captchaSolving": { "per1000Attempts": 0 }, "webSearch": { "byPlan": {} }, "plans": [ { "id": "hobby", "name": "Work account", "priceUsd": 0, "includedUsd": 0, "concurrency": 0, "maxTimeoutSeconds": 0, "modelSpendCapUsd": 0, "proxyGbPerMonth": 0, "captchaSolvesPerMonth": 0, "maxCredentials": 0, "maxProfiles": 0, "maxProfileBytes": 0, "searchesPerMonth": 0, "extraSearchesPer1000Usd": 0, "webhookEndpoints": 0, "tasks": 0, "schedules": 0, "retentionDays": 1, "maxCrawlPages": 1, "features": { "shell": false, "profiles": false, "recording": false, "realisticBrowser": false, "residentialProxy": false, "datacenterProxy": false, "customProxy": false, "captchaSolving": false, "agentRuns": false, "steps": false, "extract": false, "quickApis": false, "crawl": false, "loginDetails": false, "platformModels": false, "extensions": false, "webSearch": false }, "public": false, "organizationId": "…" } ], "features": {}}Learn more
These docs describe a beta API. Endpoints, fields and SDK methods may change before general availability; breaking changes will be listed in the changelog.