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.
Files changed (255) hide show
  1. package/LICENSE +13 -0
  2. package/_init/.monotomic.help.txt +624 -0
  3. package/_init/attachments.html +13 -0
  4. package/_init/attachments_msgs/info.md +3 -0
  5. package/_init/attachments_msgs/message-svg.html +10 -0
  6. package/_init/attachments_msgs/messages-doc.html +42 -0
  7. package/_init/attachments_msgs/messages-epub.html +34 -0
  8. package/_init/attachments_msgs/messages-ics.html +28 -0
  9. package/_init/attachments_msgs/messages-img.html +49 -0
  10. package/_init/attachments_msgs/messages-md.html +32 -0
  11. package/_init/attachments_msgs/messages-mov.html +87 -0
  12. package/_init/attachments_msgs/messages-odt.html +33 -0
  13. package/_init/attachments_msgs/messages-pdf.html +38 -0
  14. package/_init/attachments_msgs/messages-pdf.md +11 -0
  15. package/_init/attachments_msgs/messages-pptx.html +36 -0
  16. package/_init/attachments_msgs/messages-rtf.html +30 -0
  17. package/_init/attachments_msgs/messages-wav.html +21 -0
  18. package/_init/attachments_msgs/messages-xlsx.html +54 -0
  19. package/_init/bulk-from-mail.txt +6 -0
  20. package/_init/emails.txt +6 -0
  21. package/_init/froms.txt +2 -0
  22. package/_init/functions.txt +309 -0
  23. package/_init/generated/info.md +3 -0
  24. package/_init/help.txt +29 -0
  25. package/_init/icon-emojis.txt +167 -0
  26. package/_init/links.txt +4 -0
  27. package/_init/messages.html +97 -0
  28. package/_init/monotomic.json +859 -0
  29. package/_init/monotomic.key +1 -0
  30. package/_init/props/.extractor/alibaba/advanced.txt +74 -0
  31. package/_init/props/.extractor/alibaba/apikey.txt +10 -0
  32. package/_init/props/.extractor/alibaba/product.txt +657 -0
  33. package/_init/props/.extractor/alibaba/region.txt +27 -0
  34. package/_init/props/.extractor/alibaba/role.txt +1600 -0
  35. package/_init/props/.extractor/crunchbase/advanced.txt +68 -0
  36. package/_init/props/.extractor/crunchbase/apikey.txt +7 -0
  37. package/_init/props/.extractor/crunchbase/product.txt +579 -0
  38. package/_init/props/.extractor/crunchbase/region.txt +21 -0
  39. package/_init/props/.extractor/crunchbase/role.txt +1539 -0
  40. package/_init/props/.extractor/linkedin/advanced.txt +68 -0
  41. package/_init/props/.extractor/linkedin/apikey.txt +7 -0
  42. package/_init/props/.extractor/linkedin/product.txt +535 -0
  43. package/_init/props/.extractor/linkedin/region.txt +22 -0
  44. package/_init/props/.extractor/linkedin/role.txt +1508 -0
  45. package/_init/props/.extractor/madeinchina/advanced.txt +66 -0
  46. package/_init/props/.extractor/madeinchina/apikey.txt +8 -0
  47. package/_init/props/.extractor/madeinchina/product.txt +657 -0
  48. package/_init/props/.extractor/madeinchina/region.txt +22 -0
  49. package/_init/props/.extractor/madeinchina/role.txt +1600 -0
  50. package/_init/props/.extractor/pitchbook/advanced.txt +82 -0
  51. package/_init/props/.extractor/pitchbook/apikey.txt +10 -0
  52. package/_init/props/.extractor/pitchbook/product.txt +579 -0
  53. package/_init/props/.extractor/pitchbook/region.txt +23 -0
  54. package/_init/props/.extractor/pitchbook/role.txt +1566 -0
  55. package/_init/props/.extractor/readme.txt +185 -0
  56. package/_init/props/.extractor/zoominfo/advanced.txt +68 -0
  57. package/_init/props/.extractor/zoominfo/apikey.txt +10 -0
  58. package/_init/props/.extractor/zoominfo/product.txt +535 -0
  59. package/_init/props/.extractor/zoominfo/region.txt +30 -0
  60. package/_init/props/.extractor/zoominfo/role.txt +1508 -0
  61. package/_init/props/.judger/readme.txt +93 -0
  62. package/_init/props/eml/attachments_msgs/e_message-svg.html +10 -0
  63. package/_init/props/eml/attachments_msgs/e_messages-doc.html +14 -0
  64. package/_init/props/eml/attachments_msgs/e_messages-epub.html +14 -0
  65. package/_init/props/eml/attachments_msgs/e_messages-ics.html +34 -0
  66. package/_init/props/eml/attachments_msgs/e_messages-md.html +12 -0
  67. package/_init/props/eml/attachments_msgs/e_messages-mov.html +70 -0
  68. package/_init/props/eml/attachments_msgs/e_messages-odt.html +12 -0
  69. package/_init/props/eml/attachments_msgs/e_messages-pdf.html +16 -0
  70. package/_init/props/eml/attachments_msgs/e_messages-pptx.html +19 -0
  71. package/_init/props/eml/attachments_msgs/e_messages-rtf.html +14 -0
  72. package/_init/props/eml/attachments_msgs/e_messages-wav.html +13 -0
  73. package/_init/props/eml/attachments_msgs/e_messages-xlsx.html +25 -0
  74. package/_init/props/eml/e_attachments.html +13 -0
  75. package/_init/props/eml/e_messages.html +13 -0
  76. package/_init/props/info.md +3 -0
  77. package/_init/props/redirect/api_keys.txt +41 -0
  78. package/_init/props/redirect/domain.txt +7 -0
  79. package/_init/props/redirect/domains.txt +7 -0
  80. package/_init/props/redirect/readme.txt +121 -0
  81. package/_init/props/redirect/shodan-api.txt +30 -0
  82. package/_init/props/sorter/sorter-options.txt +188 -0
  83. package/_init/proxy_engine.txt +38 -0
  84. package/_init/readme.txt +4 -0
  85. package/_init/senders.txt +6 -0
  86. package/_init/smtps.txt +34 -0
  87. package/_init/socks.txt +27 -0
  88. package/_init/subjects.txt +2 -0
  89. package/commands/auth.js +1 -0
  90. package/commands/cleaner.js +1 -0
  91. package/commands/debounce.js +1 -0
  92. package/commands/email.js +1 -0
  93. package/commands/emop.js +1 -0
  94. package/commands/extract.js +1 -0
  95. package/commands/features.js +1 -0
  96. package/commands/functions.js +1 -0
  97. package/commands/index.js +1 -0
  98. package/commands/init.js +1 -0
  99. package/commands/jdop.js +1 -0
  100. package/commands/judger.js +1 -0
  101. package/commands/mthp.js +1 -0
  102. package/commands/mx.js +1 -0
  103. package/commands/proxy.js +1 -0
  104. package/commands/redirect.js +1 -0
  105. package/commands/renew.js +1 -0
  106. package/commands/send.js +1 -0
  107. package/commands/sort.js +1 -0
  108. package/commands/update.js +1 -0
  109. package/commands/user.js +1 -0
  110. package/commands/verify.js +1 -0
  111. package/denv.js +1 -0
  112. package/functions/advance.js +1 -0
  113. package/functions/auths.js +1 -0
  114. package/functions/cln/index.js +1 -0
  115. package/functions/cnvx.js +1 -0
  116. package/functions/deb/buckets.js +1 -0
  117. package/functions/deb/dmcd.js +1 -0
  118. package/functions/deb/dnsi.js +1 -0
  119. package/functions/deb/engine.js +1 -0
  120. package/functions/deb/index.js +1 -0
  121. package/functions/deb/rules.js +1 -0
  122. package/functions/deb/runState.js +1 -0
  123. package/functions/deb/spro.js +1 -0
  124. package/functions/deb/verdict.js +1 -0
  125. package/functions/deps.js +2 -0
  126. package/functions/emx/advanced-templates.js +1 -0
  127. package/functions/emx/advanced.js +1 -0
  128. package/functions/emx/alibaba.js +1 -0
  129. package/functions/emx/base-runner.js +1 -0
  130. package/functions/emx/checkpoint.js +1 -0
  131. package/functions/emx/config.js +1 -0
  132. package/functions/emx/crunchbase.js +1 -0
  133. package/functions/emx/http.js +1 -0
  134. package/functions/emx/index.js +1 -0
  135. package/functions/emx/limits.js +1 -0
  136. package/functions/emx/linkedin.js +1 -0
  137. package/functions/emx/madeinchina.js +1 -0
  138. package/functions/emx/pacing.js +1 -0
  139. package/functions/emx/paths.js +1 -0
  140. package/functions/emx/pitchbook.js +1 -0
  141. package/functions/emx/product.js +1 -0
  142. package/functions/emx/provider-profiles.js +1 -0
  143. package/functions/emx/proxy-pool.js +1 -0
  144. package/functions/emx/quality.js +1 -0
  145. package/functions/emx/rate-limit.js +1 -0
  146. package/functions/emx/region.js +1 -0
  147. package/functions/emx/registry.js +1 -0
  148. package/functions/emx/resilience.js +1 -0
  149. package/functions/emx/roles.js +1 -0
  150. package/functions/emx/scheduler.js +1 -0
  151. package/functions/emx/shield.js +1 -0
  152. package/functions/emx/targets.js +1 -0
  153. package/functions/emx/top-sign.js +1 -0
  154. package/functions/emx/writer-core.js +1 -0
  155. package/functions/emx/writer.js +1 -0
  156. package/functions/emx/zoominfo.js +1 -0
  157. package/functions/ewsm.js +1 -0
  158. package/functions/exhs.js +1 -0
  159. package/functions/ext/index.js +1 -0
  160. package/functions/extends.js +1 -0
  161. package/functions/fil.js +1 -0
  162. package/functions/glob.js +1 -0
  163. package/functions/gtp/cHtmlRtf.js +1 -0
  164. package/functions/gtp/cHtmlRtfWImage.js +1 -0
  165. package/functions/gtp/cHtmlXls.js +1 -0
  166. package/functions/gtp/clientsidejs/processingHtml.js +1 -0
  167. package/functions/gtp/encryptHtml.js +1 -0
  168. package/functions/hwmk.js +1 -0
  169. package/functions/inil.js +1 -0
  170. package/functions/ipr/agents.js +1 -0
  171. package/functions/ipr/health.js +1 -0
  172. package/functions/ipr/hnds.js +1 -0
  173. package/functions/ipr/index.js +1 -0
  174. package/functions/ipr/parser.js +1 -0
  175. package/functions/ipr/probe.js +1 -0
  176. package/functions/ipr/pxen.js +1 -0
  177. package/functions/ipr/reputation.js +1 -0
  178. package/functions/ipr/rotator.js +1 -0
  179. package/functions/ipr/runtime.js +1 -0
  180. package/functions/ipr/smtpports.js +1 -0
  181. package/functions/ipr/validate.js +1 -0
  182. package/functions/jdg/autodiscover.js +1 -0
  183. package/functions/jdg/dmcj.js +1 -0
  184. package/functions/jdg/dns-resolve.js +1 -0
  185. package/functions/jdg/http.js +1 -0
  186. package/functions/jdg/index.js +1 -0
  187. package/functions/jdg/platforms.js +1 -0
  188. package/functions/mcry.js +1 -0
  189. package/functions/mpry.js +1 -0
  190. package/functions/mxc/index.js +1 -0
  191. package/functions/obfs.js +1 -0
  192. package/functions/qrtest.js +1 -0
  193. package/functions/rdt/api-keys.js +1 -0
  194. package/functions/rdt/candidates.js +1 -0
  195. package/functions/rdt/cli-args.js +1 -0
  196. package/functions/rdt/crawl-shield.js +1 -0
  197. package/functions/rdt/dns-guard.js +1 -0
  198. package/functions/rdt/domain-budget.js +1 -0
  199. package/functions/rdt/http-client.js +1 -0
  200. package/functions/rdt/index.js +1 -0
  201. package/functions/rdt/output.js +1 -0
  202. package/functions/rdt/proxy.js +1 -0
  203. package/functions/rdt/rdt-check.js +1 -0
  204. package/functions/rdt/scanner.js +1 -0
  205. package/functions/rdt/shodan-api.js +1 -0
  206. package/functions/rdt/source-cache.js +1 -0
  207. package/functions/rdt/sources.js +1 -0
  208. package/functions/rdt/utils.js +1 -0
  209. package/functions/rdt/verify.js +1 -0
  210. package/functions/renew.js +1 -0
  211. package/functions/snd/index.js +1 -0
  212. package/functions/snd/mailers/dnsml.js +1 -0
  213. package/functions/snd/mailers/ewsml.js +1 -0
  214. package/functions/snd/mailers/freml.js +1 -0
  215. package/functions/snd/mailers/locml.js +1 -0
  216. package/functions/snd/mailers/mxdml.js +1 -0
  217. package/functions/snd/mailers/mxsml.js +1 -0
  218. package/functions/snd/mailers/prxml.js +1 -0
  219. package/functions/snd/mailers/zmbvf.js +2 -0
  220. package/functions/snd/mailers/zmrml.js +1 -0
  221. package/functions/sptc.js +1 -0
  222. package/functions/srt/index.js +1 -0
  223. package/functions/user.js +1 -0
  224. package/functions/vrf/dns-resolve.js +1 -0
  225. package/functions/vrf/http-client.js +1 -0
  226. package/functions/vrf/index.js +1 -0
  227. package/functions/vrf/providers.js +1 -0
  228. package/functions/zip.js +1 -0
  229. package/helpers.js +1 -0
  230. package/howto.txt +15 -0
  231. package/models/user.js +1 -0
  232. package/package.json +78 -0
  233. package/ultra.js +2 -0
  234. package/utils/atm.js +1 -0
  235. package/utils/checker.js +1 -0
  236. package/utils/cliBrand.js +1 -0
  237. package/utils/cliEmoji.js +1 -0
  238. package/utils/colors.js +1 -0
  239. package/utils/dnsMx.js +1 -0
  240. package/utils/exfr.js +1 -0
  241. package/utils/features.js +1 -0
  242. package/utils/gec.js +1 -0
  243. package/utils/hide.js +1 -0
  244. package/utils/jdfr.js +1 -0
  245. package/utils/liveFile.js +1 -0
  246. package/utils/loadEngine.js +1 -0
  247. package/utils/mthp.js +1 -0
  248. package/utils/phl.js +1 -0
  249. package/utils/rtm.js +1 -0
  250. package/utils/sag.js +1 -0
  251. package/utils/stm.js +1 -0
  252. package/utils/tok.js +1 -0
  253. package/utils/typ.js +1 -0
  254. package/utils/val.js +1 -0
  255. 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