---
updatedAt: 2026-09-29T14:39:45.000Z
agentTools:
  projectIndex: https://docs.apollo.io/llms.txt
---

# 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

<p>Choose the installation method that works best for your environment.</p>

<div class="table-wrapper">
  <table style="width: 100%; border: 1px solid #ccc;">
    <tr>
      <th style="border: 1px solid #ccc; vertical-align: middle; padding: 15px; font-size: 15px; text-transform: none; text-align: center; width: 33.33%;">Homebrew</th>
      <th style="border: 1px solid #ccc; vertical-align: middle; padding: 15px; font-size: 15px; text-transform: none; text-align: center; width: 33.33%;">Prebuilt Binary</th>
      <th style="border: 1px solid #ccc; vertical-align: middle; padding: 15px; font-size: 15px; text-transform: none; text-align: center; width: 33.33%;">From Source</th>
    </tr>
    <tr>
      <td style="border: 1px solid #ccc; vertical-align: top; padding: 15px;">
        Recommended for macOS or Linux. Homebrew handles installation and upgrades.<br><br>
        [View Homebrew instructions](#homebrew).
      </td>
      <td style="border: 1px solid #ccc; vertical-align: top; padding: 15px;">
        Download a standalone binary for macOS, Linux, or Windows. Node.js isn't required.<br><br>
        [View binary instructions](#prebuilt-binary).
      </td>
      <td style="border: 1px solid #ccc; vertical-align: top; padding: 15px;">
        Build Apollo CLI locally with Node.js 18 or above.<br><br>
        [View source instructions](#from-source).
      </td>
    </tr>
  </table>
</div>

Before you install Apollo CLI, make sure you have:

* macOS, Linux, or Windows.
* An active Apollo account.

Learn how to [install and authenticate](#install-and-authenticate), browse the [available commands](#available-commands), and review [usage guidance](#output-and-best-practices).

## Install and authenticate

You can install Apollo CLI in three ways: via Homebrew, a prebuilt binary, or from source.

* [Homebrew](#homebrew)
* [Prebuilt binary](#prebuilt-binary)
* [From source](#from-source)
* [Authenticate](#authenticate)

Apollo CLI uses OAuth 2.0 - no API key is needed. When you authenticate, sign in to your Apollo account.

<p id="homebrew"><b>Homebrew</b></p>

To install via Homebrew:

```bash
brew install apolloio/apollo-io-cli/apollo-io-cli
```

Or tap once, then install by short name:

```bash
brew tap apolloio/apollo-io-cli
brew trust apolloio/apollo-io-cli
brew install apollo-io-cli
```

Upgrade anytime with `brew upgrade apollo-io-cli`.

<p id="prebuilt-binary"><b>Prebuilt binary</b></p>

No Node.js required. Download the binary for your platform from the [GitHub releases page](https://github.com/apolloio/apollo-io-cli/releases):

| 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:

1. Make the file executable and move it to your PATH.

```bash
chmod +x apollo-macos-arm64
mv apollo-macos-arm64 /usr/local/bin/apollo
xattr -d com.apple.quarantine /usr/local/bin/apollo
```

To set up the binary on Windows, rename it to `apollo.exe` and place it in a directory on your `PATH` (for example, `%USERPROFILE%\bin`):

```powershell
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:

```bash
gpg --import release-signing-key.asc
gpg --verify apollo-macos-arm64.asc apollo-macos-arm64
```

<p id="from-source"><b>From source</b></p>

Requires Node 18 or above.

```bash
git clone https://github.com/apolloio/apollo-io-cli.git
cd apollo-io-cli
npm install
npm link
```

<p id="authenticate"><b>Authenticate</b></p>

Apollo CLI uses OAuth 2.0 — no API key needed. Log in once and your token refreshes automatically.

To authenticate:

1. Run the login command. Your browser opens to authorize the connection and saves your credentials to `~/.config/apollo/credentials`.

```bash
apollo auth login
```

2. Confirm you're logged in.

```bash
apollo auth whoami
```

You 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**
> Run `apollo auth whoami` before 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](https://github.com/apolloio/apollo-io-cli/blob/main/.claude/skills/apollo-cli/SKILL.md) 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](#set-up-with-claude-code)
* [Set up with Cursor or other agents](#set-up-with-cursor-or-other-agents)

<p id="set-up-with-claude-code"><b>Set up with Claude Code</b></p>

**Global install** (available in every project on your machine):

```bash
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.md
```

**Per-project install** (scoped to one repo):

```bash
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.md
```

**Windows (PowerShell)** — global install:

```powershell
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`.

<p id="set-up-with-cursor-or-other-agents"><b>Set up with Cursor or other agents</b></p>

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**
  * [People](#people)
  * [Companies](#companies)
  * [News](#news)

* **Manage records**
  * [Contacts](#contacts)
  * [Accounts](#accounts)
  * [Deals](#deals)
  * [Labels](#labels)
  * [Fields](#fields)
  * [Notes](#notes)

* **Engage prospects**
  * [Email accounts](#email-accounts)
  * [Sequences](#sequences)
  * [Emails](#emails)
  * [Calls](#calls)
  * [Tasks](#tasks)

* **Analyze activity and performance**
  * [Conversations](#conversations)
  * [Analytics](#analytics)

* **Manage access and operations**
  * [Users](#users)
  * [Usage and credits](#usage-and-credits)
  * [Auth](#auth)
  * [Webhooks](#webhooks)

<p id="people"><b>People</b></p>

Search for people, enrich profiles, retrieve contact details, and find employees at specific companies.

```bash
apollo people search \
  --title "VP Engineering" \
  --city "San Francisco" \
  --seniority vp \
  --domain stripe.com \
  --per-page 25

apollo people enrich --email jordan@northstar.io
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 jordan@northstar.io maya@cedarpeaklabs.com
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`                                                                                                                                                                                                                                                                                                                                                                   |

If you have a free Apollo account, you must register with a work email address to use `people search`, `people enrich`, `people bulk-enrich`, `people email`, and `people get`. Additional account eligibility requirements may apply. Paid accounts aren't affected.

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:

```json
{
  "details": [
    {
      "name": "Jordan Lee",
      "domain": "northstar.io"
    },
    {
      "email": "maya@cedarpeaklabs.com"
    }
  ]
}
```

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.

<p id="companies"><b>Companies</b></p>

Search for companies, enrich company profiles, retrieve organization details, and find active job postings.

```bash
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`                                                                                                                                                                                                                                                              |

If you have a free Apollo account, you must register with a work email address to use `companies search`, `companies enrich`, `companies bulk-enrich`, and `companies get`. Additional account eligibility requirements may apply. Paid accounts aren't affected.

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:

```bash
apollo companies search \
  --employees "51,200" \
  --revenue "1000000,5000000" \
  --funding-date "2026-01-01,2026-06-30"
```

<p id="news"><b>News</b></p>

Find news articles associated with a company using its name or Apollo organization ID.

```bash
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` |

<p id="contacts"><b>Contacts</b></p>

Manage CRM contacts in your team's Apollo account.

```bash
apollo contacts search --query "revenue operations" --per-page 25
apollo contacts create --first-name Priya --last-name Shah --email priya@northstaranalytics.io
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:

```json
{
  "contacts": [
    {
      "first_name": "Priya",
      "last_name": "Shah",
      "email": "priya@northstaranalytics.io"
    },
    {
      "first_name": "Elias",
      "last_name": "Morgan",
      "email": "elias@cedarpeaklabs.com"
    }
  ]
}
```

For `bulk-update`, you can apply the same owner or account to multiple contacts:

```bash
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`:

```json
{
  "contact_attributes": [
    {
      "id": "<contact-id-1>",
      "owner_id": "<user-id-1>"
    },
    {
      "id": "<contact-id-2>",
      "owner_id": "<user-id-2>"
    }
  ]
}
```

<p id="accounts"><b>Accounts</b></p>

Manage CRM accounts that your team has added to Apollo.

```bash
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:

```json
{
  "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`:

```json
{
  "account_attributes": [
    {
      "id": "<account-id-1>",
      "owner_id": "<user-id-1>"
    },
    {
      "id": "<account-id-2>",
      "stage_id": "<stage-id>"
    }
  ]
}
```

<p id="deals"><b>Deals</b></p>

Create, search, view, and update opportunities in your Apollo CRM.

```bash
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`.

<p id="email-accounts"><b>Email accounts</b></p>

List the sending mailboxes connected to your team's Apollo account.

```bash
apollo email-accounts list
```

Use the returned mailbox ID as the value for `--from-email-account` when you run `apollo sequences add-contacts`.

<p id="sequences"><b>Sequences</b></p>

Create and update sequences, manage sending schedules, approve sequence changes, and enroll or remove contacts.

```bash
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-contacts` sends real emails to real people. Always confirm the sequence, sending mailbox, and contact list before running the command.

<p id="calls"><b>Calls</b></p>

Log phone calls, search existing call records, and update call details.

```bash
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.

<p id="tasks"><b>Tasks</b></p>

Create, search, view, update, complete, and skip Apollo tasks. Each task must be associated with a contact, account, or opportunity.

```bash
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`.

<p id="users"><b>Users</b></p>

View your Apollo profile and find other users in your team's Apollo account.

```bash
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`                   |

<p id="emails"><b>Emails</b></p>

Draft, send, check, and search one-off outreach emails outside sequences.

```bash
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:

```json
[
  {
    "email": "mateo@brightwaveadvisory.com",
    "contact_id": "<contact-id>",
    "recipient_type_cd": "to"
  },
  {
    "email": "sales-archive@brightwaveadvisory.com",
    "recipient_type_cd": "bcc"
  }
]
```

> **This One's for Real**
> `apollo emails send` delivers a real email. Review the subject, content, recipients, and sending account before running the command.

<p id="labels"><b>Labels</b></p>

Create and manage Apollo contact and account lists.

```bash
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.

<p id="fields"><b>Fields</b></p>

List Apollo fields and create custom fields.

```bash
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                                                                                                                                       |

<p id="notes"><b>Notes</b></p>

List notes associated with contacts, accounts, opportunities, calendar events, or conversations.

```bash
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.    |

<p id="conversations"><b>Conversations</b></p>

Search recorded calls and meetings, view conversation details, and export Conversation Intelligence data.

```bash
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 analyst@northstaranalytics.io

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.

<p id="webhooks"><b>Webhooks</b></p>

Retrieve the stored result of an asynchronous webhook-based request, such as an asynchronous bulk enrichment request.

```bash
apollo webhooks result --request-id <request-id>
```

| Option         | Description                                            |
| -------------- | ------------------------------------------------------ |
| `--request-id` | The request ID returned by the asynchronous operation. |

<p id="auth"><b>Auth</b></p>

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

<p id="usage-and-credits"><b>Usage and credits</b></p>

Review your team's credit consumption and API rate-limit usage.

```bash
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.

<p id="analytics"><b>Analytics</b></p>

Run an Apollo analytics report using a complete `sync_report` request body from a JSON file.

```bash
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`:

```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](#global-flags), [output formats](#output-formats), [pagination](#pagination), and [best practices](#best-practices) for reliable terminal, script, and AI-agent workflows.

<p id="global-flags"><b>Global flags</b></p>

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

```bash
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"
```

<p id="output-formats"><b>Output formats</b></p>

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

```bash
apollo companies search --industry SaaS --format table
apollo people bulk-enrich \
  --emails jordan@northstar.io maya@cedarpeaklabs.com \
  --format jsonl
apollo news search --company "Stripe" --format yaml
apollo people search \
  --title CTO \
  --domain stripe.com \
  --format csv > ctos.csv
```

Search 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`:

```bash
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}'
```

***

<p id="pagination"><b>Pagination</b></p>

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

```bash
apollo people search --title "VP of Engineering" --per-page 25 --page 2
```

***

<p id="best-practices"><b>Best Practices</b></p>

* **Authenticate first** — Run `apollo auth whoami` before anything else. Surface errors to the user — don't work around them.
* **Use JSON and `jq` together** — `--format json` is the most reliable format for field extraction in scripts and agents.
* **Don't guess IDs** — Always call `apollo email-accounts list` to get a verified inbox ID before enrolling contacts in a sequence.
* **Treat sequence enrollment as a write action** — `sequences add-contacts` sends real emails. Confirm the sequence, sender, and contact list first.
* **Page through large result sets** — The default is ten results per page. Use `--per-page` and `--page` for larger searches.

***

## Next Steps

Check out the following resources to keep building with Apollo:

| Resource                                                                                                | Description                                                                          |
| ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------ |
| [Apollo API](https://docs.apollo.io/reference/apollo-api)                                               | Get familiar with Apollo API, the same endpoints CLI uses under the hood.            |
| [Apollo MCP](https://docs.apollo.io/docs/apollo-mcp)                                                    | Use Apollo directly inside your favorite AI tool without leaving the conversation.   |
| [Search for People](https://knowledge.apollo.io/hc/en-us/articles/4412658716941)                        | Learn how people search works and what filters are available.                        |
| [Enrichment Overview](https://knowledge.apollo.io/hc/en-us/articles/33699917233293-Enrichment-Overview) | Understand how enrichment works, what data it returns, and how credits are consumed. |
| [Developer FAQs](https://docs.apollo.io/docs/apollo-api-faqs)                                           | Find answers to the most common questions about Apollo API.                          |