Documentation Index
Fetch the complete documentation index at: https://docs.landbase.com/llms.txt
Use this file to discover all available pages before exploring further.
What can you do with the CLI?
Landbase CLI lets you work with Landbase from your terminal, Claude Code, Codex, or your own scripts. You can ask for audiences in plain English, enrich records, enrich contacts with email and phone data, upload spreadsheets, run dataset workflows, and download structured files for analysis.Most commands return JSON, which makes the CLI easy for agents and scripts to read. When something goes wrong, the CLI returns a stable error code so your workflow can recover or ask for the right fix.Find audiences with natural language
Use the CLI when you want Landbase to build a company or people audience from a plain-English request.landbase-cli "find 3PL logistics companies in the US" --download=results.jsonl
You can also use the explicit search command:landbase-cli search "find AI engineers in London" --download=engineers.jsonl
This is the fastest path when you want an agent to:
- Find companies or contacts that match a market, role, location, industry, or signal.
- Save the results to a local file.
- Pass the dataset into another script, notebook, dashboard, or app.
Keep refining the same search
Add --session=<label> when you want follow-up prompts to continue the same conversation.landbase-cli "find SaaS companies in London" --session=uk-saas --download=companies.jsonl
landbase-cli "narrow to 50-200 employees" --session=uk-saas --download=companies-filtered.jsonl
This is useful when you want to start broad, inspect what came back, and then tighten the audience without starting over.The --download flag writes search results to disk. If you do not pass a path, it defaults to ./results.jsonl.The file extension controls the output:| Extension | What happens |
|---|
.jsonl | Publishes to JSONL.gz, then unzips it into a ready-to-read JSONL file. |
.jsonl.gz | Publishes to compressed JSONL and keeps it compressed. |
.csv | Publishes to CSV and downloads the published file. |
.parquet | Downloads the native dataset bytes directly, without a publish step. |
Published files can take a few minutes because Landbase runs a publish workflow before the download is ready.Match a person or company
Use match when you have one record and want Landbase to find the best corresponding person or company.landbase-cli match person --first-name=Daniel --last-name=Saks --company-website=landbase.com
landbase-cli match company --website=superthread.com
landbase-cli match company --name=Anthropic
This is helpful for record cleanup, CRM matching, deduplication, and workflows where you need to turn partial information into a Landbase match.Enrich a record
Use enrich when you already have a person or company identifier and want more fields back.landbase-cli enrich --linkedin-url=https://www.linkedin.com/in/danielsaks
landbase-cli enrich --company-website=landbase.com --company-fields=industry,size_range
landbase-cli enrich --linkedin-url=... --company-fields=hq_city,hq_state,hq_country
You can request company fields, person fields, or both. If you pass a person identifier, the CLI can automatically resolve the related company and return company enrichment too.Use contact-enrich when you have a batch of leads and want asynchronous contact enrichment for emails, phone numbers, or both.landbase-cli contact-enrich submit ./leads.jsonl --enrich-phone --wait
landbase-cli contact-enrich submit - --wait
landbase-cli contact-enrich get <request-id>
This is different from enrich: enrich is a synchronous single-record lookup for person and company attributes, while contact-enrich starts a batch job and gives you a request_id.Each lead should include either a LinkedIn URL or a name plus a company anchor:{
"first_name": "Hugh",
"last_name": "Hopkins",
"linkedin_url": "https://www.linkedin.com/in/hughhopkins",
"company_domain": "landbase.com"
}
You can pass leads as:| Input | Use it when |
|---|
.json | You have a single JSON object or an array of lead objects. |
.jsonl or .ndjson | You have one lead object per line. |
- | You want to pipe leads from another command through stdin. |
Email enrichment is on by default. Add --enrich-phone when you also want phone numbers, or use --no-enrich-email --enrich-phone for phone-only enrichment.Add --wait when you want the CLI to poll until the batch reaches a terminal status. The default polling ceiling is about 10 minutes, and you can override it with --timeout=<seconds>. If the wait times out or is interrupted, the error includes the request_id, so you can resume with:landbase-cli contact-enrich get <request-id>
For larger jobs, keep each batch at or below 100 leads and avoid submitting more than about 10 batches per minute per account.Upload your own spreadsheet
Use upload to bring a CSV or Excel file into Landbase as a dataset.landbase-cli upload ./crm_export.csv --name="Q1 CRM"
The command returns a dataset ID. You can use that ID to run workflows such as onboard, match, enrich, publish, and download.Manage datasets
Use dataset commands when you need to list, inspect, download, trace, or delete datasets in your workspace.landbase-cli datasets list
landbase-cli datasets show <dataset-id> --include-runs
landbase-cli datasets lineage <dataset-id> --direction=children
landbase-cli datasets download <dataset-id> ./output.parquet
landbase-cli datasets delete <dataset-id> --yes
lineage is especially useful after workflows because it helps you find the child dataset created by a publish, enrich, match, onboard, or sketch run.Run batch workflows
Use workflow commands when you want Landbase to process an existing dataset.landbase-cli workflow onboard <dataset-id> --wait
landbase-cli workflow match <dataset-id> --wait
landbase-cli workflow enrich <dataset-id> --company-fields=industry,size_range --wait
landbase-cli workflow publish <dataset-id> --format=csv --wait
landbase-cli workflow sketch <dataset-id> --taxonomy-hints=fintech,healthcare --wait
landbase-cli workflow status <dataset-id>
Add --wait when you want the command to block until the workflow completes. Without --wait, the CLI returns a workflow run ID that you can poll with workflow status.Chain commands into a full pipeline
A typical workflow is upload, onboard, publish, find the published child dataset, and download it.ID=$(landbase-cli upload ./file.csv --name=demo | jq -r .id)
landbase-cli workflow onboard $ID --wait
landbase-cli workflow publish $ID --format=jsonl.gz --wait
CHILD=$(landbase-cli datasets lineage $ID --direction=children --workflow=publish | jq -r '.[0].id')
landbase-cli datasets download $CHILD ./out.jsonl.gz
For search results, you can do the common conversion in one command:landbase-cli "find AI engineers in London" --download=engineers.jsonl
If you do not have a LinkedIn URL, match the person first, then pass the matched contact into contact-enrich:DOMAIN=landbase.com
landbase-cli match person --first-name=Hugh --last-name=Hopkins \
--company-website="$DOMAIN" \
| jq --arg domain "$DOMAIN" '.result.candidate | {
first_name: .member_name_first,
last_name: .member_name_last,
linkedin_url: .member_websites_linkedin,
company_domain: $domain
}' \
| landbase-cli contact-enrich submit - --wait --enrich-phone
Inspect previous agent runs
Use runs when you need to review prior agent runs for a session.landbase-cli runs list --session=<label-or-session-id>
landbase-cli runs get <run-id> --session=<label-or-session-id>
Pass the same session label you used with --session, or use the raw session_id returned by a search response.Authenticate and stay current
Use auth to sign in, check which key is active, paste an API key, or clear the locally stored key.landbase-cli auth login
landbase-cli auth login --key
landbase-cli auth status
landbase-cli auth logout
Use update to self-update to the latest release:Read outputs safely
Search commands return a structured response with fields such as run_id, session_id, status, content, dataset_id, and created_at.Other commands return the relevant endpoint JSON directly. When you only need a single value, pipe the output through jq:landbase-cli "find fintech startups in NYC" | jq -r .dataset_id
Common options
| Option | Use it when |
|---|
--download[=<path>] | You want search results saved locally. |
--session=<label> | You want follow-up searches to continue the same conversation. |
--format=json or --format=table | You want JSON output or a prose-only table view for search. |
--timeout=<seconds> | You need to raise or lower the request timeout. |
--verbose | You want request and response details printed to stderr. |
--wait | You want workflow commands or contact-enrich submit to wait until processing finishes. |
--yes | You are confirming a destructive dataset delete. |
--no-update-check | You want to skip the daily update check for this command. |
Failure codes
| Exit code | Meaning |
|---|
0 | Success. |
1 | The command needs a caller fix, such as different flags or a required confirmation. |
2 | The API returned an error, a resource was missing, a publish was required, or a download failed. |
3 | Authentication failed or no active key was available. |
4 | A network or timeout issue occurred. |
Errors are printed to stderr as JSON so agents and scripts can branch on error.code.