mrkeyoor.com_
Thu 24 Sept 19:58 UTC
Dataevaluationupdated 26 Aug 2026

cli review

Bright Data CLI puts the company's scraping, search, hosted browser, and structured dataset APIs behind one terminal command. It solves the glue-work problem for developers who already want Bright Data services and need output that can feed shell scripts or coding agents.

-22stars / 7d
Verdict

Our Bright Data CLI run installed 88 packages in 14 seconds, then passed its build and tests, so trying the client is cheap even though using it ties the workflow to Bright Data's remote services. Choose it when your account already pays for those services and one scriptable interface is worth more than provider independence. Skip it for self-hosted collection or jobs that need dataset controls the pipeline wrappers do not expose.

We ran it

Lab card: what happened when we ran cliScreenshot of cli (github.com/brightdata/cli)
Install✓ · 14s88 packages · 65 MB
Build✓ · 13s
Tests✓ · 15sran, no count parsed
Repo91 files~19,695 lines of source · 1 MB · 1 CI workflows

Answers from our run

Does cli build from source?

Dependencies installed in 14 seconds (88 packages), and the build succeeded in 13 seconds. We cloned commit f02f2b4 into a clean Debian container with 3 CPUs and no project-specific setup.

Do cli's tests pass?

The test command failed in our container, and its output did not report a pass or fail count.

Who should not use cli?

Teams that need a self-hosted crawler: the README describes a client for Bright Data's remote APIs, and authenticated commands require a Bright Data account and API key.

What are the alternatives to cli?

Firecrawl, Apify CLI, Crawlee. Our Bright Data CLI run installed 88 packages in 14 seconds, then passed its build and tests, so trying the client is cheap even though using it ties the workflow to Bright Data's remote services.

Setup4/514-second install; useful commands still need an account and zones
Docs5/5Commands, output, billing boundaries, and failure paths are explicit
Community4/56,406 stars and recent issue and pull request activity
Maturity3/5Clean local checks, but the pre-1.0 interface is still changing

Who it’s for

Developers who already use Bright Data and want scrape, search, browser, and dataset jobs in shell scripts.
Data teams that need JSON, CSV, NDJSON, or file output from hosted collection jobs.
Coding-agent users who want an MCP installer and compact browser accessibility snapshots.
Operators who want account zones, balances, job status, and scraper repair in the same CLI.

Who it’s NOT for

Teams that need a self-hosted crawler: the README describes a client for Bright Data's remote APIs, and authenticated commands require a Bright Data account and API key.
Buyers who need the browser command covered by the recurring free credits: the README says Browser API usage has a separate one-time trial and is excluded from that monthly pool.
Data engineers who must reproduce every Control Panel dataset job from the terminal: issue 12 shows that the X and LinkedIn pipeline wrappers cannot express discovery modes, date ranges, record limits, or raw snapshot metadata.
Users who require environment-only setup for MCP: the README says brightdata add mcp ignores BRIGHTDATA_API_KEY and the global key flag, so a saved login is required first.

Setup reality

Our sandbox installed 88 pnpm packages in 14 seconds and used 65 MB on disk. The build succeeded in 13 seconds, and the test command succeeded in 15 seconds. The commit had 91 files and about 19,695 source lines.

Actual data work needs Node.js 20 or newer, a Bright Data account, and an API key. Login can create the required Unlocker and Browser zones. Search, scraping, datasets, scraper generation, and hosted browser sessions call paid services with separate credit rules.

The CLI stores credentials and configuration under the user's config directory. Browser commands keep a local daemon alive between calls, while scraper and dataset jobs may poll remote work for minutes. MCP setup requires a saved login even when an API key already exists in the environment.

One command reaches four Bright Data product families

Bright Data CLI wraps scraping, search, structured datasets, scraper generation, and a remote browser in the brightdata command, with bdata as an alias. It is most useful when a team already chose Bright Data and wants fewer one-off API scripts. Output can go to stdout or a file as JSON, CSV, NDJSON, HTML, markdown, or screenshots, depending on the command. Redirected output switches to machine-friendly formatting, which makes the client practical in shell pipelines and coding-agent tasks.

The checkout we measured was modest: 91 files, about 19,695 lines of source, and 1 MB before dependencies. That narrow footprint matches the product's role. It coordinates remote services instead of shipping a crawler engine or browser. The MIT license covers the client code, while the useful work happens against Bright Data APIs under the account's service terms and credit model.

The free allowance does not cover every command

The README states that new accounts receive 5,000 recurring monthly credits for Unlocker, SERP, Web Scraper, and Scraper Studio use. It also draws an important boundary: proxy products and Browser API sessions are outside that monthly pool. The browser gets a separate one-time trial, and adding a payment method changes the available bonus. Anyone estimating cost should map each command to its product rather than treating the CLI as one flat service.

