monotenant 1.0.31
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/LICENSE +13 -0
- package/_init/.monotomic.help.txt +624 -0
- package/_init/attachments.html +13 -0
- package/_init/attachments_msgs/info.md +3 -0
- package/_init/attachments_msgs/message-svg.html +10 -0
- package/_init/attachments_msgs/messages-doc.html +42 -0
- package/_init/attachments_msgs/messages-epub.html +34 -0
- package/_init/attachments_msgs/messages-ics.html +28 -0
- package/_init/attachments_msgs/messages-img.html +49 -0
- package/_init/attachments_msgs/messages-md.html +32 -0
- package/_init/attachments_msgs/messages-mov.html +87 -0
- package/_init/attachments_msgs/messages-odt.html +33 -0
- package/_init/attachments_msgs/messages-pdf.html +38 -0
- package/_init/attachments_msgs/messages-pdf.md +11 -0
- package/_init/attachments_msgs/messages-pptx.html +36 -0
- package/_init/attachments_msgs/messages-rtf.html +30 -0
- package/_init/attachments_msgs/messages-wav.html +21 -0
- package/_init/attachments_msgs/messages-xlsx.html +54 -0
- package/_init/bulk-from-mail.txt +6 -0
- package/_init/emails.txt +6 -0
- package/_init/froms.txt +2 -0
- package/_init/functions.txt +309 -0
- package/_init/generated/info.md +3 -0
- package/_init/help.txt +29 -0
- package/_init/icon-emojis.txt +167 -0
- package/_init/links.txt +4 -0
- package/_init/messages.html +97 -0
- package/_init/monotomic.json +859 -0
- package/_init/monotomic.key +1 -0
- package/_init/props/.extractor/alibaba/advanced.txt +74 -0
- package/_init/props/.extractor/alibaba/apikey.txt +10 -0
- package/_init/props/.extractor/alibaba/product.txt +657 -0
- package/_init/props/.extractor/alibaba/region.txt +27 -0
- package/_init/props/.extractor/alibaba/role.txt +1600 -0
- package/_init/props/.extractor/crunchbase/advanced.txt +68 -0
- package/_init/props/.extractor/crunchbase/apikey.txt +7 -0
- package/_init/props/.extractor/crunchbase/product.txt +579 -0
- package/_init/props/.extractor/crunchbase/region.txt +21 -0
- package/_init/props/.extractor/crunchbase/role.txt +1539 -0
- package/_init/props/.extractor/linkedin/advanced.txt +68 -0
- package/_init/props/.extractor/linkedin/apikey.txt +7 -0
- package/_init/props/.extractor/linkedin/product.txt +535 -0
- package/_init/props/.extractor/linkedin/region.txt +22 -0
- package/_init/props/.extractor/linkedin/role.txt +1508 -0
- package/_init/props/.extractor/madeinchina/advanced.txt +66 -0
- package/_init/props/.extractor/madeinchina/apikey.txt +8 -0
- package/_init/props/.extractor/madeinchina/product.txt +657 -0
- package/_init/props/.extractor/madeinchina/region.txt +22 -0
- package/_init/props/.extractor/madeinchina/role.txt +1600 -0
- package/_init/props/.extractor/pitchbook/advanced.txt +82 -0
- package/_init/props/.extractor/pitchbook/apikey.txt +10 -0
- package/_init/props/.extractor/pitchbook/product.txt +579 -0
- package/_init/props/.extractor/pitchbook/region.txt +23 -0
- package/_init/props/.extractor/pitchbook/role.txt +1566 -0
- package/_init/props/.extractor/readme.txt +185 -0
- package/_init/props/.extractor/zoominfo/advanced.txt +68 -0
- package/_init/props/.extractor/zoominfo/apikey.txt +10 -0
- package/_init/props/.extractor/zoominfo/product.txt +535 -0
- package/_init/props/.extractor/zoominfo/region.txt +30 -0
- package/_init/props/.extractor/zoominfo/role.txt +1508 -0
- package/_init/props/.judger/readme.txt +93 -0
- package/_init/props/eml/attachments_msgs/e_message-svg.html +10 -0
- package/_init/props/eml/attachments_msgs/e_messages-doc.html +14 -0
- package/_init/props/eml/attachments_msgs/e_messages-epub.html +14 -0
- package/_init/props/eml/attachments_msgs/e_messages-ics.html +34 -0
- package/_init/props/eml/attachments_msgs/e_messages-md.html +12 -0
- package/_init/props/eml/attachments_msgs/e_messages-mov.html +70 -0
- package/_init/props/eml/attachments_msgs/e_messages-odt.html +12 -0
- package/_init/props/eml/attachments_msgs/e_messages-pdf.html +16 -0
- package/_init/props/eml/attachments_msgs/e_messages-pptx.html +19 -0
- package/_init/props/eml/attachments_msgs/e_messages-rtf.html +14 -0
- package/_init/props/eml/attachments_msgs/e_messages-wav.html +13 -0
- package/_init/props/eml/attachments_msgs/e_messages-xlsx.html +25 -0
- package/_init/props/eml/e_attachments.html +13 -0
- package/_init/props/eml/e_messages.html +13 -0
- package/_init/props/info.md +3 -0
- package/_init/props/redirect/api_keys.txt +41 -0
- package/_init/props/redirect/domain.txt +7 -0
- package/_init/props/redirect/domains.txt +7 -0
- package/_init/props/redirect/readme.txt +121 -0
- package/_init/props/redirect/shodan-api.txt +30 -0
- package/_init/props/sorter/sorter-options.txt +188 -0
- package/_init/proxy_engine.txt +38 -0
- package/_init/readme.txt +4 -0
- package/_init/senders.txt +6 -0
- package/_init/smtps.txt +34 -0
- package/_init/socks.txt +27 -0
- package/_init/subjects.txt +2 -0
- package/commands/auth.js +1 -0
- package/commands/cleaner.js +1 -0
- package/commands/debounce.js +1 -0
- package/commands/email.js +1 -0
- package/commands/emop.js +1 -0
- package/commands/extract.js +1 -0
- package/commands/features.js +1 -0
- package/commands/functions.js +1 -0
- package/commands/index.js +1 -0
- package/commands/init.js +1 -0
- package/commands/jdop.js +1 -0
- package/commands/judger.js +1 -0
- package/commands/mthp.js +1 -0
- package/commands/mx.js +1 -0
- package/commands/proxy.js +1 -0
- package/commands/redirect.js +1 -0
- package/commands/renew.js +1 -0
- package/commands/send.js +1 -0
- package/commands/sort.js +1 -0
- package/commands/update.js +1 -0
- package/commands/user.js +1 -0
- package/commands/verify.js +1 -0
- package/denv.js +1 -0
- package/functions/advance.js +1 -0
- package/functions/auths.js +1 -0
- package/functions/cln/index.js +1 -0
- package/functions/cnvx.js +1 -0
- package/functions/deb/buckets.js +1 -0
- package/functions/deb/dmcd.js +1 -0
- package/functions/deb/dnsi.js +1 -0
- package/functions/deb/engine.js +1 -0
- package/functions/deb/index.js +1 -0
- package/functions/deb/rules.js +1 -0
- package/functions/deb/runState.js +1 -0
- package/functions/deb/spro.js +1 -0
- package/functions/deb/verdict.js +1 -0
- package/functions/deps.js +2 -0
- package/functions/emx/advanced-templates.js +1 -0
- package/functions/emx/advanced.js +1 -0
- package/functions/emx/alibaba.js +1 -0
- package/functions/emx/base-runner.js +1 -0
- package/functions/emx/checkpoint.js +1 -0
- package/functions/emx/config.js +1 -0
- package/functions/emx/crunchbase.js +1 -0
- package/functions/emx/http.js +1 -0
- package/functions/emx/index.js +1 -0
- package/functions/emx/limits.js +1 -0
- package/functions/emx/linkedin.js +1 -0
- package/functions/emx/madeinchina.js +1 -0
- package/functions/emx/pacing.js +1 -0
- package/functions/emx/paths.js +1 -0
- package/functions/emx/pitchbook.js +1 -0
- package/functions/emx/product.js +1 -0
- package/functions/emx/provider-profiles.js +1 -0
- package/functions/emx/proxy-pool.js +1 -0
- package/functions/emx/quality.js +1 -0
- package/functions/emx/rate-limit.js +1 -0
- package/functions/emx/region.js +1 -0
- package/functions/emx/registry.js +1 -0
- package/functions/emx/resilience.js +1 -0
- package/functions/emx/roles.js +1 -0
- package/functions/emx/scheduler.js +1 -0
- package/functions/emx/shield.js +1 -0
- package/functions/emx/targets.js +1 -0
- package/functions/emx/top-sign.js +1 -0
- package/functions/emx/writer-core.js +1 -0
- package/functions/emx/writer.js +1 -0
- package/functions/emx/zoominfo.js +1 -0
- package/functions/ewsm.js +1 -0
- package/functions/exhs.js +1 -0
- package/functions/ext/index.js +1 -0
- package/functions/extends.js +1 -0
- package/functions/fil.js +1 -0
- package/functions/glob.js +1 -0
- package/functions/gtp/cHtmlRtf.js +1 -0
- package/functions/gtp/cHtmlRtfWImage.js +1 -0
- package/functions/gtp/cHtmlXls.js +1 -0
- package/functions/gtp/clientsidejs/processingHtml.js +1 -0
- package/functions/gtp/encryptHtml.js +1 -0
- package/functions/hwmk.js +1 -0
- package/functions/inil.js +1 -0
- package/functions/ipr/agents.js +1 -0
- package/functions/ipr/health.js +1 -0
- package/functions/ipr/hnds.js +1 -0
- package/functions/ipr/index.js +1 -0
- package/functions/ipr/parser.js +1 -0
- package/functions/ipr/probe.js +1 -0
- package/functions/ipr/pxen.js +1 -0
- package/functions/ipr/reputation.js +1 -0
- package/functions/ipr/rotator.js +1 -0
- package/functions/ipr/runtime.js +1 -0
- package/functions/ipr/smtpports.js +1 -0
- package/functions/ipr/validate.js +1 -0
- package/functions/jdg/autodiscover.js +1 -0
- package/functions/jdg/dmcj.js +1 -0
- package/functions/jdg/dns-resolve.js +1 -0
- package/functions/jdg/http.js +1 -0
- package/functions/jdg/index.js +1 -0
- package/functions/jdg/platforms.js +1 -0
- package/functions/mcry.js +1 -0
- package/functions/mpry.js +1 -0
- package/functions/mxc/index.js +1 -0
- package/functions/obfs.js +1 -0
- package/functions/qrtest.js +1 -0
- package/functions/rdt/api-keys.js +1 -0
- package/functions/rdt/candidates.js +1 -0
- package/functions/rdt/cli-args.js +1 -0
- package/functions/rdt/crawl-shield.js +1 -0
- package/functions/rdt/dns-guard.js +1 -0
- package/functions/rdt/domain-budget.js +1 -0
- package/functions/rdt/http-client.js +1 -0
- package/functions/rdt/index.js +1 -0
- package/functions/rdt/output.js +1 -0
- package/functions/rdt/proxy.js +1 -0
- package/functions/rdt/rdt-check.js +1 -0
- package/functions/rdt/scanner.js +1 -0
- package/functions/rdt/shodan-api.js +1 -0
- package/functions/rdt/source-cache.js +1 -0
- package/functions/rdt/sources.js +1 -0
- package/functions/rdt/utils.js +1 -0
- package/functions/rdt/verify.js +1 -0
- package/functions/renew.js +1 -0
- package/functions/snd/index.js +1 -0
- package/functions/snd/mailers/dnsml.js +1 -0
- package/functions/snd/mailers/ewsml.js +1 -0
- package/functions/snd/mailers/freml.js +1 -0
- package/functions/snd/mailers/locml.js +1 -0
- package/functions/snd/mailers/mxdml.js +1 -0
- package/functions/snd/mailers/mxsml.js +1 -0
- package/functions/snd/mailers/prxml.js +1 -0
- package/functions/snd/mailers/zmbvf.js +2 -0
- package/functions/snd/mailers/zmrml.js +1 -0
- package/functions/sptc.js +1 -0
- package/functions/srt/index.js +1 -0
- package/functions/user.js +1 -0
- package/functions/vrf/dns-resolve.js +1 -0
- package/functions/vrf/http-client.js +1 -0
- package/functions/vrf/index.js +1 -0
- package/functions/vrf/providers.js +1 -0
- package/functions/zip.js +1 -0
- package/helpers.js +1 -0
- package/howto.txt +15 -0
- package/models/user.js +1 -0
- package/package.json +78 -0
- package/ultra.js +2 -0
- package/utils/atm.js +1 -0
- package/utils/checker.js +1 -0
- package/utils/cliBrand.js +1 -0
- package/utils/cliEmoji.js +1 -0
- package/utils/colors.js +1 -0
- package/utils/dnsMx.js +1 -0
- package/utils/exfr.js +1 -0
- package/utils/features.js +1 -0
- package/utils/gec.js +1 -0
- package/utils/hide.js +1 -0
- package/utils/jdfr.js +1 -0
- package/utils/liveFile.js +1 -0
- package/utils/loadEngine.js +1 -0
- package/utils/mthp.js +1 -0
- package/utils/phl.js +1 -0
- package/utils/rtm.js +1 -0
- package/utils/sag.js +1 -0
- package/utils/stm.js +1 -0
- package/utils/tok.js +1 -0
- package/utils/typ.js +1 -0
- package/utils/val.js +1 -0
- package/utils/whid.js +1 -0
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
Extractor
|
|
2
|
+
=========
|
|
3
|
+
|
|
4
|
+
Extract business emails continuously from ZoomInfo, Alibaba, Made-in-China,
|
|
5
|
+
Crunchbase, LinkedIn, or PitchBook. Each provider has its own config folder under
|
|
6
|
+
props/extractor/.
|
|
7
|
+
|
|
8
|
+
Folder layout
|
|
9
|
+
-------------
|
|
10
|
+
props/extractor/zoominfo/
|
|
11
|
+
apikey.txt — ZoomInfo JWT or username/password
|
|
12
|
+
role.txt — job titles to search (one per line)
|
|
13
|
+
product.txt — products / keywords / categories (one per line)
|
|
14
|
+
region.txt — country, state, city, other (blocks or pipe format)
|
|
15
|
+
advanced.txt — performance, filters, timing, quality settings
|
|
16
|
+
extracted/ — output (emails.txt, extraction.log)
|
|
17
|
+
|
|
18
|
+
props/extractor/alibaba/
|
|
19
|
+
apikey.txt — APP_KEY, APP_SECRET, optional SESSION
|
|
20
|
+
role.txt, product.txt, region.txt, advanced.txt, extracted/
|
|
21
|
+
|
|
22
|
+
props/extractor/madeinchina/
|
|
23
|
+
apikey.txt — API_KEY, API_SECRET
|
|
24
|
+
role.txt, product.txt, region.txt, advanced.txt, extracted/
|
|
25
|
+
|
|
26
|
+
props/extractor/crunchbase/
|
|
27
|
+
apikey.txt — Crunchbase user API key
|
|
28
|
+
role.txt, product.txt, region.txt, advanced.txt, extracted/
|
|
29
|
+
|
|
30
|
+
props/extractor/linkedin/
|
|
31
|
+
apikey.txt — Bearer token (Proxycurl or partner API)
|
|
32
|
+
role.txt, product.txt, region.txt, advanced.txt, extracted/
|
|
33
|
+
|
|
34
|
+
props/extractor/pitchbook/
|
|
35
|
+
apikey.txt — PB-Token API key (PitchBook Direct Data API)
|
|
36
|
+
role.txt, product.txt, region.txt, advanced.txt, extracted/
|
|
37
|
+
|
|
38
|
+
Commands
|
|
39
|
+
--------
|
|
40
|
+
monotenant email --zoominfo
|
|
41
|
+
monotenant email --alibaba
|
|
42
|
+
monotenant email --madeinchina
|
|
43
|
+
monotenant email --crunchbase
|
|
44
|
+
monotenant email --linkedin
|
|
45
|
+
monotenant email --pitchbook
|
|
46
|
+
monotomic email --<provider>
|
|
47
|
+
|
|
48
|
+
CLI options
|
|
49
|
+
-----------
|
|
50
|
+
--unlimited Force unlimited mode (no artificial caps)
|
|
51
|
+
--max-emails <number> Stop after N unique emails (0 = unlimited)
|
|
52
|
+
--max-cycles <number> Limit extraction cycles (0 = forever)
|
|
53
|
+
--page-size <number> Override PAGE_SIZE from advanced.txt
|
|
54
|
+
--api-key-file <path> Custom apikey.txt path
|
|
55
|
+
--role-file <path> Custom role.txt path
|
|
56
|
+
--advanced-file <path> Custom advanced.txt path
|
|
57
|
+
|
|
58
|
+
Examples
|
|
59
|
+
--------
|
|
60
|
+
monotenant email --madeinchina --unlimited
|
|
61
|
+
monotenant email --zoominfo --max-emails 500000
|
|
62
|
+
monotenant email --linkedin --max-emails 100000 --page-size 50
|
|
63
|
+
monotenant email --pitchbook --max-emails 250000
|
|
64
|
+
|
|
65
|
+
Output files (extracted/)
|
|
66
|
+
-------------------------
|
|
67
|
+
emails.txt — one email per line (deduplicated)
|
|
68
|
+
extraction.log — run log
|
|
69
|
+
.seen-emails.txt — dedupe index (supports resume)
|
|
70
|
+
.checkpoint.json — resume state after restart
|
|
71
|
+
.extraction-stats.json — credit / goal progress
|
|
72
|
+
|
|
73
|
+
Setup
|
|
74
|
+
-----
|
|
75
|
+
1. Open the provider folder you want.
|
|
76
|
+
2. Fill in apikey.txt with your credentials.
|
|
77
|
+
3. role.txt and product.txt ship with full A-Z databases — delete lines you
|
|
78
|
+
do not want to target (lines starting with # are ignored).
|
|
79
|
+
4. Add or edit regions in region.txt.
|
|
80
|
+
5. Tune advanced.txt for speed, accuracy, and filters.
|
|
81
|
+
6. Run the matching command from your project folder.
|
|
82
|
+
|
|
83
|
+
Regenerate role/product catalogs
|
|
84
|
+
--------------------------------
|
|
85
|
+
node utils/gec.js
|
|
86
|
+
|
|
87
|
+
Rewrites role.txt and product.txt for every provider under _init and
|
|
88
|
+
props/.extractor. Edit the script to add more entries, then re-run.
|
|
89
|
+
|
|
90
|
+
Target matrix
|
|
91
|
+
-------------
|
|
92
|
+
Each extraction cycle runs every combination of:
|
|
93
|
+
role.txt × region.txt × product.txt
|
|
94
|
+
|
|
95
|
+
Leave product.txt empty (or comment all lines) to search all products.
|
|
96
|
+
Leave region.txt empty to search globally.
|
|
97
|
+
|
|
98
|
+
Region format
|
|
99
|
+
-------------
|
|
100
|
+
Key=value block (all fields optional — need at least one):
|
|
101
|
+
COUNTRY=United States
|
|
102
|
+
STATE=California
|
|
103
|
+
COUNTY=San Francisco County
|
|
104
|
+
CITY=San Francisco
|
|
105
|
+
TOWN=Oakland
|
|
106
|
+
DISTRICT=Bay Area
|
|
107
|
+
BOROUGH=
|
|
108
|
+
SUBURB=
|
|
109
|
+
METRO=San Francisco Bay Area
|
|
110
|
+
POSTCODE=94105
|
|
111
|
+
ADDRESS=123 Market Street
|
|
112
|
+
TERRITORY=
|
|
113
|
+
OTHER=Silicon Valley
|
|
114
|
+
|
|
115
|
+
Extended pipe format:
|
|
116
|
+
country|state|county|city|town|postcode|district|other
|
|
117
|
+
|
|
118
|
+
Legacy pipe format (still supported):
|
|
119
|
+
country|state|city|other
|
|
120
|
+
|
|
121
|
+
POSTCODE accepts US ZIP, UK postcodes, and numeric postal codes.
|
|
122
|
+
TOWN is separate from CITY (village, township, hamlet).
|
|
123
|
+
COUNTY maps to shire/parish in UK-style addresses.
|
|
124
|
+
|
|
125
|
+
Advanced config highlights
|
|
126
|
+
--------------------------
|
|
127
|
+
Shared (all providers in advanced.txt):
|
|
128
|
+
UNLIMITED_MODE=true — no artificial extraction caps (default)
|
|
129
|
+
MAX_EMAILS=0 — 0 = unlimited; set 500000 for a goal target
|
|
130
|
+
API_CREDIT_LIMIT=0 — 0 = unlimited; set to your API account credits
|
|
131
|
+
CREDITS_PER_SEARCH=1 — credits charged per search API call
|
|
132
|
+
CREDITS_PER_EMAIL=1 — credits charged per profile enrich call
|
|
133
|
+
ACCURACY_MODE=strict|balanced|fast
|
|
134
|
+
MIN_QUALITY_SCORE (0-100), REQUIRE_BUSINESS_DOMAIN, EXCLUDE_FREE_EMAIL
|
|
135
|
+
BLOCKED_DOMAINS, ALLOWED_DOMAINS
|
|
136
|
+
CHECKPOINT_ENABLED (resume after restart)
|
|
137
|
+
TARGET_PRIORITY, TARGET_SHUFFLE, PARALLEL_TARGETS
|
|
138
|
+
MAX_PAGE_RETRIES, RATE_LIMIT_RPS, ENRICH_RATE_LIMIT_RPS, RICH_OUTPUT
|
|
139
|
+
|
|
140
|
+
Anti-block / resilience (advanced.txt or env)
|
|
141
|
+
---------------------------------------------
|
|
142
|
+
EXTRACTOR_SHIELD=true — detect captcha/Turnstile/Cloudflare and retry with backoff
|
|
143
|
+
SOFT_RETRY_BLOCKS=true — retry soft 403/429/challenge responses
|
|
144
|
+
ANTI_BLOCK_MODE=strict|balanced|fast
|
|
145
|
+
CHALLENGE_RETRIES=3 — extra retries when a challenge page is detected
|
|
146
|
+
ROTATE_PROXY_ON_CHALLENGE=true — rotate proxy pool on challenge (needs PROXY_LIST or proxy.txt)
|
|
147
|
+
PROXY_URL= — single proxy
|
|
148
|
+
PROXY_LIST= — comma-separated proxy URLs
|
|
149
|
+
PROXY_LIST_FILE= — path to proxy.txt / proxy_engine.txt (auto-detected if blank)
|
|
150
|
+
PROXY_ROTATION=round_robin — round_robin | random
|
|
151
|
+
RATE_LIMIT_RPS=0 — search rate limit (0 = provider default)
|
|
152
|
+
ENRICH_RATE_LIMIT_RPS=0 — profile enrich rate limit (0 = provider default)
|
|
153
|
+
|
|
154
|
+
Validated proxies from `monotomic proxy` → paste into proxy_engine.txt or PROXY_LIST_FILE.
|
|
155
|
+
Shield detects blocks and retries; it does not solve CAPTCHA/Turnstile puzzles.
|
|
156
|
+
|
|
157
|
+
ZoomInfo: PAGE_SIZE, ENRICH_CONCURRENCY, ACCURACY_SCORE, PREFETCH_PAGES
|
|
158
|
+
Alibaba: PAGE_SIZE, CONCURRENCY, SUPPLIER_METHOD, GATEWAY_URL
|
|
159
|
+
Made-in-China: PAGE_SIZE, CONCURRENCY, API_BASE_URL, SEARCH_PATH
|
|
160
|
+
Crunchbase: PAGE_SIZE, CONCURRENCY, SEARCH_MODE (people|organizations|both)
|
|
161
|
+
LinkedIn: PAGE_SIZE, ENRICH_CONCURRENCY, API_BASE_URL, ENRICH_PROFILES
|
|
162
|
+
PitchBook: PAGE_SIZE, CONCURRENCY, SEARCH_MODE (people|companies|investors|both),
|
|
163
|
+
API_BASE_URL, PEOPLE/COMPANIES/INVESTORS_SEARCH_PATH,
|
|
164
|
+
ENRICH_PROFILES, ENRICH_CONCURRENCY, USE_SEARCH_QUERY,
|
|
165
|
+
EXACT_JOB_TITLE, REQUIRES_HAS_EMAIL
|
|
166
|
+
|
|
167
|
+
PitchBook backend mapping
|
|
168
|
+
-------------------------
|
|
169
|
+
apikey.txt API_KEY → Authorization: PB-Token header
|
|
170
|
+
role.txt → jobTitle, title (+ exactTitle if EXACT_JOB_TITLE)
|
|
171
|
+
product.txt → industry, sector, vertical, q query text
|
|
172
|
+
region.txt → country, state, city, location params
|
|
173
|
+
PAGE_SIZE → pageSize, limit, perPage, offset pagination
|
|
174
|
+
SEARCH_MODE=people → GET {API_BASE_URL}/people/search
|
|
175
|
+
SEARCH_MODE=companies → GET {API_BASE_URL}/companies/search
|
|
176
|
+
SEARCH_MODE=investors → GET {API_BASE_URL}/investors/search
|
|
177
|
+
SEARCH_MODE=both → people + companies in parallel (CONCURRENCY)
|
|
178
|
+
ENRICH_PROFILES=true → GET {API_BASE_URL}/people/{id} when no email
|
|
179
|
+
USE_SEARCH_QUERY=true → combined q= role+product+region string
|
|
180
|
+
REQUIRES_HAS_EMAIL=true → hasEmail/includeEmail param + post-filter
|
|
181
|
+
|
|
182
|
+
Legacy migration
|
|
183
|
+
----------------
|
|
184
|
+
Flat props/extractor/apikey.txt and role.txt are auto-migrated into
|
|
185
|
+
the matching provider folder on first run.
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# Unlimited extraction — 0 means no cap
|
|
2
|
+
UNLIMITED_MODE=true
|
|
3
|
+
# true | false — disable artificial email/cycle caps
|
|
4
|
+
MAX_EMAILS=0
|
|
5
|
+
# 0 = unlimited; set goal e.g. 500000 for bulk runs
|
|
6
|
+
API_CREDIT_LIMIT=0
|
|
7
|
+
# 0 = unlimited; match your provider plan quota
|
|
8
|
+
CREDITS_PER_EMAIL=1
|
|
9
|
+
# credits consumed per saved email (billing estimate)
|
|
10
|
+
CREDITS_PER_SEARCH=1
|
|
11
|
+
# credits consumed per search/page request
|
|
12
|
+
STOP_ON_CREDIT_EXHAUSTED=true
|
|
13
|
+
# true = stop when API_CREDIT_LIMIT is reached
|
|
14
|
+
MAX_CYCLES=0
|
|
15
|
+
# 0 = infinite cycles until Ctrl+C or limits hit
|
|
16
|
+
|
|
17
|
+
# API resilience — reduces rate-limit / quota blocks
|
|
18
|
+
SOFT_RETRY_BLOCKS=true
|
|
19
|
+
# true = retry soft 403/429/captcha signals; false = fail fast
|
|
20
|
+
ANTI_BLOCK_MODE=balanced
|
|
21
|
+
# strict | balanced | fast
|
|
22
|
+
RATE_LIMIT_RPS=0
|
|
23
|
+
# 0 = unlimited pacing; set 2-3 if blocked often
|
|
24
|
+
MAX_PAGE_RETRIES=3
|
|
25
|
+
# retries per page on transient errors
|
|
26
|
+
ROLE_DELAY_MS=1200
|
|
27
|
+
# pause between role/region/product targets (ms)
|
|
28
|
+
PAGE_DELAY_MS=600
|
|
29
|
+
# pause between paginated requests (ms)
|
|
30
|
+
CYCLE_DELAY_MS=5000
|
|
31
|
+
# pause between full extraction cycles (ms)
|
|
32
|
+
MAX_ERRORS_BEFORE_PAUSE=12
|
|
33
|
+
# consecutive errors before cooldown pause
|
|
34
|
+
REQUEST_TIMEOUT_MS=30000
|
|
35
|
+
# HTTP request timeout (ms)
|
|
36
|
+
BACKOFF_CAP_MS=60000
|
|
37
|
+
# max single backoff wait (ms) — prevents hour-long freezes
|
|
38
|
+
MAX_PAGE_DELAY_MS=15000
|
|
39
|
+
# max adaptive page delay (ms)
|
|
40
|
+
PROXY_URL=
|
|
41
|
+
# optional rotating proxy
|
|
42
|
+
USER_AGENT=
|
|
43
|
+
# optional custom UA
|
|
44
|
+
|
|
45
|
+
# ZoomInfo provider settings
|
|
46
|
+
PAGE_SIZE=100
|
|
47
|
+
# contacts per search page (max 100)
|
|
48
|
+
ENRICH_CONCURRENCY=3
|
|
49
|
+
# parallel enrich requests for missing emails
|
|
50
|
+
ENRICH_BATCH_SIZE=25
|
|
51
|
+
# contacts per enrich API batch
|
|
52
|
+
ACCURACY_SCORE=70
|
|
53
|
+
# 0-100 minimum ZoomInfo contact accuracy score
|
|
54
|
+
PREFETCH_PAGES=true
|
|
55
|
+
# true = prefetch next page while processing current
|
|
56
|
+
|
|
57
|
+
# Quality & throughput
|
|
58
|
+
ACCURACY_MODE=balanced
|
|
59
|
+
# strict | balanced | fast
|
|
60
|
+
MIN_QUALITY_SCORE=60
|
|
61
|
+
# 0-100 minimum contact quality score
|
|
62
|
+
CHECKPOINT_ENABLED=true
|
|
63
|
+
# true = resume from last page after restart
|
|
64
|
+
FAST_MODE=false
|
|
65
|
+
# true = shorter delays (higher block risk)
|
|
66
|
+
STRICT_QUALITY=true
|
|
67
|
+
# true = apply quality filters strictly
|
|
68
|
+
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# ZoomInfo API credentials
|
|
2
|
+
#
|
|
3
|
+
# Paste a JWT/access token OR username + password below.
|
|
4
|
+
# Environment variables (ZOOMINFO_*) override these values.
|
|
5
|
+
# Optional: set API_CREDIT_LIMIT to match your account balance (0 = unlimited).
|
|
6
|
+
|
|
7
|
+
API_KEY=
|
|
8
|
+
USERNAME=
|
|
9
|
+
PASSWORD=
|
|
10
|
+
# API_CREDIT_LIMIT=500000
|