Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
apolloio avatar

Apollo Cli

  • 5 installs
  • 50 repo stars
  • Updated July 30, 2026
  • apolloio/apollo-io-cli

apollo-cli is a Claude skill that drives Apollo.io from the terminal via the apollo CLI to search and enrich people and companies, manage CRM data, run sequences, log calls and tasks, and pull analytics.

About

This skill drives the Apollo.io sales platform from the terminal via the apollo CLI. A developer uses it to search and enrich people and companies, surface news and job postings, manage CRM contacts, accounts, and deals, run sequences, log calls and tasks, and pull analytics and credit usage. Output defaults to JSON for piping into jq.

  • Drives Apollo.io end to end from the terminal: search, enrich, CRM writes, sequences, calls, tasks, analytics
  • Filters people by their company's attributes in a single call, avoiding a two-step pipeline
  • Output defaults to JSON for jq piping, with jsonl, csv, yaml, and table formats

Apollo Cli by the numbers

  • 5 all-time installs (skills.sh)
  • Ranked #712 of 853 Sales & Marketing skills by installs in the Skillselion catalog
  • Data as of Jul 31, 2026 (Skillselion catalog sync)
At a glance

apollo-cli capabilities & compatibility

Requires an authenticated Apollo.io account; enrichment and revealing personal emails consume Apollo credits.

Capabilities
lead enrichment · prospecting · crm management · cli automation
Use cases
marketing · email · research · data analysis
Runs
Runs locally
Pricing
Bring your own API key
From the docs

What apollo-cli says it does

Use the `apollo` CLI to drive Apollo.io end to end: search/enrich people and companies, surface news and job postings, manage CRM contacts/accounts/deals, drive sequences, log phone calls and tasks, p
SKILL.md
Output defaults to JSON for `jq` piping; use `-f, --format` to switch to `jsonl`, `csv`, `yaml`, or `table`.
SKILL.md
npx skills add https://github.com/apolloio/apollo-io-cli --skill apollo-cli

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs5
repo stars50
Last updatedJuly 30, 2026
Repositoryapolloio/apollo-io-cli

What it does

Search, enrich, and manage Apollo.io people, companies, CRM, and sequences from the terminal.

Who is it for?

Searching, enriching, and managing Apollo.io sales data and CRM from the command line.

Skip if: Sales data lookup or CRM work outside Apollo.io.

When should I use this skill?

The user asks to find people, search companies, enrich a contact, add to a sequence, log a call, or check analytics in Apollo.io.

What you get

JSON (or csv/yaml/table) results for people, companies, CRM records, sequences, and analytics.

  • JSON/CSV people, company, CRM, sequence, and analytics results

By the numbers

  • version 3.0.0
  • 5 output formats (json, jsonl, csv, yaml, table)

Files

SKILL.mdMarkdownGitHub ↗

Apollo CLI Skill

Use the apollo CLI to drive Apollo.io end to end: search/enrich people and companies, surface news and job postings, manage CRM contacts/accounts/deals, drive sequences, log phone calls and tasks, pull analytics, and inspect credit usage. Output defaults to JSON for jq piping; use -f, --format to switch to jsonl, csv, yaml, or table.

Authentication

Before running any command, confirm the user is authenticated:

apollo auth whoami

If not logged in, run:

apollo auth login

Commands

People

Search people by title, company, location, seniority, department, or technology:

apollo people search --title "VP Engineering" --domain stripe.com
apollo people search --title "CTO" --seniority c_suite --city "San Francisco"
apollo people search --department engineering --technology react --per-page 25

Filter people by their company's attributes in a single call--employees, --hiring-for, --industry, --revenue, --funding, --total-funding, and --company-location all apply to the person's employer. Prefer this over a two-step "search companies → pipe domains into --domain" pipeline:

# CTOs at 51–200 person companies that are currently hiring software engineers
apollo people search --title CTO --employees "51,200" --hiring-for "Software Engineer"

More search filters: --include-similar-titles (fuzzy title match), --email-status verified, --keyword-tags (free-text company keywords), --organization-ids, --using-all-technology / --not-using-technology (vs the any-of --technology), and company hiring filters --job-locations, --num-jobs "min,max", --job-posted "min,max".

Note: people search --industry expects Apollo industry tag IDs (e.g. 5567cd4773696439b10b0000), not free-text names like "artificial intelligence". Passing free text returns HTTP 422. Use --keyword-tags or companies search --industry for free-text keyword tags.

