Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 

README.md

@brightdata/enrich

Headless CLI for the Open Enrich engine. Enrich any CSV with company and person data using Bright Data's web infrastructure + LLM agents.

Install

npx @brightdata/enrich --version
# or
npm install -g @brightdata/enrich

First-run setup

You'll need a Bright Data account (with two zones: SERP API + Web Unlocker) and an OpenRouter API key.

enrich login

Or 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.

Usage

# 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 .

Commands

Command Description
enrich <input.csv> Enrich the given CSV (the default command).
enrich login Interactively configure and store credentials.
enrich logout Remove stored credentials.

Options

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). Run enrich with no arguments to print full help.

Identifier & name columns

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.

How resume works

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.

Cost

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.

License

MIT