The Community plan gives you 2 threads with 60 browser-minutes each per day, every browser on the fleet and a proxy included — for trying cdpfleet and for small projects. No trial expiry, no charges.
Community is a shared plan with the same fleet as the paid ones: Google Chrome with its channels, Edge, Brave, Opera, Firefox, Camoufox, WebKit and the stealth builds — 12 desktop browsers, driven with Playwright from Node.js, Python, Java, C# or Go, or over CDP.
A headless browser takes 1 thread and a headful one 2, so you can run two headless sessions or one headful session at a time. Minutes are counted per thread: a headful session uses both threads' minutes — up to 60 minutes of headful a day, the same as two headless sessions of 60 minutes. The allowance resets at midnight UTC.
Community — free
Free forever, for trying cdpfleet and small projects: every browser on the fleet, with proxies included. No trial expiry and no charges — you verify a card once, one account per card. Invite-only while we open up: join the waitlist.
Threads
2 (a headful browser takes both)
Browser-minutes
60 per thread per day
Session length
Up to 15 minutes
Proxies
Included, shared — slower at peak
Priority
Lowest; capacity shared by all Community users
Not included
Recordings, persistent profiles, keep-alive
The residential proxy can be added as on any plan. Request data from Community sessions may be used to learn which browser setups work on which sites, so don't sign in to accounts on it (Terms, section 4A).
A proxy is included
Every cdpfleet session goes through a proxy. On Community the plan brings its own: leave proxy out of the launch and the session uses the Community proxy, or send a cdpfleet-plan token to choose an exit country and keep the same IP for a while — the dashboard's Proxies page builds the token for you.
The Community proxy is shared by everyone on the plan, so pages load slower at peak times. Your own proxies work too, and the residential proxy can be added from a prepaid balance exactly as on a paid plan.
A Community session through the included proxy, exiting in the US
// npm install [email protected]
// Browsers run on cdpfleet, so no `npx playwright install` is needed.
import { chromium } from 'playwright';
const KEY = process.env.CDPFLEET_API_KEY;
// 1. Launch the browser
const res = await fetch('https://starter.cdpfleet.com/chromium/session', {
method: 'POST',
headers: { 'x-api-key': KEY, 'content-type': 'application/json' },
body: JSON.stringify({
proxy: 'cdpfleet-plan-country-us',
headless: 'new',
}),
});
if (!res.ok) throw new Error(`launch failed: ${res.status} ${await res.text()}`);
const { wsUrl } = await res.json();
// 2. Connect and drive it
const browser = await chromium.connect(wsUrl, { headers: { 'x-api-key': KEY } });
const page = await browser.newPage();
await page.goto('https://example.com');
console.log(await page.title());
await browser.close(); // ends the session and stops billing
# pip install playwright==1.60.0 requests
# Browsers run on cdpfleet, so no `playwright install` is needed.
import os
import requests
from playwright.sync_api import sync_playwright
KEY = os.environ["CDPFLEET_API_KEY"]
# 1. Launch the browser
res = requests.post(
"https://starter.cdpfleet.com/chromium/session",
headers={"x-api-key": KEY},
json={
"proxy": "cdpfleet-plan-country-us",
"headless": "new",
},
timeout=60,
)
res.raise_for_status()
ws_url = res.json()["wsUrl"]
# 2. Connect and drive it
with sync_playwright() as p:
browser = p.chromium.connect(ws_url, headers={"x-api-key": KEY})
page = browser.new_page()
page.goto("https://example.com")
print(page.title())
browser.close() # ends the session and stops billing
// Maven: com.microsoft.playwright:playwright:1.60.0 and com.google.code.gson:gson:2.11.0
// Run with PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1: browsers run on cdpfleet.
import com.google.gson.JsonParser;
import com.microsoft.playwright.*;
import java.net.URI;
import java.net.http.*;
import java.util.Map;
public class Example {
public static void main(String[] args) throws Exception {
String key = System.getenv("CDPFLEET_API_KEY");
// 1. Launch the browser
String body = """
{
"proxy": "cdpfleet-plan-country-us",
"headless": "new"
}
""";
HttpResponse<String> res = HttpClient.newHttpClient().send(
HttpRequest.newBuilder(URI.create("https://starter.cdpfleet.com/chromium/session"))
.header("x-api-key", key)
.header("content-type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(body))
.build(),
HttpResponse.BodyHandlers.ofString());
if (res.statusCode() != 200) {
throw new RuntimeException("launch failed: " + res.statusCode() + " " + res.body());
}
String wsUrl = JsonParser.parseString(res.body()).getAsJsonObject().get("wsUrl").getAsString();
// 2. Connect and drive it
try (Playwright playwright = Playwright.create()) {
Browser browser = playwright.chromium().connect(wsUrl,
new BrowserType.ConnectOptions().setHeaders(Map.of("x-api-key", key)));
Page page = browser.newPage();
page.navigate("https://example.com");
System.out.println(page.title());
browser.close(); // ends the session and stops billing
}
}
}
// dotnet add package Microsoft.Playwright --version 1.60.0
// Browsers run on cdpfleet, so no `playwright install` is needed.
using System.Net.Http.Json;
using System.Text;
using System.Text.Json;
using Microsoft.Playwright;
var key = Environment.GetEnvironmentVariable("CDPFLEET_API_KEY")!;
// 1. Launch the browser
using var http = new HttpClient();
http.DefaultRequestHeaders.Add("x-api-key", key);
var body = """
{
"proxy": "cdpfleet-plan-country-us",
"headless": "new"
}
""";
var res = await http.PostAsync("https://starter.cdpfleet.com/chromium/session",
new StringContent(body, Encoding.UTF8, "application/json"));
if (!res.IsSuccessStatusCode)
throw new Exception($"launch failed: {(int)res.StatusCode} {await res.Content.ReadAsStringAsync()}");
var wsUrl = (await res.Content.ReadFromJsonAsync<JsonElement>()).GetProperty("wsUrl").GetString()!;
// 2. Connect and drive it
using var playwright = await Playwright.CreateAsync();
var browser = await playwright.Chromium.ConnectAsync(wsUrl, new BrowserTypeConnectOptions
{
Headers = new Dictionary<string, string> { ["x-api-key"] = key },
});
var page = await browser.NewPageAsync();
await page.GotoAsync("https://example.com");
Console.WriteLine(await page.TitleAsync());
await browser.CloseAsync(); // ends the session and stops billing
// go get github.com/playwright-community/[email protected]
//
// One-time driver setup (needs Node.js 18+): playwright-go can no longer download the
// 1.60.0 driver itself, so build it from npm and point PLAYWRIGHT_DRIVER_PATH at it:
// mkdir -p ~/.cache/pw-driver-1.60.0 && cd ~/.cache/pw-driver-1.60.0 &&
// curl -sL https://registry.npmjs.org/playwright-core/-/playwright-core-1.60.0.tgz | tar xz &&
// ln -sf "$(command -v node)" node
// export PLAYWRIGHT_DRIVER_PATH=~/.cache/pw-driver-1.60.0
// Browsers run on cdpfleet, so no browsers are downloaded (SkipInstallBrowsers).
package main
import (
"encoding/json"
"fmt"
"io"
"log"
"net/http"
"os"
"strings"
"github.com/playwright-community/playwright-go"
)
func main() {
key := os.Getenv("CDPFLEET_API_KEY")
// 1. Launch the browser
body := `{
"proxy": "cdpfleet-plan-country-us",
"headless": "new"
}`
req, _ := http.NewRequest("POST", "https://starter.cdpfleet.com/chromium/session", strings.NewReader(body))
req.Header.Set("x-api-key", key)
req.Header.Set("content-type", "application/json")
res, err := http.DefaultClient.Do(req)
if err != nil {
log.Fatal(err)
}
defer res.Body.Close()
if res.StatusCode != http.StatusOK {
msg, _ := io.ReadAll(res.Body)
log.Fatalf("launch failed: %s %s", res.Status, msg)
}
var session struct {
WsURL string `json:"wsUrl"`
}
if err := json.NewDecoder(res.Body).Decode(&session); err != nil {
log.Fatal(err)
}
// 2. Connect and drive it (Install fetches only the Playwright driver, once)
opts := &playwright.RunOptions{SkipInstallBrowsers: true}
if err := playwright.Install(opts); err != nil {
log.Fatal(err)
}
pw, err := playwright.Run(opts)
if err != nil {
log.Fatal(err)
}
defer pw.Stop()
browser, err := pw.Chromium.Connect(session.WsURL, playwright.BrowserTypeConnectOptions{
Headers: map[string]string{"x-api-key": key},
})
if err != nil {
log.Fatal(err)
}
page, err := browser.NewPage()
if err != nil {
log.Fatal(err)
}
if _, err := page.Goto("https://example.com"); err != nil {
log.Fatal(err)
}
title, _ := page.Title()
fmt.Println(title)
browser.Close() // ends the session and stops billing
}
Limits, and what isn't included
Sessions last up to 15 minutes. Within a session the idle timeout is 120 seconds by default; set up to 5 minutes with inactivity_timeout.
Lowest priority. All Community users share one capacity cap; when it is full a launch gets 503 community_capacity_full and should retry after Retry-After. When paid plans need room, Community sessions give way first — their leases renew every 5 minutes instead of 15.
Up to 25% of the day's minutes in any rolling hour, like every shared plan.
Signups are invite-only while we open up: join the waitlist and we'll send an invitation.
Sign in to the dashboard and choose Verify a card and activate. Stripe checks the card — it is never charged — and one card holds one Community account.
Create an API key, pick a browser in the code generator, and run the program it writes — or press Launch interactive to try the browser live first.
Outgrow it any time: a paid plan is one click in the dashboard. A paid plan can also move back to Community at the end of its billing period.
Your data on Community
Request data from Community sessions may be used to learn which browser setups work on which sites. Don't sign in to accounts or handle personal data on it; the details are in the Terms, section 4A. Paid plans add privacy, priority, more threads, recordings and profiles.
Related
Cases, recipes, posts and comparisons about this — updated as new ones are published.
cdpfleet vs BrowserbaseTwelve real browsers over Playwright or CDP with your own proxies, or Chromium over CDP with built-in proxies, Stagehand and captcha solving. Prices, limits and…
cdpfleet vs BrowserlessThe longest-running headless-browser service against a browser fleet: 30-second "units" with 2–60-minute session caps and proxies by the megabyte, or threads metered…
cdpfleet vs SteelThe open-source browser API for agents against a browser fleet: per-minute Chromium with proxies, captcha solves and a 15-minute-to-24-hour session cap by plan, or…
cdpfleet vs Browser Use CloudThe cheapest per-hour cloud browser for AI agents against a fleet of real browsers: one stealth Chromium over CDP at $0.02/hour plus traffic fees, or twelve browsers…
cdpfleet vs HyperbrowserA credits-based cloud Chrome with stealth, captcha solving and AI agents against a fleet of twelve real browsers: $0.10/hour plus $10/GB for its proxies (your own…
cdpfleet vs Cloudflare Browser Run (Browser Rendering)Cloudflare's serverless headless Chromium — formerly Browser Rendering — against a fleet of twelve real browsers: $0.09/hour beyond 10 free hours plus concurrency…
cdpfleet vs Anchor BrowserAn agent-focused cloud Chromium with captcha solving, managed logins and US hosting against a fleet of twelve real browsers: per-browser and per-hour fees plus…
cdpfleet vs KernelA sandboxed cloud Chromium for agents, billed per second with free standby, against a fleet of twelve real browsers on flat threads: $0.06/hour headless but…