Enrich a person (provide at least one identifier):

apollo people enrich --email jane@acme.com
apollo people enrich --linkedin https://linkedin.com/in/janedoe
apollo people enrich --first-name Jane --last-name Doe --company "Acme"
apollo people enrich --name "Jane Doe" --domain acme.com --reveal-personal-emails

Identifiers: --email, --hashed-email, --linkedin, --name/--first-name+--last-name, plus --company (name) and/or --domain. Add --reveal-personal-emails to surface personal emails (consumes credits).

Bulk enrich multiple people — by email, or by full identifier records via a JSON file:

apollo people bulk-enrich --emails jane@acme.com john@acme.com
# people.json: [{ "name": "Jane Doe", "domain": "acme.com" }, { "email": "x@y.com" }]
apollo people bulk-enrich --file people.json --reveal-personal-emails

Request an email address by Apollo person ID:

apollo people email --id <apollo_person_id>

Find employees at a company:

apollo people employees --domain stripe.com
apollo people employees --name "Stripe" --per-page 50
apollo people employees --linkedin https://linkedin.com/company/stripe

---

Companies

Search companies by industry, size, location, funding, or technology:

apollo companies search --industry SaaS --employees "11,50" --location "United States"
apollo companies search --technology react --not-location China --per-page 25
apollo companies search --funding "1000000,10000000"

Also: --name, --domains, --organization-ids, --funding-date "min,max" (ISO dates), and hiring filters --job-locations, --num-jobs "min,max", --job-posted "min,max".

Enrich a company by domain or name:

apollo companies enrich --domain stripe.com
apollo companies enrich --name "Stripe"

Bulk enrich multiple companies by domain:

apollo companies bulk-enrich --domains stripe.com acme.com notion.so

Get full company details by Apollo organization ID:

apollo companies get --id <organization_id>

Get active job postings for a company:

apollo companies jobs --id <organization_id>
apollo companies jobs --id <organization_id> --per-page 50

---

News

Find news articles for a company:

apollo news search --company "Stripe"
apollo news search --id <organization_id>

---

Contacts (CRM)

Search contacts your team has saved in Apollo:

apollo contacts search --query "director" --per-page 25

Create a contact:

apollo contacts create --first-name Jane --last-name Doe --email jane@acme.com --title "VP Sales" --dedupe

Update a contact (PATCH /api/v1/contacts/:id):

apollo contacts update --id <contact_id> --title "VP Engineering"

Bulk-create from a JSON file (array, or `{ "contacts": [...] }`):

apollo contacts bulk-create --file ./contacts.json

---

Accounts (CRM companies)

apollo accounts create --name "Acme Co" --domain acme.com
apollo accounts update --id <account_id> --phone 555-303-1234
apollo accounts bulk-create --file ./accounts.json

---

Deals (opportunities)

apollo deals create --name "Acme - Q2 Renewal" --amount 50000 --currency USD --account-id <id> --close-date 2026-06-30
apollo deals search --account-id <id> --per-page 25
apollo deals show --id <opportunity_id>

---

Sequences

add-contacts sends real emails. Always (1) call sequences search first to confirm the right sequence ID, (2) call email-accounts list to pick a sender ID, (3) summarize sender + sequence + contact count + status to the user, and (4) only call after explicit confirmation.

apollo sequences search --query "welcome"
apollo sequences add-contacts --id <seq_id> --from-email-account <email_account_id> --contact-id <contact_id>
apollo sequences add-contacts --id <seq_id> --from-email-account <id> --label "Q2 Targets" --status paused --auto-unpause-at 2026-05-15T09:00:00Z
apollo sequences remove-contacts --contact-id <id> --sequence-id <seq_id> --mode remove

Build and manage sequences:

apollo sequences schedules                       # list send schedules -> emailer_schedule_id
apollo sequences create --name "Q2 Outbound" --steps-file ./steps.json --schedule-id <id>
apollo sequences update --id <seq_id> --steps-file ./steps.json --active   # --steps-file is the FULL step set
apollo sequences approve --id <seq_id>           # approve a sequence pending review

create/update take the ordered emailer_steps as a JSON file (--steps-file); create requires --name, update requires --id. Activation: create --active, or update --active/--inactive. Get --schedule-id from sequences schedules. Activating + approving means contacts can start receiving real email — confirm with the user first.

