Apollo CLI
Apollo CLI gives you shell-native access to the full Apollo API. Search 240M+ contacts, enrich people and companies, manage CRM records, and run sequences without leaving your terminal. It's pipeable with jq, supports multiple output formats, and works natively with AI coding agents like Claude Code and Cursor.
Get started
Choose the installation method that works best for your environment.
| Homebrew | Prebuilt Binary | From Source |
|---|---|---|
| Recommended for macOS or Linux. Homebrew handles installation and upgrades. View Homebrew instructions. | Download a standalone binary for macOS, Linux, or Windows. Node.js isn't required. View binary instructions. | Build Apollo CLI locally with Node.js 18 or above. View source instructions. |
Before you install Apollo CLI, make sure you have:
- macOS, Linux, or Windows.
- An active Apollo.io account.
Learn how to install and authenticate, browse the available commands, and review usage guidance.
Install and authenticate
You can install Apollo CLI in three ways: via Homebrew, a prebuilt binary, or from source.
Homebrew
To install via Homebrew:
brew install apolloio/apollo-io-cli/apollo-io-cliOr tap once, then install by short name:
brew tap apolloio/apollo-io-cli
brew trust apolloio/apollo-io-cli
brew install apollo-io-cliUpgrade anytime with brew upgrade apollo-io-cli.
Prebuilt binary
No Node.js required. Download the binary for your platform from the GitHub releases page:
| Platform | File |
|---|---|
| macOS (Apple Silicon) | apollo-macos-arm64 |
| macOS (Intel) | apollo-macos-x64 |
| Linux (x64) | apollo-linux-x64 |
| Windows (x64) | apollo-windows-x64.exe |
To set up the binary on macOS or Linux:
- Make the file executable and move it to your PATH.
chmod +x apollo-macos-arm64
mv apollo-macos-arm64 /usr/local/bin/apollo
xattr -d com.apple.quarantine /usr/local/bin/apolloTo set up the binary on Windows, rename it to apollo.exe and place it in a directory on your PATH (for example, %USERPROFILE%\bin):
Move-Item .\apollo-windows-x64.exe "$env:USERPROFILE\bin\apollo.exe"You have now installed Apollo CLI.
Each release also includes a GPG signature file. To verify the binary:
gpg --import release-signing-key.asc
gpg --verify apollo-macos-arm64.asc apollo-macos-arm64From source
Requires Node 18 or above.
git clone https://github.com/apolloio/apollo-io-cli.git
cd apollo-io-cli
npm install
npm linkAuthenticate
Apollo CLI uses OAuth 2.0 — no API key needed. Log in once and your token refreshes automatically.
To authenticate:
- Run the login command. Your browser opens to authorize the connection and saves your credentials to
~/.config/apollo/credentials.
apollo auth login- Confirm you're logged in.
apollo auth whoamiYou have now authenticated Apollo CLI.
To log out and revoke your credentials at any time, run apollo auth logout.
Check Yourself Before You Wreck Yourself
Runapollo auth whoamibefore any other command. If authentication fails, resolve it first — don't work around it.
Use Apollo CLI with AI Agents
Apollo CLI works natively with AI coding agents. A Claude Code skill is available that gives the agent full knowledge of every command, its options, JSON response shapes, and jq examples.
The skill gives AI agents detailed knowledge of Apollo CLI commands, options, response shapes, and jq examples. Install it globally to make it available across projects or locally to scope it to a single repository.
Set up with Claude Code
Global install (available in every project on your machine):
mkdir -p ~/.claude/skills/apollo-cli
curl -fsSL https://raw.githubusercontent.com/apolloio/apollo-io-cli/main/.claude/skills/apollo-cli/SKILL.md \
-o ~/.claude/skills/apollo-cli/SKILL.mdPer-project install (scoped to one repo):
mkdir -p .claude/skills/apollo-cli
curl -fsSL https://raw.githubusercontent.com/apolloio/apollo-io-cli/main/.claude/skills/apollo-cli/SKILL.md \
-o .claude/skills/apollo-cli/SKILL.mdWindows (PowerShell) — global install:
New-Item -ItemType Directory -Force "$env:USERPROFILE\.claude\skills\apollo-cli" | Out-Null
Invoke-WebRequest `
-Uri https://raw.githubusercontent.com/apolloio/apollo-io-cli/main/.claude/skills/apollo-cli/SKILL.md `
-OutFile "$env:USERPROFILE\.claude\skills\apollo-cli\SKILL.md"For a per-project install on Windows, swap $env:USERPROFILE\.claude for .claude in the path above.
Claude Code automatically loads any skill file it finds — global or local. You can also invoke it manually with /apollo-cli.
Set up with Cursor or other agents
Point your project instructions at the raw skill URL directly — no file copying required:
https://raw.githubusercontent.com/apolloio/apollo-io-cli/main/.claude/skills/apollo-cli/SKILL.md
Add this URL to your AGENTS.md or project instructions and any agent in any repo can use it. It always reflects the latest version.
Available commands
Browse Apollo CLI commands by what you want to accomplish:
-
Research and prospect
-
Manage records
-
Engage prospects
-
Analyze activity and performance
-
Manage access and operations
People
Search for people, enrich profiles, retrieve contact details, and find employees at specific companies.
apollo people search \
--title "VP Engineering" \
--city "San Francisco" \
--seniority vp \
--domain stripe.com \
--per-page 25
apollo people enrich --email [email protected]
apollo people enrich --name "Jordan Lee" --company "Northstar"
apollo people enrich --linkedin https://linkedin.com/in/jordanlee
apollo people enrich \
--first-name Jordan \
--last-name Lee \
--company "Northstar"
apollo people search \
--title CTO \
--employees "51,200" \
--hiring-for "Software Engineer"
apollo people bulk-enrich --emails [email protected] [email protected]
apollo people email --id <person-id>
apollo people get --id <person-id>
apollo people employees --domain stripe.com --per-page 50| Command | What It Does | Common Options |
|---|---|---|
apollo people search | Search Apollo's people database using person and company filters. | --query, --title, --include-similar-titles, --city, --seniority, --department, --email-status, --technology, --using-all-technology, --not-using-technology, --domain, --industry, --keyword-tags, --organization-ids, --company-location, --employees, --hiring-for, --job-locations, --num-jobs, --job-posted, --revenue, --funding, --total-funding, --page, --per-page |
apollo people enrich | Enrich one person using an email address, hashed email, LinkedIn URL, name, or company details. | --email, --hashed-email, --linkedin, --first-name, --last-name, --name, --company, --domain, --reveal-personal-emails |
apollo people bulk-enrich | Enrich multiple people using email addresses or a JSON file of match records. | --emails, --file, --reveal-personal-emails |
apollo people email | Request an email address using an Apollo person ID. | --id |
apollo people get | Get complete person information using an Apollo person ID. | --id |
apollo people employees | Find employees at a company using its name, domain, or LinkedIn URL. | --name, --domain, --linkedin, --page, --per-page |
For people enrich, provide at least one supported identifier. When matching by name, include company information to improve accuracy.
For people bulk-enrich, provide either --emails or --file. The file can contain a JSON array or an object with a details array:
{
"details": [
{
"name": "Jordan Lee",
"domain": "northstar.io"
},
{
"email": "[email protected]"
}
]
}The --industry option for people search expects Apollo industry tag IDs, not free-text industry names. Free-text values may return an HTTP 422 error.
Company filters such as --employees, --hiring-for, --industry, --revenue, --funding, --total-funding, and --company-location apply to each person's employer. Combine these filters with person attributes in a single people search command instead of searching for companies first.
Companies
Search for companies, enrich company profiles, retrieve organization details, and find active job postings.
apollo companies search \
--industry SaaS \
--employees "51,200" \
--location "United States" \
--per-page 25
apollo companies search \
--technology react \
--not-location China \
--funding "1000000,10000000"
apollo companies search \
--name "Cedar Peak Labs" \
--domains cedarpeaklabs.com \
--per-page 10
apollo companies search \
--hiring-for "Account Executive" \
--job-locations "New York" \
--num-jobs "5,50"
apollo companies enrich --domain stripe.com
apollo companies enrich --name "Stripe"
apollo companies bulk-enrich --domains stripe.com notion.so
apollo companies get --id <organization-id>
apollo companies jobs --id <organization-id> --per-page 50| Command | What It Does | Common Options |
|---|---|---|
apollo companies search | Search Apollo's company database using firmographic, technology, funding, and hiring filters. | --query, --name, --domains, --organization-ids, --location, --not-location, --employees, --industry, --technology, --revenue, --funding, --funding-date, --total-funding, --hiring-for, --job-locations, --num-jobs, --job-posted, --page, --per-page |
apollo companies enrich | Enrich one company using its domain or name. | --domain, --name |
apollo companies bulk-enrich | Enrich multiple companies by domain. | --domains |
apollo companies get | Get complete company information using an Apollo organization ID. | --id |
apollo companies jobs | Get active job postings for a company. | --id, --page, --per-page |
For companies enrich, provide either --domain or --name. When only a company name is provided, Apollo CLI searches for the company, identifies its domain, then enriches the matching organization.
Use comma-separated minimum and maximum values for range options:
apollo companies search \
--employees "51,200" \
--revenue "1000000,5000000" \
--funding-date "2026-01-01,2026-06-30"News
Find news articles associated with a company using its name or Apollo organization ID.
apollo news search --company "Stripe"
apollo news search --id <organization-id>| Command | What It Does | Common Options |
|---|---|---|
apollo news search | Find news articles related to a company. | --company, --id |
Contacts
Manage CRM contacts in your team's Apollo account.
apollo contacts search --query "revenue operations" --per-page 25
apollo contacts create --first-name Priya --last-name Shah --email [email protected]
apollo contacts update --id <contact-id> --title "VP of Revenue Operations"
apollo contacts show --id <contact-id>
apollo contacts bulk-create --file ./contacts.json
apollo contacts bulk-update --ids <contact-id-1> <contact-id-2> --owner-id <user-id>
apollo contacts update-stages --ids <contact-id-1> <contact-id-2> --stage-id <stage-id>
apollo contacts update-owners --ids <contact-id-1> <contact-id-2> --owner-id <user-id>
apollo contacts stages| Command | What It Does | Common Options |
|---|---|---|
apollo contacts search | Search contacts saved in your team's Apollo account. | --query, --sort-by, --sort-asc, --page, --per-page |
apollo contacts create | Create a contact. | --first-name, --last-name, --email, --organization, --title, --account-id, --website-url, --address, phone fields, --label, --dedupe |
apollo contacts update | Update an existing contact. | --id and the same contact fields supported by create |
apollo contacts show | View a specific contact. | --id |
apollo contacts bulk-create | Create contacts from a JSON file. | --file |
apollo contacts bulk-update | Apply shared values to multiple contacts or update contacts from a JSON file. | --ids, --owner-id, --account-id, or --file |
apollo contacts update-stages | Move contacts to a contact stage. | --ids, --stage-id |
apollo contacts update-owners | Reassign contacts to another owner. | --ids, --owner-id |
apollo contacts stages | List available contact stages and their IDs. | None |
For bulk-create, provide a JSON array or an object containing a contacts array:
{
"contacts": [
{
"first_name": "Priya",
"last_name": "Shah",
"email": "[email protected]"
},
{
"first_name": "Elias",
"last_name": "Morgan",
"email": "[email protected]"
}
]
}For bulk-update, you can apply the same owner or account to multiple contacts:
apollo contacts bulk-update \
--ids <contact-id-1> <contact-id-2> \
--owner-id <user-id>You can also provide per-contact values in a JSON array or an object containing contact_attributes:
{
"contact_attributes": [
{
"id": "<contact-id-1>",
"owner_id": "<user-id-1>"
},
{
"id": "<contact-id-2>",
"owner_id": "<user-id-2>"
}
]
}Accounts
Manage CRM accounts that your team has added to Apollo.
apollo accounts create --name "Cedar Peak Labs" --domain cedarpeaklabs.com
apollo accounts update --id <account-id> --phone 555-303-1234
apollo accounts search --query "Cedar Peak" --per-page 25
apollo accounts show --id <account-id>
apollo accounts bulk-create --file ./accounts.json
apollo accounts bulk-update --ids <account-id-1> <account-id-2> --stage-id <stage-id>
apollo accounts update-owners --ids <account-id-1> <account-id-2> --owner-id <user-id>
apollo accounts stages| Command | What It Does | Common Options |
|---|---|---|
apollo accounts create | Create an account. | --name, --domain, --phone, --address |
apollo accounts update | Update an existing account. | --id, --name, --domain, --phone, --address |
apollo accounts search | Search accounts by name, stage, label, or other criteria. | --query, --stage-ids, --label-ids, --sort-by, --sort-asc, --page, --per-page |
apollo accounts show | View a specific account. | --id |
apollo accounts bulk-create | Create accounts from a JSON file. | --file |
apollo accounts bulk-update | Apply shared values to multiple accounts or update accounts from a JSON file. | --ids, --name, --owner-id, --stage-id, or --file |
apollo accounts update-owners | Reassign accounts to another owner. | --ids, --owner-id |
apollo accounts stages | List available account stages and their IDs. | None |
For bulk-create, provide a JSON array or an object containing an accounts array:
{
"accounts": [
{
"name": "Cedar Peak Labs",
"domain": "cedarpeaklabs.com"
},
{
"name": "Horizon Grid",
"domain": "horizongrid.io"
}
]
}For per-account bulk updates, provide a JSON array or an object containing account_attributes:
{
"account_attributes": [
{
"id": "<account-id-1>",
"owner_id": "<user-id-1>"
},
{
"id": "<account-id-2>",
"stage_id": "<stage-id>"
}
]
}Deals
Create, search, view, and update opportunities in your Apollo CRM.
apollo deals create \
--name "Horizon Grid - Annual Renewal" \
--amount 50000 \
--currency USD \
--account-id <account-id>
apollo deals search --account-id <account-id> --per-page 25
apollo deals show --id <deal-id>
apollo deals update --id <deal-id> --stage-id <stage-id> --amount 75000
apollo deals stages| Command | What It Does | Common Options |
|---|---|---|
apollo deals create | Create a deal. | Required: --name. Optional: --owner-id, --account-id, --amount, --currency, --stage-id, --pipeline-id, --close-date, --description |
apollo deals search | Search deals. | --query, --stage-id, --pipeline-id, --account-id, --owner-id, --sort-by, --sort-asc, --page, --per-page |
apollo deals show | View a specific deal. | --id |
apollo deals update | Update an existing deal. | --id, --name, --owner-id, --amount, --stage-id, --close-date |
apollo deals stages | List deal stages and their IDs. | None |
Use dates in YYYY-MM-DD format when setting --close-date.
Email accounts
List the sending mailboxes connected to your team's Apollo account.
apollo email-accounts listUse the returned mailbox ID as the value for --from-email-account when you run apollo sequences add-contacts.
Sequences
Create and update sequences, manage sending schedules, approve sequence changes, and enroll or remove contacts.
apollo sequences search --query "fintech outreach" --per-page 10
apollo sequences schedules
apollo sequences create \
--name "Q3 Fintech Outreach" \
--steps-file ./steps.json \
--schedule-id <schedule-id>
apollo sequences update \
--id <sequence-id> \
--steps-file ./steps.json \
--active
apollo sequences approve --id <sequence-id>
apollo sequences abort --id <sequence-id>
apollo sequences archive --id <sequence-id>
apollo sequences add-contacts \
--id <sequence-id> \
--from-email-account <email-account-id> \
--contact-id <contact-id>
apollo sequences remove-contacts \
--contact-id <contact-id> \
--sequence-id <sequence-id> \
--mode remove| Command | What It Does | Common Options |
|---|---|---|
apollo sequences search | Search sequences by name. | --query, --page, --per-page |
apollo sequences schedules | List sending schedules. | Use a returned schedule ID with sequences create or sequences update |
apollo sequences create | Create a sequence from a JSON steps file. | Required: --name, --steps-file. Optional: --schedule-id, --permissions, --exact-daytime, --active, --label |
apollo sequences update | Update an existing sequence. | Required: --id, --steps-file. Optional: --name, --schedule-id, --permissions, --exact-daytime, --active, --inactive, --label |
apollo sequences approve | Approve a sequence that is pending review. | --id |
apollo sequences abort | Deactivate an active sequence and stop future sends. | --id |
apollo sequences archive | Archive a sequence. | --id |
apollo sequences add-contacts | Enroll contacts in a sequence. | Required: --id, --from-email-account, and either --contact-id or --label. Additional options include --from-email, --no-email, --unverified-email, --job-change, --active-in-other, --finished-in-other, --same-company, --without-ownership, --add-if-in-queue, --skip-verification, --status, and --auto-unpause-at |
apollo sequences remove-contacts | Remove contacts from a sequence or stop future sequence steps. | --contact-id, --sequence-id, --mode remove|stop, --reason |
The --steps-file value must contain the complete set of emailer_steps that the sequence should contain after the create or update request.
This One's for Real
apollo sequences add-contactssends real emails to real people. Always confirm the sequence, sending mailbox, and contact list before running the command.
Calls
Log phone calls, search existing call records, and update call details.
apollo calls log \
--contact-id <contact-id> \
--from 4155550100 \
--to 4155550199 \
--duration 120 \
--note "Left a voicemail"
apollo calls search \
--contact-id <contact-id> \
--sort-by start_time \
--per-page 25
apollo calls update \
--id <call-id> \
--status completed \
--note "Connected and scheduled a follow-up"| Command | What It Does | Common Options |
|---|---|---|
apollo calls log | Create a phone-call record. | --contact-id, --account-id, --opportunity-id, --from, --to, --start, --end, --duration, --note, --outcome-id, --purpose-id, --status, --call-identifier |
apollo calls search | Search phone-call records and notes. | --query, --user-id, --contact-id, --account-id, --sort-by, --sort-asc, --page, --per-page |
apollo calls update | Update an existing phone-call record. | Required: --id. Optional: --note, --outcome-id, --purpose-id, --status, --contact-id |
Use ISO 8601 timestamps for --start and --end. The --duration value is measured in seconds.
Use --call-identifier as an external identifier when you need to match or upsert a call from another system.
Tasks
Create, search, view, update, complete, and skip Apollo tasks. Each task must be associated with a contact, account, or opportunity.
apollo tasks create \
--user-id <user-id> \
--type action_item \
--title "Review renewal brief" \
--priority medium \
--account-id <account-id>
apollo tasks bulk-create --file ./tasks.json
apollo tasks search --priority high --per-page 25
apollo tasks show --id <task-id>
apollo tasks update --id <task-id> --priority high --due-at 2026-08-01T09:00:00Z
apollo tasks complete --id <task-id> --note "Reviewed and sent feedback"
apollo tasks skip --id <task-id> --note "No longer required"| Command | What It Does | Common Options |
|---|---|---|
apollo tasks create | Create a task. | Required: --user-id, --type, and one of --contact-id, --account-id, or --opportunity-id. Optional: --creator-id, --title, --note, --priority, --status, --due-at |
apollo tasks bulk-create | Create tasks from a JSON file. | --file |
apollo tasks search | Search tasks. | --query, --user-id, --contact-id, --account-id, --opportunity-id, --priority, --sort-by, --page, --per-page |
apollo tasks show | View a specific task. | --id |
apollo tasks update | Update an existing task. | --id, --user-id, --creator-id, --contact-id, --type, --title, --note, --priority, --status, --due-at |
apollo tasks complete | Mark a task complete. | --id, optional --note |
apollo tasks skip | Skip a task. | --id, optional --note, --sync-index |
For bulk-create, provide a JSON array or an object containing tasks_attributes.
Users
View your Apollo profile and find other users in your team's Apollo account.
apollo users profile
apollo users profile --credits
apollo users search --query "engineer"| Command | What It Does | Common Options |
|---|---|---|
apollo users profile | View your authenticated Apollo user profile. | Optional --credits to include credit usage fields |
apollo users search | Find teammates by name, email address, or title. | --query, --page, --per-page |
Emails
Draft, send, check, and search one-off outreach emails outside sequences.
apollo emails draft \
--contact-id <contact-id> \
--subject "Planning for next quarter" \
--body-html "<p>Hi Mateo,</p><p>Would you be open to a short conversation next week?</p>"
apollo emails send --id <emailer-message-id>
apollo emails status --id <emailer-message-id>
apollo emails search --query "next quarter" --stats delivered opened --per-page 25| Command | What It Does | Common Options |
|---|---|---|
apollo emails draft | Create an email draft. | Requires --contact-id or --reply-to. Optional: --subject, --body-html, --body-file, --template-id, --task-id, --tracking, --attachment-ids, --recipients-file |
apollo emails send | Send a drafted email immediately. | --id |
apollo emails status | Check the delivery status of an email. | --id |
apollo emails search | Search email activity, content, and delivery status. | --query, --user-ids, --stats, --reply-classes, --email-account-id, --sequence-ids, --not-sequence-ids, --date-range-mode, --date-from, --date-to, --page, --per-page |
Use --recipients-file to provide a JSON array of custom recipients:
[
{
"email": "[email protected]",
"contact_id": "<contact-id>",
"recipient_type_cd": "to"
},
{
"email": "[email protected]",
"recipient_type_cd": "bcc"
}
]This One's for Real
apollo emails senddelivers a real email. Review the subject, content, recipients, and sending account before running the command.
Labels
Create and manage Apollo contact and account lists.
apollo labels list
apollo labels create --name "SaaStr 2026 Prospects" --modality contacts
apollo labels update --id <label-id> --name "SaaStr 2026 Follow-up"
apollo labels add --ids <contact-id-1> <contact-id-2> --names "SaaStr 2026 Follow-up" --modality contacts
apollo labels remove --ids <contact-id-1> --names "SaaStr 2026 Follow-up" --modality contacts| Command | What It Does | Common Options |
|---|---|---|
apollo labels list | List labels in your team's Apollo account. | None |
apollo labels create | Create a contact or account list. | --name, --modality contacts|accounts, optional --book-of-business |
apollo labels update | Rename a list. | --id, --name |
apollo labels add | Add contacts or accounts to one or more lists. | --ids, --names, --modality, optional --async |
apollo labels remove | Remove contacts or accounts from one or more lists. | --ids, --names, --modality, optional --async |
When you run labels add, Apollo creates any list name that doesn't already exist. Use --async for large batches.
Fields
List Apollo fields and create custom fields.
apollo fields list
apollo fields list --source custom
apollo fields create --label "Renewal Date" --modality contact --type date
apollo fields custom| Command | What It Does | Common Options |
|---|---|---|
apollo fields list | List available fields. | Optional --source |
apollo fields create | Create a custom field. | --label, --modality contact|account|opportunity, --type string|textarea|number|date|datetime|boolean, optional --max-length |
apollo fields custom | List custom typed fields and the field IDs used in typed_custom_fields payloads. | None |
Notes
List notes associated with contacts, accounts, opportunities, calendar events, or conversations.
apollo notes list --contact-id <contact-id>
apollo notes list --account-id <account-id> --limit 50 --sort-direction desc
apollo notes list --conversation-id <conversation-id>| Option | Description |
|---|---|
--contact-id | Return notes for a contact. |
--account-id | Return notes for an account. |
--opportunity-id | Return notes for an opportunity. |
--calendar-event-id | Return notes for a calendar event. |
--conversation-id | Return notes for a conversation. |
--conversation-ids | Return notes for multiple conversations. |
--contact-ids | Return notes for multiple contacts. |
--start-date | Return notes created on or after a date. |
--sort-by | Choose the field used to sort results. |
--sort-direction | Sort in ascending or descending order. |
--skip | Skip a number of results. |
--limit | Limit the number of returned results. |
Conversations
Search recorded calls and meetings, view conversation details, and export Conversation Intelligence data.
apollo conversations search \
--type phone_call \
--date-from 2026-01-01T00:00:00Z \
--limit 25
apollo conversations show --id <conversation-id>
apollo conversations export \
--start 2026-01-01T00:00:00Z \
--end 2026-03-31T23:59:59Z \
--email [email protected]
apollo conversations export-status --id <export-id>| Command | What It Does | Common Options |
|---|---|---|
apollo conversations search | Search recorded calls and meetings. | --type video_conference|phone_call, --account-id, --contact-ids, --tag-ids, --tracker-ids, --organization-ids, --date-from, --date-to, --sort-by, --limit, --page |
apollo conversations show | View conversation details. | --id |
apollo conversations export | Start a conversation export. | Required: --start, --end, --email |
apollo conversations export-status | Check the status of a conversation export. | --id |
Use ISO timestamps in GMT for conversation date filters and exports.
Webhooks
Retrieve the stored result of an asynchronous webhook-based request, such as an asynchronous bulk enrichment request.
apollo webhooks result --request-id <request-id>| Option | Description |
|---|---|
--request-id | The request ID returned by the asynchronous operation. |
Auth
| Command | What It Does |
|---|---|
apollo auth login | Authorize Apollo CLI through browser-based OAuth and save the credentials locally. |
apollo auth whoami | Confirm which Apollo user is currently authenticated. |
apollo auth logout | Revoke the current token and remove the saved credentials. |
Usage and credits
Review your team's credit consumption and API rate-limit usage.
apollo usage credits
apollo usage api| Command | What It Does |
|---|---|
apollo usage credits | View your team's limits, consumption, and remaining lead, direct-dial, export, conversation, AI, and power-up credits. |
apollo usage api | View per-endpoint API usage, rate limits, and remaining request capacity. |
The usage credits response includes each available credit type with its limit, consumed amount, and remaining balance.
Analytics
Run an Apollo analytics report using a complete sync_report request body from a JSON file.
apollo analytics report --payload ./report.json| Command | What It Does | Common Options |
|---|---|---|
apollo analytics report | Send a complete analytics request body to Apollo's synchronous reporting endpoint. | Required: --payload. Optional: --format |
Apollo CLI passes the JSON payload through without transforming it. The file must contain the complete metrics, grouping, filter, sorting, and date-range structure expected by the analytics endpoint.
Example report.json:
{
"metrics": [
{
"value": "num_emails_sent",
"smart_datetime_reference": "emailer_message__sent_at",
"smart_user_id_reference": "emailer_message__user_id"
}
],
"group_by": [],
"pivot_group_by": [],
"sorts": [],
"filters": {},
"date_ranges": [
{
"modality": "last_30_days"
}
],
"group_by_totals_selected": false,
"pivot_group_by_totals_selected": false
}Output and best practices
Review global flags, output formats, pagination, and best practices for reliable terminal, script, and AI-agent workflows.
Global flags
Global flags must appear before the command group and subcommand.
| Flag | Description |
|---|---|
--add-header <key:value> | Add a custom HTTP header to the request. Repeat the flag to add multiple headers. Header names are normalized to lowercase. |
apollo --add-header x-request-id:abc123 people search --query "Rina Patel"
apollo \
--add-header x-workspace-region:us-west \
--add-header x-request-source:automation \
contacts search --query "Morgan"Output formats
Every command accepts -f, --format. The default format is json.
| Format | Flag | Best For |
|---|---|---|
| JSON | --format json | Pretty-printed structured output for scripts, AI agents, and jq. |
| JSONL | --format jsonl | One JSON object per line for streaming and data pipelines. |
| CSV | --format csv | Flat exports for spreadsheets. Nested objects and arrays are stringified into a single cell. |
| YAML | --format yaml | Human-readable inspection of deeply nested responses. |
| Table | --format table | Quick terminal browsing of small responses. |
apollo companies search --industry SaaS --format table
apollo people bulk-enrich \
--emails [email protected] [email protected] \
--format jsonl
apollo news search --company "Stripe" --format yaml
apollo people search \
--title CTO \
--domain stripe.com \
--format csv > ctos.csvSearch and list responses typically contain pagination metadata alongside an array of records. CSV and table output may render that array as a stringified value. For analysis or record extraction, use JSON with jq:
apollo companies search --industry SaaS --format json \
| jq '.accounts[]' --compact-output > companies.jsonl
apollo people search --domain stripe.com --format json \
| jq '.people[] | {name: .name, title: .title}'Pagination
Use these flags to page through large result sets:
--per-page <n>— Results per page (default: 10).--page <n>— Page number (default: 1).--sort-by <field>— Sort field (varies by command).--sort-asc— Sort in ascending order (default is descending).
apollo people search --title "VP of Engineering" --per-page 25 --page 2Best Practices
- Authenticate first — Run
apollo auth whoamibefore anything else. Surface errors to the user — don't work around them. - Use JSON and
jqtogether —--format jsonis the most reliable format for field extraction in scripts and agents. - Don't guess IDs — Always call
apollo email-accounts listto get a verified inbox ID before enrolling contacts in a sequence. - Treat sequence enrollment as a write action —
sequences add-contactssends real emails. Confirm the sequence, sender, and contact list first. - Page through large result sets — The default is ten results per page. Use
--per-pageand--pagefor larger searches.
Next Steps
Check out the following resources to keep building with Apollo:
| Resource | Description |
|---|---|
| Apollo API | Get familiar with Apollo API, the same endpoints CLI uses under the hood. |
| Apollo MCP | Use Apollo directly inside your favorite AI tool without leaving the conversation. |
| Search for People | Learn how people search works and what filters are available. |
| Enrichment Overview | Understand how enrichment works, what data it returns, and how credits are consumed. |
| Developer FAQs | Find answers to the most common questions about Apollo API. |
Updated 6 days ago