Skip to content
Ant0 Docs
Create free account

SDKs

Availability

Two ways to automate

Most scripts need no SDK at all: start a profile through the local API (or the desktop app) and connect Playwright, Puppeteer or any CDP client to the endpoint it returns. The profile's identity, proxy, cookies and extensions are already applied by the background service.

import { chromium } from "playwright";
// Copy the token shown in Desktop → Automation into ANT0_TOKEN.
const token = process.env.ANT0_TOKEN;
if (!token) throw new Error("Set ANT0_TOKEN before running this script");
const res = await fetch("http://127.0.0.1:27100/v1/profiles/Shop%20DE/start", {
method: "POST",
headers: { authorization: `Bearer ${token}`, "content-type": "application/json" },
body: JSON.stringify({}),
});
if (!res.ok) throw new Error(`Profile start failed: HTTP ${res.status}`);
const session = await res.json(); // Session response, not a runtime wrapper
const browser = await chromium.connectOverCDP(session.ws_endpoint);

With private SDK access, the SDKs cover a second case: launching Ant0 Browser directly from your own code, with an identity you choose and without the desktop app in the loop. They wrap Playwright's launcher and add the identity layer, launch-ticket handling, geo resolution and helpers.

Node SDK

import { launch } from "ant0-browser";
const browser = await launch({
executablePath: "/path/to/ant0-browser/chrome",
identity: { mode: "synthetic", key: "research-1" },
proxy: { server: "http://host:8000", username: "user", password: "pass" },
});
const page = await browser.newPage();
await page.goto("https://example.com");
await browser.close();

Set ANT0_BROWSER_BINARY instead of passing executablePath on every call. Current source entry points:

  • launch() and launchPersistentContext(): Playwright browsers with the identity applied.
  • serve(): a raw CDP endpoint (cdpUrl, pid, isAlive(), close()) for other clients.
  • launchPlan(): for supervisors that spawn the browser themselves; returns the executable, arguments, environment and user-data directory.
  • Native, captured and persisted synthetic identities; fingerprint-profile encoding, geometry and coherence warnings.
  • Humanised input wrappers and rendering checks; optional geo (resolveGeo()) and Widevine helpers.

Python SDK

from ant0browser import launch
browser = launch(
executable_path=r"C:\path\to\ant0-browser\chrome.exe",
identity={"mode": "synthetic", "key": "research-1"},
)
page = browser.new_page()
page.goto("https://example.com")
browser.close()

The async API mirrors launch and persistent contexts:

from ant0browser.async_api import launch
browser = await launch(executable_path="/path/to/chrome", identity={"mode": "native"})

serve() and the ant0-browser-serve command give a local CDP endpoint; the helper set matches the Node SDK (identities, templates, humanised input, rendering checks, geo, Widevine).

Identity options

Omitting identity means native mode: the browser presents the machine it runs on. { mode: "synthetic", key } derives a coherent identity from the key, so the same key gives the same identity on every run. Explicit switches go under overrides: platform, platformVersion, brand, brandVersion, gpuVendor, gpuRenderer, hardware and display fields, location, timezone, acceptLanguage, WebRTC, GPU and noise controls, storageQuota, canvasBridge and tlsProfile (snake_case in Python). Overrides take precedence over captured or synthetic profiles.

Network calls

launch and serve can make a loopback request to the local background service for the engine's launch ticket; the service's account connections are listed in What leaves your computer. Optional SDK helpers connect only when called:

HelperEndpointPurpose
resolveGeo()ip.ant0.link; last-resort fallbacks api.ipify.org and ip-api.com, through the configured proxyExit-IP and country lookup. The primary service keeps no request logs; third-party fallbacks have their own policies.
resolveGeo()releases.ant0.linkGeoIP database (about 52 MB), fetched directly when a proxy check finds the 30-day local cache missing or stale.
release installANT0_BROWSER_RELEASE_URL (opt-in)Signed engine releases, verified against the key embedded in the SDK.

Geo data attribution: this product uses the IP2Location LITE database (lite.ip2location.com); includes GeoLite2 data created by MaxMind (maxmind.com); IP geolocation by DB-IP (db-ip.com).

Known engine behaviours

  • SOCKS5 with a username and password is not supported by the engine (Chromium has no such client). The SDKs refuse it; use an HTTP proxy with credentials, a SOCKS5 proxy that allows your IP, or the background service's relay by starting the profile through Ant0.
  • The first cookie command after launch is slow. Chromium 149 answers the first Storage.* CDP command about 25 seconds after launch; later calls are immediate. Give early cookie operations a 60-second budget.
  • Launch tickets. Engine releases from ant0.2 on refuse to start without a ticket issued by a signed-in background service; the SDKs fetch one automatically when the service is reachable. Without one the engine exits with code 90.