Skip to main content

solari-browser (Python)

Python SDK for Solari Browser — managed, stealth-hardened remote Chromium as an API, driven over the Playwright wire protocol (or raw CDP). A faithful port of the TypeScript @solarisdk/browser package; class, method, and field names match it one-for-one (snake_case where TS uses camelCase).

The browser runs remotely on Solari's pool — pip install pulls the driver only; you do not run patchright install chromium locally.

Feature coverage across all five languages is on the SDK feature matrix.

Install

pip install solari-browser

Quickstart

import asyncio, os
from solari_browser import Solari

async def main():
    solari = Solari(api_key=os.environ["SOLARI_API_KEY"])
    browser = await solari.launch(stealth=True)   # managed, stealth-hardened Chromium
    page = await browser.new_page()
    await page.goto("https://example.com")
    print(await page.title())
    await browser.close()

asyncio.run(main())

Sessions

Drive a session yourself instead of launch():

solari = Solari(api_key=os.environ["SOLARI_API_KEY"])
session = await solari.sessions.create(stealth=True, proxy="smart")
# ... connect over the session's CDP/WS endpoint ...
await solari.close()

Solari(...) accepts api_key, region (default us-west), and base_url (default https://api.getsolari.com).

Get and list sessions

view = await solari.sessions.get(session.id)   # raw dict: status, kind, userMetadata, endpoints while active
page = await solari.sessions.list(limit=50, metadata={"job": "nightly-42"})
# page.sessions, page.next_cursor (None on the last page)

list never returns the websocket endpoints (they are bearer capabilities): call get for a single session's. Pass page.next_cursor as cursor= for the next page.

Every REST error carries the gateway's code when it sends one, so you can branch on e.code whichever call failed: "ReplayPending" (a replay still uploading; wait and call again), "SessionNotFound", "InvalidSessionId", "PlanLimitExceeded" and so on.

Timeout, keep-alive and metadata

session = await solari.sessions.create(
    session_timeout_ms=600_000,       # end earlier than the plan maximum, in ms (at least 60 000)
    keep_alive=True,                  # hold the session if the client drops, until its deadline or release
    user_metadata={"job": "nightly-42"},  # stored with the session
)

Every duration option is in milliseconds (timeout_ms, backoff_ms, session_timeout_ms, probe_timeout_ms). session_timeout_ms is rounded up to whole seconds for the gateway (1001 ms is 2 s); the gateway refuses anything under 60 s; None or 0 leaves the plan maximum, and a negative, fractional or non-int value raises SolariError before any request. launch() accepts the same options.

Docs

Full reference and language guides: https://getsolari.com

Metadata

Release files for solari-browser 0.4.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for solari-browser 0.4.0
File Size Uploaded Provenance
solari_browser-0.4.0.tar.gz 26.2 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for solari-browser 0.4.0
File Interpreter ABI Platform
solari_browser-0.4.0-py3-none-any.whl Python 3 none any Details

Total release size: 45.7 kB

Release files / solari_browser-0.4.0.tar.gz

Download URL solari_browser-0.4.0.tar.gz
Size 26.2 kB
Tags Source
SHA-256 checksum
How to use checksums
1df2b385974855abf9f7d3971686f0d57931b5d2b4fbb8a8109c68cb4dd3a3f7
BLAKE2b-256 checksum
How to use checksums
2e917684c377ba38b7fdabd4c310c6cbee573eae16a5cb9490eff18e68e4a0ad
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.15

Release files / solari_browser-0.4.0-py3-none-any.whl

Download URL solari_browser-0.4.0-py3-none-any.whl
Size 19.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d0cae4d5c0e5f29e4e3efdfb850ffac7c05ce0cf9417120734729bd0a5c5f454
BLAKE2b-256 checksum
How to use checksums
253f56711d22895ee20e34f58b0da046d10c67f0d8a49d2a93b98a4f101d0182
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.15

Security for solari-browser 0.4.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page