---

Phone calls

apollo calls log --to 555-303-1234 --duration 120 --note "Voicemail left" --contact-id <id>
apollo calls search --contact-id <id> --per-page 25
apollo calls update --id <call_id> --note "Connected — interested" --outcome-id <id>

---

Tasks

Apollo requires each task be tied to a contact, account, or opportunity in addition to --user-id and --type.

apollo tasks create --user-id <user_id> --type action_item --title "Follow up" --priority medium --contact-id <id>
apollo tasks bulk-create --file ./tasks.json
apollo tasks search --priority high --per-page 25

Useful task --type values: action_item, call, linkedin_step_message.

---

Users

apollo users profile                # current user profile
apollo users profile --credits      # + credit usage
apollo users search --query alice   # find teammates (returns user IDs for owner_id / user_id fields elsewhere)

---

Email accounts

apollo email-accounts list

Returns connected sending inboxes. Always call this before `sequences add-contacts` to get a valid --from-email-account id; never invent one.

---

Usage / credits

apollo usage credits   # team-wide credit_usage_stats (lead / direct_dial / export / conversation / ai / power_up)

For a single user's balance, prefer apollo users profile --credits.

---

Analytics

analytics report is a payload pass-through to /api/v1/reports/sync_report. Apollo expects fully-built metric/group_by/sort objects (not bare strings); the CLI does not transform simplified input. Build the body in a JSON file and pass --payload.

apollo analytics report --payload ./report.json

Minimal payload (each metric needs value, smart_datetime_reference, and smart_user_id_reference):

{
  "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 formats

Every subcommand accepts -f, --format <format>:

FormatWhen to use
json (default)Pretty-printed JSON. Pipe to jq for field extraction.
jsonlOne JSON object per line. Stream into log/data pipelines.
csvFlat CSV with headers; nested objects/arrays are stringified. Open in spreadsheets or feed to mlr/csvkit.
yamlHuman-readable YAML. Good for inspecting deeply nested responses.
tableASCII bordered table. Good for terminal browsing of small responses.
apollo companies search --industry saas --format table
apollo people bulk-enrich --emails a@b.com c@d.com --format jsonl
apollo news search --company Stripe --format yaml

For nested responses (search/list endpoints with pagination + items), prefer json + jq or yaml. csv/table will stringify nested structures into a single cell.

Piping with jq

For default JSON output, use jq to extract specific fields:

# Names and titles of VPs at Stripe
apollo people search --title "VP Engineering" --domain stripe.com \
  | jq '.people[] | {name, title}'

# All job posting titles at a company
apollo companies jobs --id abc123 \
  | jq '.organization_job_postings[].title'

# Primary domains of Series B SaaS companies in the US
apollo companies search --industry SaaS --funding "5000000,20000000" --location "United States" \
  | jq '.accounts[].primary_domain'

JSON Response Keys

CommandTop-level key
people search / people employees.people[]
people enrich.person
people bulk-enrich.matches[]
companies search.accounts[]
companies enrich / companies bulk-enrich.organization / .organizations[]
companies get.accounts[0] (filtered by org ID via mixed_companies/search)
companies jobs.organization_job_postings[]
news search.news_articles[]
contacts search.contacts[] (+ .pagination)
contacts create / contacts update.contact
contacts bulk-create.created_contacts[]
accounts create / accounts update.account
accounts bulk-create.created_accounts[]
deals create / deals show.opportunity
deals search.opportunities[]
sequences search.emailer_campaigns[] (+ .pagination)
sequences add-contacts / sequences remove-contactsvaries — confirmation payload
calls log / calls update.phone_call
calls search.phone_calls[]
tasks create.task
tasks bulk-create.tasks[] (or similar bulk wrapper)
tasks search.tasks[]
users profiletop-level user object (no wrapper); credit fields appear with --credits
users search.users[] (+ .pagination)
email-accounts list.email_accounts[]
usage credits.credit_usage_stats (object keyed by credit type)
analytics report.response (primary result data), .incompatible_filters, .computed_filters, .goals

Related skills

FAQ

How do I authenticate?

Run apollo auth whoami to confirm, and apollo auth login if not logged in, before running any command.

What output formats are supported?

Output defaults to JSON for jq piping; use -f/--format to switch to jsonl, csv, yaml, or table.

Sales & Marketinglifecycledistribution

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.