Headless CLI for the Open Enrich engine. Enrich any CSV with company and person data using Bright Data's web infrastructure + LLM agents.
npx @brightdata/enrich --version
# or
npm install -g @brightdata/enrichYou'll need a Bright Data account (with two zones: SERP API + Web Unlocker) and an OpenRouter API key.
enrich loginOr set env vars instead:
BRIGHT_DATA_API_KEY=...
BRIGHT_DATA_SERP_ZONE=...
BRIGHT_DATA_UNLOCKER_ZONE=...
OPENROUTER_API_KEY=...
Env vars always take precedence over the stored config.
# Describe what you want in natural language
enrich leads.csv --describe "company size, recent funding, tech stack"
# Or pick specific preset fields
enrich leads.csv --fields employee_count,industry,funding_stage
# See what would happen without making API calls
enrich leads.csv --describe "..." --dry-run
# Specify the identifier column explicitly
enrich leads.csv --describe "..." --column email_address
# Write to a specific output path
enrich leads.csv --describe "..." --output enriched.csv
# Stream NDJSON events for programmatic use
enrich leads.csv --describe "..." --json | jq .| Command | Description |
|---|---|
enrich <input.csv> |
Enrich the given CSV (the default command). |
enrich login |
Interactively configure and store credentials. |
enrich logout |
Remove stored credentials. |
| Option | Description | Default |
|---|---|---|
-o, --output <path> |
Output CSV path. | <input>.enriched.csv |
--column <name> |
Identifier column. | auto-detected |
--first-name <name> |
Column containing the person's first name. | — |
--last-name <name> |
Column containing the person's last name. | — |
--describe <text> |
Natural-language description of the fields you want. | — |
--fields <names> |
Comma-separated preset field names (alternative to --describe). |
— |
--concurrency <n> |
Rows enriched in parallel. | 30 |
--no-resume |
Overwrite the output instead of auto-resuming. | resume on |
--dry-run |
Resolve config and exit without making API calls. | off |
--json |
Stream NDJSON events to stdout; do not write a CSV. | off |
-q, --quiet |
Suppress progress; print only the final summary. | off |
-v, --verbose |
Show every agent_progress event. |
off |
Provide either
--describe(natural language) or--fields(preset names). Runenrichwith no arguments to print full help.
The CLI auto-detects the column that identifies each row (e.g. a company domain, website, or email). Override it with --column when detection guesses wrong. For person-level enrichment, point --first-name/--last-name at the relevant columns so the agents can disambiguate people at the same company.
If you re-run with the same --describe/--fields and the output file already exists, the CLI checks the header and skips rows that already have output. Interrupted runs (Ctrl-C) auto-resume on the next run. Pass --no-resume to overwrite.
Bright Data charges per tool call (~$0.0015). OpenRouter charges per LLM token. Use --dry-run for a rough estimate before kicking off large runs.
MIT