A command-line interface for searching ZoomInfo go-to-market (GTM) data. Search and enrich companies and contacts, surface intent signals and news, manage GTM context, and pipe results through your shell as JSON, JSONL, CSV, YAML, or a table.
The easiest way to install the GTM CLI on MacOS or Linux is using Homebrew.
brew install zoominfo/gtm-ai/gtm-ai-cliTo upgrade to the latest version, run
brew upgrade gtm-ai-cliFor Windows users or users unable to use Homebrew, you can also install the GTM CLI through NPM or any other node package installer (yarn, bun, etc.)
Ensure that you install it as a global package
npm install -g @zoominfo/gtm-ai-cliDownload the latest binary from the releases page for your platform. The platforms supported by this tool are:
- macOS w/ Apple Silicon (arm64)
- macOS w/ Intel processor (x64)
- Linux
- Windows
Make the downloaded package executable and place it on your PATH
macOS and Linux
chmod +x gtm-macos-arm64
mv gtm-macos-arm64 /usr/local/bin/gtm
xattr -d com.apple.quarantine /usr/local/bin/apollo #only required on macOSWindows
Move-Item .\gtm-windows-x64.exe "$env:USERPROFILE\bin\gtm.exe"git clone https://github.com/Zoominfo/gtm-ai-cli.git
cd gtm-ai-cli
npm install
npm run build
npm link # makes `gtm` available globallyOAuth 2.0 + PKCE via your browser. Tokens are saved to ~/.config/gtm-ai/ at mode 0600.
gtm auth login # opens browser to authorize, saves token
gtm auth whoami # show login status
gtm auth logout # revoke token and remove saved credentialsIf you ever need a clean slate (e.g. to re-trigger DCR), remove the saved client:
rm ~/.config/gtm-ai/client_id ~/.config/gtm-ai/credentials
gtm auth loginEvery subcommand accepts -f, --format. The table and csv formats auto-flatten JSON:API envelopes (data: [...]) and one-level-nested objects (company.id, company.name); json, jsonl, and yaml preserve the exact response shape.
| Format | When to use |
|---|---|
json (default) |
Pretty-printed JSON. Pipe to jq for field extraction. |
jsonl |
One JSON object per line. Stream into log/data pipelines. |
csv |
Flat CSV with headers; nested objects are dot-flattened, arrays are stringified. |
yaml |
Human-readable diffs of deeply nested responses. |
table |
ASCII bordered table. Best for terminal browsing of small responses. |
gtm companies search --industry software -f table
gtm contacts search --management-level "C Level Exec" -f jsonl > c-level-contacts.jsonl
gtm-context get -f yamlAny command that returns records also accepts --select <paths> — a comma-separated list of
dotted paths to project from each record, applied before formatting. Handy for narrow CSVs or
quick scans without jq. (Distinct from the enrich commands' --fields, which selects which
fields ZoomInfo returns server-side.)
gtm companies search --industry software --page-size 5 --select id,name,revenue -f table
gtm companies search --industry software --select name,company.id -f csv > orgs.csvZoomInfo's search endpoints reject unknown industry/metro/topic strings with 422. Always look up the canonical ID first, then pass it to the search filters.
# Industries containing "software"
gtm lookup --field industries --fuzzy software -f table
# All management levels (C Level Exec, VP Level Exec, Director, …)
gtm lookup --field management-levels -f table
# Intent topics about cloud
gtm lookup --field intent-topics --fuzzy cloud -f table
# Tech-products requires a two-step lookup (vendor first, then products under that vendor)
gtm lookup --field tech-vendors --fuzzy hubspot
gtm lookup --field tech-products --vendor "HubSpot, Inc"
# Metro regions in California
gtm lookup --field metro-regions --fuzzy "san francisco"Valid --field names: industries, metro-regions, states, countries, continents, management-levels, departments, job-functions, employee-count, revenue-ranges, company-types, company-rankings, intent-topics, scoop-topics, scoop-types, scoop-departments, news-categories, naics-codes, sic-codes, tech-vendors, tech-products, tech-categories, tech-skills, hashtags, buying-groups, board-members, years-of-experience, sub-unit-types, job-titles.
Search. Requires at least one filter.
# By name
gtm companies search --name "ZoomInfo"
# Tech companies in San Francisco with 100-500 employees
gtm companies search --industry software --metro "CA - San Francisco" --employees "100to249,250to499"
# Public US companies with $1B+ revenue, sorted by revenue desc
gtm companies search --type public --country "United States" --revenue-min 1000000 --sort -revenue --page-size 10 -f table
# Companies using a specific tech product (lookup product IDs first)
gtm companies search --tech "5f1d1d5c123" --metro "MA - Boston" --employees "250to499,500to999"
# Series A-B funded ($1M-$20M) software companies in the US
gtm companies search --industry software --country "United States" --funding-min 1000 --funding-max 20000
# By NAICS / SIC codes
gtm companies search --naics "541511,541512"Enrich. Provide any identifier:
gtm companies enrich --id 344589814
gtm companies enrich --domain stripe.com
gtm companies enrich --name "Stripe"
gtm companies enrich --ticker NVDA
gtm companies enrich --website https://www.zoominfo.com
# Restrict the returned fields
gtm companies enrich --domain stripe.com --fields name description website revenue employeeCount industries
# Bulk: up to 10 companies via JSON file
# companies.json: [{ "domain": "stripe.com" }, { "companyId": "344589814" }]
gtm companies enrich --file companies.jsonSimilar companies (machine-learning ranked list of look-alikes):
gtm companies similar --id 344589814
gtm companies similar --name "Stripe"Search. Requires at least one filter.
# By name
gtm contacts search --first-name Henry --last-name Schuck
# By job title (free-text OR queries supported)
gtm contacts search --job-title "CFO OR VP Finance OR Treasurer" --employees "1000to4999,5000to9999"
# C-level and VP-level executives at a specific company
gtm contacts search --management-level "C Level Exec,VP Level Exec" --company-id 344589814
# Engineering managers at SF software companies, only ones with verified email + phone
gtm contacts search --management-level Manager --department "Engineering & Technical" \
--industry software --metro "CA - San Francisco" --required email,phone
# Sales leaders with accuracy score ≥ 90
gtm contacts search --management-level "VP Level Exec" --department Sales --accuracy-min 90Enrich. Provide any valid identifier combination — personId (most accurate), email, phone, or firstName + lastName + (company OR companyId):
gtm contacts enrich --id 1260398587
gtm contacts enrich --email henry@zoominfo.com
gtm contacts enrich --phone 555-303-1234
gtm contacts enrich --first-name Henry --last-name Schuck --company "ZoomInfo"
gtm contacts enrich --full-name "Henry Schuck" --company-id 344589814
# Return only specific fields
gtm contacts enrich --email jane@acme.com --fields phone jobTitle managementLevel email
# Bulk: up to 10 contacts via JSON file
# contacts.json: [{ "email": "a@b.com" }, { "personId": "1260398587" }]
gtm contacts enrich --file contacts.jsonSimilar contacts (find people who look like a reference person; optionally constrain to a target company):
gtm contacts similar --person-id 1260398587
gtm contacts similar --person-id 1260398587 --company-id 239305146 # similar contacts within SalesforceRecommended contacts at a target company, based on your interaction history:
gtm contacts recommended --company-id 344589814 --use-case PROSPECTING
gtm contacts recommended --company-id 344589814 --use-case DEAL_ACCELERATION
gtm contacts recommended --company-id 344589814 --use-case RENEWAL_AND_GROWTHEvery request needs --topics (1-50). Look up exact topic names first.
gtm lookup --field intent-topics --fuzzy "data warehouse"
# Companies showing high intent for Cloud Applications + Java
gtm intent search --topics "Cloud Applications" "Java" --signal-score-min 70
# Strong intent in the last 30 days, mid-market US software companies
gtm intent search --topics "Mobile Apps" --signal-score-min 80 \
--signal-start 2026-05-01 --signal-end 2026-05-31 \
--industry software --country "United States" --employees "250to499,500to999"
# Audience strength A or B (largest groups researching)
gtm intent search --topics "AI Agents" --audience-strength-min B --audience-strength-max AEnrich — pull intent signals for a specific company:
gtm intent enrich --company-id 344589814 --topics "Cloud Applications" "Java"
gtm intent enrich --name "ZoomInfo" --topics "AI Agents" --signal-score-min 70
gtm intent enrich --website https://www.stripe.com --topics "Payments"Scoops capture earnings, funding, M&A, leadership moves, layoffs, product launches, awards, partnerships, and more. Search requires at least one filter.
# Funding announcements at SF software companies in May 2026
gtm scoops search --scoop-types Funding --industry software --metro "MA - Boston" \
--published-start 2026-05-01 --published-end 2026-05-31
# C-suite hires across all companies in the last 7 days
gtm scoops search --scoop-types "New Hire" "Executive Move" --department C-Suite --published-start 2026-05-27
# Layoffs at enterprise companies
gtm scoops search --scoop-types Layoffs --employees "10000plus" --published-start 2026-01-01
# Product launches in the AI space
gtm scoops search --scoop-types "Product Launch" --description "artificial intelligence" --published-start 2026-04-01Enrich — get scoops for a specific company:
gtm scoops enrich --company-id 344589814 --scoop-types "New Hire" Promotion
gtm scoops enrich --name "Stripe" --published-start 2026-01-01enrich_news is currently the only news tool. Requires --company-id.
# Recent funding/financial news for ZoomInfo
gtm news enrich --company-id 344589814 --categories FINANCIAL_RESULTS FUNDING
# Product news in the last quarter
gtm news enrich --company-id 344589814 --categories PRODUCT --publishing-start 2026-03-01 --publishing-end 2026-05-31
# Leadership news (appointments, departures)
gtm news enrich --company-id 344589814 --categories PERSONValid --categories: FINANCIAL_RESULTS, FUNDING, GENERAL_NEWS, GENERAL_PRESS_RELEASE, MERGER_OR_ACQUISITION, PERSON, PRODUCT.
This is the context that shapes how every other ZoomInfo tool interprets your queries — your offerings, ICPs, buyer personas, competitors, strategic priorities. Zero credits consumed.
# Compressed view (~1k tokens)
gtm-context get
# Full expanded profiles
gtm-context get --detailed -f yaml
# Update — synthesizes unstructured content into structured records (admin only)
gtm-context update --query "Update competitive intelligence" --source "Our main competitors are X, Y, Z. X is strong in …"
# From a file (large inputs)
gtm-context update --query "Create buyer personas from these interviews" --source-file ./interview-notes.txtgtm feedback submit --category DATA_QUALITY --message "Henry Schuck's company should be ZoomInfo Technologies, not ZoomInfo"
gtm feedback submit --category FEATURE_REQUEST --message "Want a --csv-headers flag to control column order"Categories: DATA_QUALITY, FEATURE_REQUEST, ACCESS_ENTITLEMENT_ISSUE, OTHER.
Natural-language research that blends ZoomInfo market data with your CRM and conversation
history. Frame the goal in --query (the tool decides what to retrieve) rather than passing
keywords. Get the ZoomInfo IDs from gtm companies search / gtm contacts search.
# Company/account research
gtm research account --company-id 344589814 \
--query "Prepping for a renewal call — relationship status, recent news, and open risks"
# Person/contact research
gtm research contact --contact-id 1260398587 \
--query "Who is this person, their role, and our history with them before I reach out"Use this when you need a tool that doesn't have a curated wrapper yet.
# What tools does the MCP server expose?
gtm raw list-tools -f table
# Call any tool by name with a JSON argument blob
gtm raw call find_similar_companies --args '{"companyName":"Stripe"}'
gtm raw call search_intent --args '{"topics":["Cloud Applications"],"signalScoreMin":80}'# Just the company names from a search
gtm companies search --industry software --metro "CA - San Francisco" | jq '.data[].attributes.name'
# Email + phone for every result
gtm contacts search --company-id 344589814 -f jsonl | jq -r '[.attributes.email, .attributes.phone] | @tsv'
# Top intent signals sorted by score
gtm intent search --topics "Cloud Applications" --signal-score-min 80 | jq '.data | sort_by(-.attributes.score) | .[0:5]'# Get top 3 company IDs, then enrich each with full details
gtm companies search --industry software --metro "CA - San Francisco" --page-size 3 -f json \
| jq -r '.data[].id' \
| xargs -I{} gtm companies enrich --id {}gtm contacts search --management-level "VP Level Exec" --department Sales --company-id 344589814 -f csv > vp-sales.csvgtm companies similar --id 344589814 -f json \
| jq -r '.data[0:10][].id' \
| xargs -I{} gtm companies enrich --id {} --fields name domain employeeCount revenue industriesnpm install
npm run typecheck # tsc --noEmit
npm test # unit tests (Vitest, mocked)
npm run test:live # live MCP session (requires `gtm auth login`)
npx tsx src/index.ts <command> # run from source (no compile)
node dist/js/index.js <command> # run compiled outputThe live suite (src/live/) drives the built CLI against the real MCP server, covering every
read-only command end-to-end (it skips when you're not logged in). Run it against the compiled
output and opt into the mutating tier explicitly:
GTM_CLI_CMD="node dist/js/index.js" npm run test:live # read-only (default)
GTM_LIVE_WRITES=1 GTM_CLI_CMD="node dist/js/index.js" npm run test:live # + feedback / gtm-context updateBuild standalone single-file binaries (requires Bun):
npm run build # → dist/gtm (current platform)
npm run build:all # cross-compile macOS arm64/x64, Linux x64, Windows x64.claude/skills/gtm-ai-cli/SKILL.md is auto-discovered by Claude Code when this repo is opened. Agents in other repos can fetch the canonical version from:
https://raw.githubusercontent.com/zoominfo/gtm-ai-cli/main/.claude/skills/gtm-ai-cli/SKILL.md
MIT