Commands
Complete reference for all Enrich Layer CLI commands.
The CLI exposes every major Enrich Layer API surface as a command. This page lists each command with its flags, a short description, and a copy-pasteable example. Run el <command> --help at any time for the same information in your terminal.
Global options
These options work with every command.
| Option | Description |
|---|---|
-v, --version | Print the CLI version |
-h, --help | Show help for any command |
-q, --quiet | Suppress informational output (only data is printed) |
--no-color | Disable colored output |
-t, --token <key> | Override stored credentials for a single call |
--api-key <key> | Alias for --token |
Output-format flags (--json, --full, --format, --fields, --output, --copy) are documented in Output formats below.
Authentication
el login
Authenticate with your Enrich Layer account.
el login # Interactive (browser by default)
el login --browser # Force browser flow
el login --device # Device code flow for SSH / CI
el login --token <key> # Paste an API key directly
el login --json # Machine-readable output for scriptsCredentials are stored at ~/.config/enrichlayer/credentials.json.
el logout
Remove stored credentials.
el logout
el logout --jsonel whoami
Show the currently authenticated account.
el whoami
el whoami --jsonel auth <subcommand>
Alias group kept for backwards compatibility. el auth login, el auth status, and el auth logout behave like their top-level counterparts.
Profile
el profile <url>
Enrich a person profile from a LinkedIn URL.
el profile https://linkedin.com/in/satyanadella
el profile https://linkedin.com/in/satyanadella --full
el profile https://linkedin.com/in/satyanadella --json
el profile https://linkedin.com/in/satyanadella --copy
el profile https://linkedin.com/in/satyanadella --use-cache if-present
el profile --file urls.txt --jsonl > profiles.jsonl
cat urls.txt | el profile --stdin --jsonlAccepts a single URL, a --file <path> of URLs (one per line), or --stdin. See Batch processing for details. Add --use-cache if-present to save credits on repeat lookups — see Cost-saving below.
el profile lookup
Find a profile by name and company domain.
el profile lookup --name "Satya Nadella" --company microsoft.com
el profile lookup --first-name Satya --last-name Nadella --company microsoft.com
el profile lookup --name "Bill Gates" --company microsoft.com --enrich| Option | Description |
|---|---|
--name <name> | Full name (split into first/last automatically) |
--first-name <name> | First name |
--last-name <name> | Last name |
--company <domain> | Company domain (e.g. microsoft.com) |
--enrich | Return the full profile (costs more credits) |
el profile role
Find a person by role at a named company.
el profile role --company Microsoft --role CEO
el profile role --company Google --role CTO --enrichel profile picture <url>
Get the profile picture URL for a LinkedIn profile.
el profile picture https://linkedin.com/in/satyanadella
el profile picture https://linkedin.com/in/satyanadella --jsonCompany
el company <url>
Enrich a company profile from a LinkedIn URL.
el company https://linkedin.com/company/microsoft
el company https://linkedin.com/company/microsoft --full
el company https://linkedin.com/company/microsoft --json
el company https://linkedin.com/company/microsoft --use-cache if-recent
el company --file company-urls.txt --jsonl > companies.jsonlAdd --use-cache if-present or --use-cache if-recent to lower credit cost on repeated lookups. See Cost-saving below.
el company lookup
Find a company by name or domain.
el company lookup --name Microsoft
el company lookup --domain microsoft.com
el company lookup --name Microsoft --enrichel company employees <url>
List employees at a company.
el company employees https://linkedin.com/company/microsoft
el company employees https://linkedin.com/company/microsoft --limit 20
el company employees https://linkedin.com/company/microsoft --next-page <token>el company employee-count <url>
Get the total employee count.
el company employee-count https://linkedin.com/company/microsoftel company employee-search <url>
Search employees at a specific company with filters.
el company employee-search https://linkedin.com/company/microsoft --title Engineer
el company employee-search https://linkedin.com/company/google --first-name John --last-name Doe
el company employee-search https://linkedin.com/company/stripe --school Stanford --limit 50| Option | Description |
|---|---|
--first-name <name> | Filter by first name |
--last-name <name> | Filter by last name |
--title <title> | Filter by job title keyword |
--school <school> | Filter by school keyword |
--limit <n> | Maximum results (default 10) |
el company picture <url>
Get the company logo URL.
el company picture https://linkedin.com/company/microsoftSearch
Unlike the HTTP API, the CLI exposes each search filter as its own flag. There is no -q query parameter.
el search person
Search for people across LinkedIn by name, company, title, or location.
el search person --first-name John --last-name Doe
el search person --company Google --title Engineer
el search person --title "Product Manager" --country US --limit 20
el search person --past-company Apple --title "VP Marketing"| Option | Description |
|---|---|
--first-name <name> | First name |
--last-name <name> | Last name |
--company <name> | Current company name |
--past-company <name> | Past company name |
--title <title> | Current role title |
--past-title <title> | Past role title |
--country <code> | Country (2-letter code) |
--city <city> | City |
--region <region> | Region / state |
-l, --limit <n> | Max results (default 10) |
-p, --page <token> | Pagination token from a previous search |
el search company
Search for companies.
el search company --name Microsoft
el search company --industry Technology --country US
el search company --city "San Francisco" --limit 20| Option | Description |
|---|---|
--name <name> | Company name |
--industry <industry> | Industry |
--country <code> | Country (2-letter code) |
--city <city> | City |
--region <region> | Region / state |
-l, --limit <n> | Max results (default 10) |
-p, --page <token> | Pagination token |
Contact
el contact email
Find a personal email by name and company domain.
el contact email --name "Satya Nadella" --domain microsoft.com
el contact email --first-name Satya --last-name Nadella --domain microsoft.com--domain is required. Provide either --name (full) or --first-name + --last-name.
el contact work-email <url>
Get the work email associated with a LinkedIn profile.
el contact work-email https://linkedin.com/in/satyanadella
el contact work-email https://linkedin.com/in/satyanadella --jsonel contact reverse-email <email>
Find a LinkedIn profile from an email address.
el contact reverse-email [email protected]
el contact reverse-email [email protected] --enrichel contact reverse-phone <phone>
Find a LinkedIn profile from a phone number.
el contact reverse-phone +14155551234
el contact reverse-phone +14155551234 --enrichJobs and schools
el job <url>
Get details for a LinkedIn job posting.
el job https://linkedin.com/jobs/view/123456789
el job https://linkedin.com/jobs/view/123456789 --jsonel school <url>
Get details for a LinkedIn school profile.
el school https://linkedin.com/school/stanford-university
el school https://linkedin.com/school/stanford-university --jsonAccount management
el credits
Check your current credit balance.
el credits
el credits --tableel api-keys
Manage your API keys.
el api-keys list # Show all keys (current key is marked)
el api-keys list --format json # Machine-readable
el api-keys create --label production # Create with a single label
el api-keys create --labels "prod,team-alpha" # Joined into one label
el api-keys create # Create without a label
el api-keys revoke <token> # With confirmation prompt
el api-keys revoke <token> --force # Skip confirmationLabels are limited to 32 characters. Both --label and --labels are validated locally against this limit before the network call so errors are actionable. --labels accepts a comma-separated list and joins it with , into a single label; --label takes precedence when both are provided. You cannot revoke the key you are currently authenticated with.
Recipes and guidance
el how-to [topic]
Show a copy-pasteable recipe for a common workflow. Perfect for AI agents discovering the CLI at runtime — run el how-to --list to enumerate every recipe, or el how-to --list --json to get a machine-readable catalog.
el how-to --list # Show every available recipe
el how-to lead-gen # Print a specific recipe
el how-to --list --json # Machine-readable catalog (for agents)
el how-to cost-saving --json # A single recipe as JSONAvailable recipes:
| Topic | What it shows |
|---|---|
lead-gen | From a company domain to a list of executives with emails |
crm-enrichment | Bulk-enrich a file of LinkedIn URLs |
email-to-profile | Reverse-lookup a LinkedIn profile from an email |
talent-sourcing | Filter candidates by title / company / location |
cost-saving | Use --use-cache to lower credit spend |
batch-with-jq | Stream JSONL through a transform |
agent-output | Structured, quiet, field-projected output |
Cost-saving
Pass --use-cache <mode> to el profile <url> or el company <url> to reduce credit cost on repeated lookups.
| Mode | Behavior |
|---|---|
if-present | Return any cached copy (cheapest, fastest) |
if-recent | Return a cached copy only when it is fresh enough per the API policy |
el profile https://linkedin.com/in/satyanadella --use-cache if-present
el company https://linkedin.com/company/microsoft --use-cache if-recent
el profile --file urls.txt --jsonl --use-cache if-present > cached.jsonlThe flag is forwarded to the API as use_cache. If a server does not support the parameter it is simply ignored, so enabling the flag is always safe. Live-data queries still default to the uncached path, preserving existing behavior.
Configuration
el config
Manage CLI-local settings stored in the config directory.
el config list # Show all settings
el config get <key> # Read a setting
el config set <key> <value> # Write a setting
el config unset <key> # Remove a setting
el config path # Print the config directory pathel completion <shell>
Generate a shell completion script.
eval "$(el completion bash)" # Bash
eval "$(el completion zsh)" # Zsh
el completion fish > ~/.config/fish/completions/el.fishOutput formats
Every data command supports the following output modes.
| Flag | Output |
|---|---|
| (default, interactive TTY) | Formatted summary card |
| (default, non-TTY / piped) | Full JSON (auto-detected) |
--json | Full JSON response |
--full | Human-readable extended view with all fields |
--copy | Copy the JSON result to the clipboard |
-f, --format <fmt> | json, table, csv, yaml |
--fields <list> | Comma-separated list of fields to include |
-o, --output <file> | Write the result to a file |
--jsonl | JSON Lines output (for batch mode, one object per line) |
Examples:
el profile https://linkedin.com/in/satyanadella --fields full_name,headline,city
el profile https://linkedin.com/in/satyanadella --format yaml
el search person --company Google --title Engineer --format csv -o engineers.csvWhen the CLI detects that output is being piped to another command or file, it automatically switches to JSON so downstream tools like jq work out of the box.
Batch processing
All lookup commands (profile, company) accept batch input:
el profile --file urls.txt --jsonl > profiles.jsonl
cat urls.txt | el profile --stdin --jsonl
el company --file companies.txt --jsonl --output companies.jsonl| Flag | Description |
|---|---|
--file <path> | Read one URL per line from a file (lines starting with # are ignored) |
--stdin | Read URLs from standard input |
--jsonl | Output one JSON object per line (streaming-friendly) |
Errors in batch mode are emitted as JSON Lines with "error": true, so a failed row never breaks the stream.