Authentication is flexible for ordinary commands. You can use browser login, GitHub CLI login, a key argument, or BRIGHTDATA_API_KEY. The first login checks for cli_unlocker and cli_browser zones and creates missing ones. That convenience changes account state, so operators who manage zones centrally should review the initial setup before telling every developer to run it.

What happened when we ran it

Our sandbox installed 88 pnpm packages in 14 seconds and used 65 MB on disk. The build completed in 13 seconds, and the test command completed successfully in 15 seconds. We ran commit f02f2b4 in an unprivileged Debian container with 3 CPUs, 8 GB of RAM, Node.js 22, and no secrets.

Those results cover the client repository, not the paid APIs behind it. We did not authenticate, create zones, spend credits, open a hosted browser, or judge extraction accuracy. The repository had one CI workflow, no Dockerfile, and no top-level tests directory, although its declared test command passed in our environment. A buyer still needs a small live trial using representative sites, countries, and output formats.

Browser sessions trade local state for fewer reconnects

The browser command starts a lightweight local daemon and keeps a remote session available across open, snapshot, click, type, network, cookie, and screenshot calls. Named sessions can run separately, and the default idle timeout is 600,000 milliseconds. Accessibility-tree snapshots use element references for later actions, with compact and interactive modes intended to reduce the text an agent must read.

This is useful for iterative automation, but it creates state that a single HTTP request does not have. Scripts need to close sessions, choose idle limits, and handle the daemon's IPC timeout. Changing country on an existing session reconnects the browser. Browser API billing also sits outside the recurring 5,000-credit pool, so a loop that looks local at the terminal can consume a different remote allowance.

Scraper repair stops for approval by default

The AI scraper flow can create a collector from a URL and description, then run it against one or many URLs. When a scraper returns bad data, scraper heal proposes an in-place change and normally stops at an approval state. Its output includes preview rows and a dashboard link. Approval and rejection are separate commands, while --auto-approve removes that pause. The default is the safer choice for production collectors because a generated selector change can be inspected before it replaces working behavior.

Remote timing still matters. Create and heal operations can hit an account concurrency cap of 3 jobs, after which the CLI uses retry delays. Single scraper jobs default to a 600-second polling timeout, and batches default to 3,600 seconds. A command can therefore remain active far longer than our 13-second local build. CI jobs need explicit time budgets, saved result envelopes, and a recovery plan for half-built collectors.

Pipeline shortcuts omit some dataset controls

The pipelines command provides named inputs for more than 40 platforms, which is convenient for a LinkedIn profile, Amazon product, or YouTube comment job. Open issue 12 documents a harder case: its reporter could not express X and LinkedIn discovery modes, date windows, record limits, raw snapshot metadata, or exact submitted inputs through those shortcuts. They had to call the dataset API directly to reproduce Control Panel work.

That gap matters for versioned ETL. A friendly command is enough for a one-URL probe, while a repeatable collection may need the precise request, snapshot identifier, error records, and stop conditions. An open pull request proposes a generic dataset trigger, but an unmerged change is not a current feature. Use the pipeline layer only after confirming that it exposes every parameter your job must preserve.

MCP installation has a separate credential rule

The CLI can install Bright Data's MCP server into Claude Code, Cursor, or Codex and can install related agent skills. The repository had 6,406 stars, 7 combined issues and pull requests, and a last push dated August 17, 2026. Release v0.3.5 arrived that day and changed failed browser-login flows to return exit code 1, a small behavior that matters in unattended setup.

One setup inconsistency remains documented: brightdata add mcp uses the key saved by brightdata login and does not read BRIGHTDATA_API_KEY or the global key option. Environment-only deployments must perform a saved login or write the MCP configuration themselves. Bright Data CLI is a good control surface for an existing Bright Data account. It is a poor substitute for owning the collection runtime or for auditing every dataset request at the API level.

Alternatives

ProjectWhat it isPick it when
Firecrawl gh↗A web extraction API and self-hostable service aimed at LLM-ready page content.pick this instead when crawl and extraction are the main jobs and a self-hosted route matters.
Apify CLIA command-line client for developing and running Apify Actors.pick this instead when your workflows are already built as Apify Actors or need that marketplace.
Crawlee gh↗A code-first crawling library for building browser and HTTP scrapers in your own application.pick this instead when you want to own the crawler code and runtime rather than call a hosted data API.

What people are saying

  1. [velocity-scout] angular/angular-cli
  2. [github-trending] stripe/link-cli
  3. [github-trending] aws/agentcore-cli
  4. [github-trending] bbernhard/signal-cli-rest-api
  5. [github-trending] google-gemini/gemini-cli
  6. [github-trending] larksuite/cli

Sources

  1. Bright Data CLI README
  2. Bright Data CLI repository
  3. Bright Data CLI v0.3.5 release
  4. Issue 12: missing dataset pipeline controls

More data reviews

go-stock · sqlitebrowser · hydradb · DouYin_Spider · helix-db · abu · the whole board →