Skip to main content

discolike-cli

Official CLI for the DiscoLike API — the discolike command from your terminal. Built on the discolike SDK.

Installation

pip install discolike-cli

Or run it without installing:

uvx --from discolike-cli discolike --help

Requires Python 3.11+. Installing this package gives you the discolike command.

Authentication

discolike auth login

Opens your browser to log in (add --no-browser to print the URL instead, --port to pin the loopback port when forwarding over SSH). To use an API key instead, pass --api-key KEY or --method api_key to be prompted; create a key at app.discolike.com/account/management/keys. You can also set DISCOLIKE_API_KEY in the environment instead.

Quickstart

discolike discover --icp-prompt "managed IT services for SMBs" --country US --max-records 25
discolike match "Stripe Inc" --city "San Francisco"
discolike match --file companies.csv --name-column company_name --wait
discolike count --phrase-match "book a demo" --country US
discolike company data stripe.com
discolike extract https://stripe.com/enterprise

Top-level commands: discover, count, match, extract, validate-icp, append, segment — plus auth, bulk, company, contacts, discogen, prospecting, queries, account, search-providers, and llm-providers command groups.

Volume pulls

discolike bulk walks past the 10,000-per-search ceiling and pulls contacts for a whole domain list into one CSV, with checkpoint and resume:

discolike bulk companies --params-file form.json --max-companies 50000 --run-name agencies --out companies.csv
discolike bulk estimate  --domains-file companies.csv --per-company 10          # free size check
discolike bulk contacts  --domains-file companies.csv --per-company 10 --summary "growth marketing" --out contacts.csv

companies saves each page as an exclusion list (<run-name>-round-N) and excludes it from the next page; rerunning with the same --out resumes from the CSV. contacts slices the domain list at 10000 / per-company domains per call and records finished slices in <out>.checkpoint. Both keep one call in flight under --rate-limit (default 10/min, the Pro rate on /discover and /contacts), retry on 429/5xx, and print a JSON summary at the end. Filters come from --params-file, --param and the common flags; the paging fields are managed for you.

Managed prospecting

discolike prospecting start --brief "Find 100 US logistics companies and 3 operations directors each" --idempotency-key logistics-1
discolike prospecting start --brief "Find lookalikes of our customers and their CTOs" --customers-file customers.csv --idempotency-key seeded-1
discolike prospecting wait RUN_ID
# Review the proposed plan, then approve the exact version you saw:
discolike prospecting approve RUN_ID --plan-version 1
discolike prospecting list --limit 20
discolike prospecting message RUN_ID --text "Make it 250 companies" --idempotency-key logistics-edit-1
discolike prospecting status RUN_ID --events-after 12 --messages-after 8 --limit 100
discolike prospecting cancel RUN_ID

wait returns on proposed, needs_input, completed, failed, or cancelled. A timeout stops polling only. Inspect status and stop reason; completion does not guarantee full coverage. Message replies arrive through status --messages-after; follow next_message_seq and reply_pending. A "segment these" request keeps reply_pending true until the segments message is posted, which can take more than an hour. If grouping stops without an outcome, the flag clears on its own after about 90 minutes.

start and approve default to pausing at checkpoints, like the web chat: a pilot check on large lists (pilot), a search drifting off target (tail_quality), candidates running out short of the target (short), the target being met (target_reached), another round of companies when the ones checked yield too few contacts (top_up), and, on wave runs, the researched contacts found before their emails are looked up (contacts_review, asked with --auto too; contacts already in DiscoLike's database get their lookups during research, which approving the plan starts; picking "Find emails" by number sends the question's seq, which the API needs to accept it). Pass --auto to never pause (except at a top_up round that would pass a spending limit); a poor pilot is then sharpened once and the run continues with a notice, stopping with pilot_failed only if the re-pilot fit is still under 20%. If sharpening itself fails, the run continues on the original criteria. On a terminal, wait shows the question, any sample companies and numbered replies at a checkpoint, sends your pick or your own text, and keeps waiting. Without a terminal, or with --no-input, it prints the run on stdout, a needs_input envelope (message, stop_reason, suggested_replies, sample) on stderr, and exits 7; answer with prospecting message --text "<reply>" (add --question-seq with the question's seq to answer only that question) and run wait again.

Omit --target-companies and --contacts-per-company to infer counts from the brief (fallback 1,000 and 3; up to 10 contacts per company). Explicit values override the text. --deliverable accounts returns the checked companies only, with no people; --goal companies takes --target-companies matching companies and works only those instead of adding rounds until the contact target is met. Both default to leads. --max-candidates and --max-actions are automatic when omitted or 0; their maxima are 100,000 and 10,000. Targets allow up to 10,000 companies, status pages up to 500 rows, and lists up to 50 runs. Work caps do not cap provider charges.

Conventions

  • Results print as JSON to stdout; errors print as JSON (error, message, status_code) to stderr.
  • Pass --format table for a human-readable table — used automatically when stdout is a TTY.
  • Volume inputs come from files: --domains-file companies.csv (a domain column, or one domain per line) on queries create-exclusion-list, contacts discover|search|count|generate, discogen run and validate-icp; --params-file form.json (a JSON object of API parameter names, e.g. an app form) on discover, count and contacts discover|search|count; --exclude-domains-file on discover. Precedence: file < --param < flags.
  • Async endpoints (match --file, discogen run, discogen run-personas, segment, validate-icp) take --wait to block until the job finishes. Without it, you get a task_id back to poll with discolike discogen status <task_id> --family <family>. append is synchronous — it returns enriched rows directly (or writes CSV bytes to --output).

Exit codes

Exit code Meaning
0 Success
1 Server error or unexpected failure
2 Validation error
3 Authentication or plan-access error
4 Rate limited
5 Network error
6 Not found
7 Needs input: prospecting wait reached a checkpoint with no terminal to ask (or --no-input)

License

MIT

Metadata

Release files for discolike-cli 0.5.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for discolike-cli 0.5.0
File Size Uploaded
discolike_cli-0.5.0.tar.gz 73.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for discolike-cli 0.5.0
File Interpreter ABI Platform
discolike_cli-0.5.0-py3-none-any.whl Python 3 none any Details

Total release size: 128.3 kB

Release files / discolike_cli-0.5.0.tar.gz

Download URL discolike_cli-0.5.0.tar.gz
Size 73.6 kB
Tags Source
SHA-256 checksum
How to use checksums
eaf02a90c07099fb2181383bdb8f6b1717e6f297e41939aa7d44309fa68aa9b0
BLAKE2b-256 checksum
How to use checksums
e1e731a753d275f7965f9468f5c4d24b934bcb32632898f8179dd2db9fb5cff5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 7, 2026.

Transparency log

Release files / discolike_cli-0.5.0-py3-none-any.whl

Download URL discolike_cli-0.5.0-py3-none-any.whl
Size 54.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4b61adbab8ecd362e0c6f888cb48258213e21ec86cc958a3b41a839f9e01e9ac
BLAKE2b-256 checksum
How to use checksums
8dd8b943c6000dea9fa3111bfe16e99128e008ff3a06a92419879d616627ce08
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 7, 2026.

Transparency log

Release history Release notifications | RSS feed

0.6.0

2 release files

This release

0.5.0 This release

2 release files

0.4.1

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page