Migration
Outgrowing Octo Browser.Good automation, someone else's storage.
Octo is the closest of the three on automation ergonomics and the furthest from you on custody. If you have hit the API paywall or the storage question, this is the comparison.
Every claim about Octo Browser on this page links the page it came from, read on 2026-07-27.
- Rows compared
- 31
- Rows unverified
- 6
- Things Octo Browser does better
- 5
- Sources read on
- 2026-07-27
01Their ceiling
Why teams leave
Where Octo Browser stops
- Custody
Profile data lives in Octo's cloud
Profiles are held in Octo's cloud storage so they can be opened from several devices, and their cloud API is the only control plane. There is no self-hosted deployment and no customer-operated fleet. - Automation
No API below the third paid plan
Octo states the API is available from the Base plan upward, so Lite and Starter cannot be automated at all. Base is €79 a month billed monthly and includes 100 profiles. - Teams
Team management starts at Team
Lite, Starter and Base carry no seats. Team includes three and allows up to six; Advanced includes eight and sells more. Their permission model is genuinely good, and it begins at €169 a month. - Cost shape
Profiles and seats are add-ons
Both are bought on top of the plan, so a headline price is a floor rather than a total. Term discounts of 10, 20 and 30 percent mean a quoted price also depends on how long you commit.
02Full table
Row by row
31 rows against Octo Browser
| What is compared | VeilBrowserOurs | Octo Browser |
|---|---|---|
| Where it runsWhich machines execute the browser, and whose infrastructure holds the data. | ||
| Browser execution locationThe machine the Chromium process actually runs on. | The customer's own machine, or a customer-operated worker fleet. Only the local API spawns browser processes. The cluster manager load-balances launches across worker hosts with an OpenResty least-connections upstream; it never runs browsers itself. VeilBrowser local-api browser service, read from our codebase on 2026-07-27 | Profiles run in the Octo Browser desktop app on the user's machine; the local client API is served from that app. The local API listens on 127.0.0.1:58888 only and has no remote access. |
| Self-hostable control planeCan the management plane run on customer infrastructure at all. | Yes One command, one input. The installer states the org API key is the only required value. VeilBrowser cluster-manager installer, read from our codebase on 2026-07-27 | No The cloud API at app.octobrowser.net is the only control plane, and profile data is held in Octo's cloud storage. No self-hosted deployment is offered. |
| Self-hostable browser fleetCan a pool of browser workers be operated by the customer. | Yes Worker hosts are registered as fleet hosts and receive launches through the cluster manager's load balancer; per-worker concurrency is capped by VEIL_MAX_BROWSERS. VeilBrowser cluster load balancer template, read from our codebase on 2026-07-27 | No Profiles run on operator desktops. There is no customer-operated worker fleet. |
| Where profile data lives | Partial Sessions, fleet state and profile bundles stay on customer disks in per-host SQLite. Accounts, organisations and cloud profile configuration currently live in the vendor-hosted PostgreSQL, and workers fetch profile config from it at launch. VeilBrowser architecture decisions, read from our codebase on 2026-07-27 | Profile data is encrypted in Octo's cloud storage and can be accessed from multiple devices. |
| Platforms and mobileWhat a profile can present itself as, and whether mobile means a real device. | ||
| Profile OS targetsThe operating systems a profile can present, not the OSes the app installs on. | win, mac, linux, android Canonical enum in the shared schemas. The dashboard profile form currently omits android, which is a UI gap rather than a platform limit. VeilBrowser shared Zod schemas, read from our codebase on 2026-07-27 | Windows, macOS Intel, macOS ARM and Android. Chosen at creation and immutable afterwards. Windows 10 and 11, macOS 12 to 15, Android 12 to 15 are the documented versions. |
| Android profiles | Partial Android is a profile fingerprint target with real device models resolved from installed profile bundles. It is not a hosted Android device. VeilBrowser profile bundle service, read from our codebase on 2026-07-27 | Partial Android mobile fingerprints, added in version 2.7, present the profile as a phone or tablet using real device models. Mobile profiles support neither browser extensions nor screen resolution changes. |
| iOS profiles | No No iOS target exists in the OS enum. | No The fingerprint OS enum is win, mac and android only. |
| Real devices or emulationWhether mobile support is hosted hardware or a spoofed fingerprint. | Emulation only, on worker-hosted Chromium. No cloud phone or real-device fleet exists anywhere in the codebase. VeilBrowser shared Zod schemas, read from our codebase on 2026-07-27 | Emulation. Octo's own release note says the browser “can fully emulate an Android mobile device”. |
| Automation surfaceHow code drives the browser, and what a subscription gates. | ||
| Chrome DevTools Protocol access | Yes Launch returns a standard `ws://127.0.0.1:<port>/devtools/browser/<id>` endpoint. VeilBrowser local-api browser service, read from our codebase on 2026-07-27 | Yes Starting a profile with debug_port returns a CDP WebSocket endpoint; the port can be pinned in the range 1024 to 65534 for parallel runs. |
| Puppeteer | Yes Connects to the returned CDP WebSocket endpoint directly. VeilBrowser local-api browser service, read from our codebase on 2026-07-27 | Yes |
| Playwright | Yes connectOverCDP against the returned WebSocket endpoint. VeilBrowser local-api browser service, read from our codebase on 2026-07-27 | Yes |
| Selenium | Partial Works through the same debug port via Selenium's debuggerAddress, but there is no Selenium-specific code path or worked example in the repository yet. VeilBrowser local-api browser service, read from our codebase on 2026-07-27 | Yes Via the returned debug port as Selenium's debuggerAddress. |
| REST API | Yes Cloud routes under /v1 for profiles, organisations, sessions, plans and billing; local routes for sessions, profiles, fleet and cluster operations. VeilBrowser SaaS API routes, read from our codebase on 2026-07-27 | Yes A cloud automation API covering profiles, proxies, tags, folders, fingerprint lookups and team permissions, plus the local client API. |
| First-party typed SDKA vendor-maintained, typed client library, not community samples. | Yes @veil/api exposes typed Eden clients for both the local and cloud APIs, derived from the server types. VeilBrowser typed API client, read from our codebase on 2026-07-27 | Unknown Documentation and Postman examples across several languages, but no first-party typed client library was found. |
| API needs a paid plan | Not summarised Ours to answer, and we cannot yet. The gate exists in the plan definitions and is not enforced by the API, so either answer would be falsifiable. | Yes Octo states the API is available for Base and higher subscription plans. Lite and Starter have no API access. |
| Published API rate limits | Base 50/min and 500/hour, Team 100/min and 1,500/hour, Advanced 200/min and 3,000/hour. VeilBrowser plan seed, read from our codebase on 2026-07-27 | Base 50/minute and 500/hour, Team 100/minute and 1,500/hour, Advanced 200/minute and 3,000/hour, expandable to 1,000/minute and 50,000/hour. Custom is unlimited. Starting a profile costs 1 request and a one-time profile costs 4; other local API calls do not count. |
| Proxies and identity coherenceProtocol coverage, per-profile assignment, and whether the identity follows the exit IP. | ||
| Proxy protocols | http, https, socks5, socks5h socks5h keeps DNS resolution at the proxy exit. One local service still parses a legacy socks4 value that is not in the canonical schema. VeilBrowser shared Zod schemas, read from our codebase on 2026-07-27 | HTTP, HTTPS, SOCKS5 and SSH. The API additionally accepts a socks value for SOCKS4. IPv6 is supported in the hostname field. Octo recommends SOCKS5 or SSH. socks5h is not offered. |
| Per-profile proxy assignment | Yes Each profile stores its own proxy, and a launch may pass a per-session override. VeilBrowser shared Zod schemas, read from our codebase on 2026-07-27 | Yes Proxies are either saved records referenced by UUID or supplied inline on a single profile. |
| Timezone, locale and geolocation from the exit IPWhether the profile derives IP-dependent values automatically. | Yes Derived by the browser build rather than by the platform API, which is why it is not visible in an API surface. The browser core's CLI reference documents timezone, locale, languages and location as IP-based by default, with flags that exist only to override the automatic behaviour. Auto-detection requires the proxy to arrive as --proxy-server, which is how the launch path passes it. VeilBrowser local-api browser service, read from our codebase on 2026-07-27 | Yes The fingerprint object accepts a type of “ip” for languages, timezone, geolocation and WebRTC, which derives each from the exit IP. |
| Proxies sold in-product | No No proxy purchasing, traffic metering or bundled IP pool exists. VeilBrowser shared Zod schemas, read from our codebase on 2026-07-27 | Partial A Proxy Shop sells proxies inside the app with volume discounts, but no proxy traffic is included in a subscription. |
| Rotation / change-IP URL | No No change-IP URL, rotation scheduler or proxy health check in code. VeilBrowser shared Zod schemas, read from our codebase on 2026-07-27 | Yes Saved proxies carry a change_ip_url field used by the rotate-IP action. |
| Teams and access controlSeats, permission granularity and what an operator can audit. | ||
| Team seats | 1, 2, 5, 15 and 50 seats from Lite through Advanced. Enforced on invite against the organisation's member limit. VeilBrowser plan seed, read from our codebase on 2026-07-27 | None on Lite, Starter and Base. Team includes 3 seats and allows up to 6. Advanced includes 8 with unlimited additional seats. Team management is only available on Team and higher. |
| Permission granularity | Three organisation roles: owner, admin, member. The self-hosted cluster manager has its own admin, operator and viewer roles. Coarser than a per-action permission matrix; there is no per-profile or per-folder scoping. VeilBrowser SaaS Prisma schema, read from our codebase on 2026-07-27 | Yes Per-action permissions for profiles (create, edit, delete, transfer, clone, passwords), proxies, templates, extensions and tasks, plus manage_team, edit_tags, view_all_tags and manage_action_log. Profile visibility is scoped by folder or by tag. |
| Activity / audit log | Partial The self-hosted cluster manager records fleet operations. The cloud side has an auditLogs plan flag but no audit log model or endpoint. VeilBrowser plan seed, read from our codebase on 2026-07-27 | Yes An Action Log records team member activity and is itself permission-gated. |
| Two-factor authentication | No Not offered. Account login is email and password plus Google or GitHub OAuth, with no second factor. All three competitors publish two-factor authentication, so this is a gap rather than a decision about what the product is for. VeilBrowser auth configuration, read from our codebase on 2026-07-27 | Yes Two-factor authentication on accounts plus optional per-profile launch passwords. |
| SAML / OIDC single sign-on | No An sso plan feature flag exists, but there is no SAML or OIDC implementation. Google and GitHub OAuth cover user login only. VeilBrowser plan seed, read from our codebase on 2026-07-27 | Unknown No SAML or OIDC offering found on their pages. |
| Compliance and trustOnly certifications and statements the vendor publishes themselves. | ||
| SOC 2 | No No attestation. | Unknown No attestation published on their own site. |
| ISO 27001 / 27701 | No No certification. | Unknown No certification published on their own site. |
| Published GDPR position | Unknown No published position to cite yet. Legal review pending. | Unknown Octo describes account and profile encryption and says it does not access profile activity, but no GDPR position was found on their own pages. |
| Customer control over data location | Partial A self-hosted deployment keeps fleet state, sessions and profile bundles on customer infrastructure in a chosen location. Account and cloud profile records still sit in the vendor database, so this is not yet full residency control. VeilBrowser architecture decisions, read from our codebase on 2026-07-27 | Unknown No storage region is published. |
| Publishes comparison pages | No | Partial Blog-style alternatives round-ups rather than dedicated compare pages. Their AdsPower alternatives post names Multilogin, Dolphin Anty, GoLogin and others. |
Reading the table
- Yes
- Documented and available.
- Partial
- Available with a documented limit, named in the cell.
- No
- Documented as absent, or absent from every page we read.
- Unknown
- Not verifiable from their own pages. Not the same as absent.
- Not summarised
- Their published pages do not agree, so we do not characterise it.
03Where they win
Conceded
Where Octo Browser is stronger
- Octo's team permission model is more granular than VeilBrowser's: per-action flags for profiles, proxies, templates, extensions and tasks, plus folder or tag scoped profile visibility.
- An action log is a shipped feature with its own permission, where VeilBrowser only has a plan flag on the cloud side.
- Their local client API is well documented, including pinned debug ports for parallel runs and one-time profiles that self-delete after a session.
- SSH tunnels, SOCKS4 and IPv6 proxies are supported; VeilBrowser supports none of those.
- A per-proxy change-IP URL is a first-class field, which matters for mobile proxy workflows VeilBrowser cannot serve today.
None of this is hedged. If one of these is the thing your work depends on, the honest recommendation is to stay where you are.
04Price
Their list, and ours
What Octo Browser costs, and what we cost
| Plan | Monthly | Annual, per month | Profiles | Seats | API rate limit |
|---|---|---|---|---|---|
| Lite | €10 | €7 | 3 | None | No API access |
| Starter10 profiles included, up to 20 more purchasable. | €29 | €21 | 10 to 30 | None | No API access |
| BaseLowest plan with API access. 100 profiles included, up to 100 more. | €79 | €56 | 100 to 200 | None | 50 requests/minute, 500 requests/hour |
| Team | €169 | €119 | 350 to 600 | 3 to 6 | 100 requests/minute, 1,500 requests/hour |
| Advanced8 seats included, unlimited additional seats purchasable. | €329 | €231 | 1,200 to 100,000 | Unlimited | 200 requests/minute and 3,000 requests/hour included, expandable to 1,000/minute and 50,000/hour |
| CustomIncludes a personal manager and one-time profiles. | On request | On request | Unlimited | Unlimited | Unlimited |
What the Octo Browser list price does not say
- Priced in euros and shown excluding VAT, so the charged total is regional.
- The plan cards and the feature table disagree on profile counts. The cards show the maximum reachable with paid add-ons (3, 30, 200, 600, 100,000) while the table shows what is included (3, 10, 100, 350, 1,200). Always show which number you mean.
- Annual totals are computed from Octo's advertised per-month rate at the 12-month term; Octo publishes the monthly figure, not the total.
- Term discounts are 10% at 3 months, 20% at 6 months and 30% at 12 months, so a quoted price depends on commitment length.
- Team seats and profiles are add-on purchases, so realised cost frequently exceeds list price.
VeilBrowser
Our plans scale by profiles, seats and API volume, and seats are part of the plan rather than a separate purchase. The amounts live on the pricing page, which reads the live plan records instead of a marketing table.
Enterprise starts at $5,000 and covers the self-hosted deployment, the fleet size you need and the support around it. No billing period is quoted on that number because the scope decides it.
05Switching
The move
What moving actually involves
- 01
Describe the devices you need
An operating system target, a Chrome major between 135 and 150, an optional Android model and a proxy. Creation is one profile per call, from the API or the dashboard, so a set of forty is a short script, and a browser build is matched and pinned to each one. - 02
Point the proxies you already have at them
One proxy per profile over HTTP, HTTPS, SOCKS5 or SOCKS5H. Nothing has to be bought here, because no proxy traffic is sold here: your existing proxy strings move across as they are. - 03
Run a worker on a machine you own
One container on one host is enough to start, and the same image is what a larger fleet is made of. Browsers execute there rather than on our infrastructure. - 04
Reconnect the automation
A launch returns a standard CDP WebSocket endpoint, so Puppeteer connects to it and Playwright attaches over CDP with no vendor shim. Selenium works through the same debug port, though there is no worked example in our documentation yet.
What does not move
- Cookies and signed-in sessions do not transfer. There is no importer for another platform's profile export, so a profile that is already logged in somewhere logs in again here.
- Fingerprints are not copied across. A profile here is a browser build plus a route, so an identity is recreated rather than migrated, and it is a new device from its first launch.
- There is no hosted mobile device and no proxy traffic for sale. If either is load-bearing in your current workflow, it stays outside this platform.
- We hold no security certifications. If your review requires an attestation from the vendor rather than control of the infrastructure, that is a blocker today and we will say so on the call.
Octo's per-action permissions and its action log are finer than our three organisation roles, and its proxy support covers SSH, SOCKS4 and IPv6, which ours does not. Those rows do not improve by switching.
The getting-started path is public documentation, so the whole migration can be read before anyone asks you for a decision.
06Sources
Footnotes
What we read about Octo Browser, and what we could not settle
Octo Browser in their own words
“Antidetect browser for multi-accounting” — work with thousands of unique profiles from a single device, each with the digital fingerprint of a real device.
Rows we could not verify (6)
- First-party typed SDK
- Documentation and Postman examples across several languages, but no first-party typed client library was found.
- SAML / OIDC single sign-on
- No SAML or OIDC offering found on their pages.
- SOC 2
- No attestation published on their own site.
- ISO 27001 / 27701
- No certification published on their own site.
- Published GDPR position
- Octo describes account and profile encryption and says it does not access profile activity, but no GDPR position was found on their own pages.
- Customer control over data location
- No storage region is published.
Octo Browser pages read
- Octo Browser pricing
- Octo Browser API docs
- Octo Browser local client API docs
- Octo Browser fingerprint API docs
- Octo Browser proxy types
- Octo Browser teams API docs
Octo Browser publishes 1 comparison pages of their own. This is the same exercise run in the other direction, with the sources attached.
Outgrowing Octo Browser?
Tell us which ceiling you hit and what you run against. If VeilBrowser does not clear it, the call is short and nobody has lost an evaluation cycle.
- The difference
- The fleet runs on your machines, and the control plane can too
- Conceded
- Octo Browser has real advantages, listed above and not hedged
- Entry
- Pick a plan, or enterprise from $5,000
Every competitor claim on this page is dated and linked to the page it came from.