argorant 0.10.0 → 0.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +100 -17
- package/bin/argorant.js +631 -64
- package/package.json +3 -2
package/README.md
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
# argorant
|
|
2
2
|
|
|
3
3
|
Search, count, reveal, export, and verify B2B contacts from the Argorant
|
|
4
|
-
database
|
|
4
|
+
database, and find work emails by name and company domain, from your
|
|
5
|
+
terminal, scripts, or coding agent. No install required.
|
|
5
6
|
|
|
6
7
|
```sh
|
|
7
8
|
npx argorant count "fintech CFOs in germany"
|
|
@@ -9,7 +10,7 @@ npx argorant count "fintech CFOs in germany"
|
|
|
9
10
|
|
|
10
11
|
Company lookups, counts, and masked searches spend **zero contact credits on
|
|
11
12
|
an active plan**. Reveals and exports draw on your Argorant workspace
|
|
12
|
-
quota/credits
|
|
13
|
+
quota/credits - the same pool as the app, API, and MCP server.
|
|
13
14
|
|
|
14
15
|
## Authenticate
|
|
15
16
|
|
|
@@ -19,34 +20,115 @@ Create an API key at **app.argorant.com/profile** (API keys), then:
|
|
|
19
20
|
npx argorant login # paste your ag_live_ key (stored in ~/.argorant)
|
|
20
21
|
```
|
|
21
22
|
|
|
22
|
-
Or set `ARGORANT_API_KEY=ag_live_…` in your environment
|
|
23
|
+
Or set `ARGORANT_API_KEY=ag_live_…` in your environment - ideal for scripts,
|
|
23
24
|
CI, and agents.
|
|
24
25
|
|
|
25
26
|
## Commands
|
|
26
27
|
|
|
27
28
|
| Command | What it does | Cost |
|
|
28
29
|
| --- | --- | --- |
|
|
29
|
-
| `login [key]` | Save an API key |
|
|
30
|
-
| `logout` | Forget the saved key and base (`~/.argorant/config.json`) |
|
|
30
|
+
| `login [key]` | Save an API key | - |
|
|
31
|
+
| `logout` | Forget the saved key and base (`~/.argorant/config.json`) | - |
|
|
31
32
|
| `whoami` | Account, scopes, daily quota | free |
|
|
32
33
|
| `count "<query>"` | Count matching contacts | free |
|
|
33
34
|
| `company <company.com> -n 5` | Count people at a company, split business-email coverage, preview masked roles | free |
|
|
34
35
|
| `search "<query>" -n 10` | Preview matches (masked identity, details redacted) | free |
|
|
35
36
|
| `sample <company.com> [-o sample.csv]` | Read a website and build 25 distinct, live-valid company leads from it | free sample |
|
|
36
|
-
| `reveal "<query>" -n 25` | Reveal full contact details (name, email,
|
|
37
|
-
| `
|
|
37
|
+
| `reveal "<query>" -n 25` | Reveal full contact details (name, work email, LinkedIn) | 1 credit per new working email |
|
|
38
|
+
| `reveal "<query>" -n 25 --phones` | Same, plus each person's phone number (direct dial or mobile) | + 10 credits per number found |
|
|
39
|
+
| `enrich --email <a@b.com> [--phones]` | The person behind an address, optionally with their phone number | 1 credit per match, + 10 if a number is found |
|
|
40
|
+
| `export "<query>" -n 1000 -o leads.csv` | Verified CSV export, polled until ready | 1 credit per working email |
|
|
41
|
+
| `export "<query>" -n 1000 --phones -o leads.csv` | Same, with phone numbers in the file | + 10 credits per number in the file |
|
|
38
42
|
| `export status <job_id> [--batch]` | Status of an export you already created | free |
|
|
39
43
|
| `export download <job_id> [--batch] -o leads.csv` | Re-download a finished export | free |
|
|
40
44
|
| `list create --name "<n>" [filters]` | Save a reusable filtered list (server counts it) | free |
|
|
41
45
|
| `list status <id>` | A saved list's size and mode | free |
|
|
42
46
|
| `verify <email>` / `verify --file emails.csv -o out.csv` | Verify your own addresses (verification pool; recent re-checks free) | pool |
|
|
43
|
-
| `
|
|
47
|
+
| `find "<first last>" --domain <d>` / `find --file people.csv -o found.csv` | Find a person's work email from a name and company domain, one or a whole list ([details](#find-emails)) | 1 credit found, 0.25 nothing found |
|
|
48
|
+
| `find status \| download \| resume \| cancel <job_id>`, `find pricing` | Manage a find job; show prices, balance and limits | free |
|
|
49
|
+
| `campaigns …` | Live outbound campaigns - **operator keys only**, see below | - |
|
|
50
|
+
|
|
51
|
+
## Phone numbers
|
|
52
|
+
|
|
53
|
+
Phone numbers are never included unless you ask for them with `--phones` (reveal, enrich, export).
|
|
54
|
+
A phone number costs 10 credits, and only when a number is actually returned. People without a number
|
|
55
|
+
cost nothing, and numbers you already unlocked (in the app, the API or the connector) are free. Phone
|
|
56
|
+
numbers come with the Pro plan and higher. The CLI shows the price before it spends anything, and the
|
|
57
|
+
result says per person whether a number came back and what it cost. Company and HQ numbers stay free.
|
|
58
|
+
|
|
59
|
+
```sh
|
|
60
|
+
npx argorant reveal --title CFO --domain stripe.com -n 5 --phones
|
|
61
|
+
npx argorant enrich --email patrick@stripe.com --phones --json
|
|
62
|
+
npx argorant export --title CFO --country Germany -n 200 --phones -o cfos.csv
|
|
63
|
+
```
|
|
44
64
|
|
|
45
65
|
Exports above 50,000 rows are created as a multi-chunk batch: the CLI polls
|
|
46
66
|
`export status --batch` for you and writes one file per chunk
|
|
47
67
|
(`leads-part1.csv`, `leads-part2.csv`, …). The batch id is printed so you can
|
|
48
68
|
re-download any time with `export download <batch_id> --batch`.
|
|
49
69
|
|
|
70
|
+
## Find emails
|
|
71
|
+
|
|
72
|
+
Give a name and the company's domain, get the person's work email.
|
|
73
|
+
|
|
74
|
+
```sh
|
|
75
|
+
npx argorant find "Jane Doe" --domain acme.com
|
|
76
|
+
npx argorant find --first Jane --last Doe --domain acme.com
|
|
77
|
+
# jane.doe@acme.com · Confirmed · confidence 95 · 1 credit
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
Each lookup prints one line: the email (or `no email found`), its status, the
|
|
81
|
+
confidence and what it cost. Statuses:
|
|
82
|
+
|
|
83
|
+
| Status | Meaning | Cost |
|
|
84
|
+
| --- | --- | --- |
|
|
85
|
+
| Confirmed | Address found and confirmed | 1 credit |
|
|
86
|
+
| Unconfirmed, catch-all domain | The domain accepts every address, so the best address is returned without confirmation | 1 credit |
|
|
87
|
+
| Not found | No address found for this person | 0.25 credit |
|
|
88
|
+
| No mail server | The domain does not receive email | free |
|
|
89
|
+
| Try again later | No answer for this domain right now; run it again later | free |
|
|
90
|
+
|
|
91
|
+
Invalid rows and every failed request (out of credits, limits, a busy
|
|
92
|
+
server) are free too. A 0.25 charge takes one whole credit and keeps the rest
|
|
93
|
+
as prepaid no-result lookups, which cover your next three misses. Run
|
|
94
|
+
`argorant find pricing` for the live prices, your balance, prepaid lookups and
|
|
95
|
+
limits.
|
|
96
|
+
|
|
97
|
+
A whole list runs as a job. The file is a CSV with a header row and the
|
|
98
|
+
columns `first_name`, `last_name` and `domain`; an optional `ref` column is
|
|
99
|
+
passed through to the results:
|
|
100
|
+
|
|
101
|
+
```sh
|
|
102
|
+
npx argorant find --file people.csv -o found.csv --max-credits 200 --name "Q4 list"
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
The CLI prints the job id, shows progress (processed/total, found, charged)
|
|
106
|
+
and saves the results CSV when the job is done (`argorant-found.csv` by
|
|
107
|
+
default). Columns: `row, ref, first_name, last_name, domain, email, status,
|
|
108
|
+
confirmed, confidence, credits_charged`. The output path is checked before the
|
|
109
|
+
job is created. On a terminal the CLI asks first, showing the prices and the
|
|
110
|
+
maximum charge; with `--yes`, `--json` or no TTY it starts right away.
|
|
111
|
+
Duplicate rows are removed before anything is charged. `--max-credits` caps
|
|
112
|
+
the job: it pauses at the cap instead of spending more.
|
|
113
|
+
|
|
114
|
+
A job pauses when your credits run out, when it reaches `--max-credits`, at
|
|
115
|
+
the daily limit, or when almost none of the recent lookups found anything. The
|
|
116
|
+
CLI says why and still saves what was found so far. Ctrl-C only stops
|
|
117
|
+
watching; the job keeps running.
|
|
118
|
+
|
|
119
|
+
```sh
|
|
120
|
+
argorant find status <job_id> # progress and counts
|
|
121
|
+
argorant find download <job_id> -o found.csv # the results CSV, any time
|
|
122
|
+
argorant find resume <job_id> [--max-credits 300] # continue a paused job
|
|
123
|
+
argorant find cancel <job_id> # stop; rows not processed yet are not charged
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
Exit codes: a single `find` exits `1` when no email came back, so scripts can
|
|
127
|
+
branch without parsing. A `find --file` job that pauses exits `5` when out of
|
|
128
|
+
credits and `4` at the daily limit or when slowed down; a job that stops at
|
|
129
|
+
your own `--max-credits` cap exits `0`. Errors use the codes below (`5` out of
|
|
130
|
+
credits, `4` rate limit with the wait time in the message).
|
|
131
|
+
|
|
50
132
|
## Filters
|
|
51
133
|
|
|
52
134
|
Combine free text with structured filters:
|
|
@@ -57,7 +139,7 @@ Combine free text with structured filters:
|
|
|
57
139
|
--has-phone --has-linkedin --has-email --verified-only
|
|
58
140
|
```
|
|
59
141
|
|
|
60
|
-
`--keywords` is the widest, most reliable filter (comma = OR)
|
|
142
|
+
`--keywords` is the widest, most reliable filter (comma = OR) - prefer it over
|
|
61
143
|
`--industry`. `--country`/`--geography` accept regions (Europe, EMEA, DACH,
|
|
62
144
|
Nordics, APAC, LATAM, GCC…).
|
|
63
145
|
|
|
@@ -84,13 +166,14 @@ npx argorant company stripe.com --json
|
|
|
84
166
|
npx argorant reveal "heads of procurement" --country Germany -n 25 --json --yes
|
|
85
167
|
```
|
|
86
168
|
|
|
87
|
-
### Non-interactive behaviour
|
|
169
|
+
### Non-interactive behaviour - read this before scripting `reveal`/`export`
|
|
88
170
|
|
|
89
|
-
`reveal`, `export`, and `
|
|
90
|
-
stdin is a TTY and neither `-y/--yes` nor `--json` was passed.
|
|
91
|
-
pipe, or inside an agent loop there is **no prompt at all
|
|
92
|
-
spend credits immediately.
|
|
93
|
-
|
|
171
|
+
`reveal`, `export`, `verify --file` and `find --file` ask for confirmation
|
|
172
|
+
**only** when stdin is a TTY and neither `-y/--yes` nor `--json` was passed.
|
|
173
|
+
In CI, in a pipe, or inside an agent loop there is **no prompt at all**, these
|
|
174
|
+
commands spend credits immediately. A single `find` never asks; each lookup
|
|
175
|
+
costs at most 1 credit. The prompt is a convenience for humans at a terminal,
|
|
176
|
+
never a safety net. Check your `-n` and `--max-credits` before you run them.
|
|
94
177
|
|
|
95
178
|
Related guardrails, so a mistake stays cheap:
|
|
96
179
|
|
|
@@ -108,9 +191,9 @@ Related guardrails, so a mistake stays cheap:
|
|
|
108
191
|
| `0` | success |
|
|
109
192
|
| `1` | generic error (bad usage, network, failed job) |
|
|
110
193
|
| `2` | not authenticated (no key, or the key was rejected) |
|
|
111
|
-
| `3` | forbidden
|
|
194
|
+
| `3` | forbidden - the key lacks the required scope |
|
|
112
195
|
| `4` | rate limit or daily quota reached |
|
|
113
|
-
| `5` | plan upgrade required (HTTP 402); the message carries the upgrade URL |
|
|
196
|
+
| `5` | plan upgrade required or out of credits (HTTP 402); the message carries the upgrade URL |
|
|
114
197
|
|
|
115
198
|
Exit `5` is deliberately distinct from `1`: an agent can tell "this account
|
|
116
199
|
needs a paid plan" apart from "something broke".
|