@brightdata/enrich
v0.1.1
Published
Enrich CSVs with company and person data using Bright Data + LLM agents
Readme
@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/enrichFirst-run setup
You'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.
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). Runenrichwith 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
