n8n-nodes-apivault-website-traffic-database 0.1.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/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 ApiVault Labs
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,47 @@
1
+ # Website Traffic Database for n8n
2
+
3
+ Use **Website Traffic Database** directly in n8n through the hosted
4
+ [`apivault_labs/website-traffic-database` Apify Actor](https://apify.com/apivault_labs/website-traffic-database).
5
+
6
+ The package is a thin workflow connector. It contains no private scraper implementation,
7
+ embedded credentials or datasets. Runs use your own Apify API token and return every
8
+ Dataset row as a separate n8n item. The node can also be used as an AI tool.
9
+
10
+ ## Setup
11
+
12
+ Install `n8n-nodes-apivault-website-traffic-database` as an n8n community node, create an **Apify API** credential,
13
+ and paste your token from Apify Console → Settings → Integrations.
14
+
15
+ ## Inputs
16
+
17
+ - `minVisits` — Minimum monthly visits
18
+ - `maxVisits` — Maximum monthly visits
19
+ - `topGlobalRank` — Top sites worldwide (enter N, e.g. 100)
20
+ - `category` — Category contains
21
+ - `country` — Top country (code)
22
+ - `minSearchShare` — Minimum search-traffic share (%)
23
+ - `hasAiTraffic` — Only sites with AI/LLM traffic
24
+ - `onlyGrowing` — Only growing sites
25
+ - `minGrowthPercent` — Minimum growth (%)
26
+ - `keyword` — Ranks for keyword
27
+ - `trafficSource` — Traffic channel
28
+ - `minSourceShare` — Minimum channel share (%)
29
+ - `maxBounce` — Maximum bounce rate (%)
30
+ - `minPagesPerVisit` — Minimum pages per visit
31
+ - `minTimeOnSite` — Minimum time on site (seconds)
32
+ - `maxResults` — Max results
33
+ - `sortBy` — Sort by
34
+ - `sortOrder` — Sort order
35
+ - `domains` — Domains to look up
36
+ - `similarTo` — Find competitors of this domain
37
+
38
+ Advanced users can send newly added or uncommon Actor fields through
39
+ **Additional Actor Input (JSON)** without waiting for a package update.
40
+
41
+ ## Security
42
+
43
+ The Apify token is stored by n8n credentials and sent only to `api.apify.com`.
44
+
45
+ ## License
46
+
47
+ MIT. Actor usage is billed separately on Apify.
@@ -0,0 +1,9 @@
1
+ import type { IAuthenticateGeneric, ICredentialTestRequest, ICredentialType, INodeProperties } from 'n8n-workflow';
2
+ export declare class ApifyApi implements ICredentialType {
3
+ name: string;
4
+ displayName: string;
5
+ documentationUrl: string;
6
+ properties: INodeProperties[];
7
+ authenticate: IAuthenticateGeneric;
8
+ test: ICredentialTestRequest;
9
+ }
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ApifyApi = void 0;
4
+ class ApifyApi {
5
+ constructor() {
6
+ this.name = 'apifyApi';
7
+ this.displayName = 'Apify API';
8
+ this.documentationUrl = 'https://docs.apify.com/platform/integrations/api';
9
+ this.properties = [
10
+ {
11
+ displayName: 'API Token',
12
+ name: 'apiToken',
13
+ type: 'string',
14
+ typeOptions: { password: true },
15
+ default: '',
16
+ required: true,
17
+ description: 'Your personal Apify API token (Apify Console -> Settings -> Integrations).',
18
+ },
19
+ ];
20
+ this.authenticate = {
21
+ type: 'generic',
22
+ properties: { headers: { Authorization: '=Bearer {{$credentials.apiToken}}' } },
23
+ };
24
+ this.test = { request: { baseURL: 'https://api.apify.com/v2', url: '/users/me' } };
25
+ }
26
+ }
27
+ exports.ApifyApi = ApifyApi;
28
+ //# sourceMappingURL=ApifyApi.credentials.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ApifyApi.credentials.js","sourceRoot":"","sources":["../../credentials/ApifyApi.credentials.ts"],"names":[],"mappings":";;;AAOA,MAAa,QAAQ;IAArB;QACC,SAAI,GAAG,UAAU,CAAC;QAClB,gBAAW,GAAG,WAAW,CAAC;QAC1B,qBAAgB,GAAG,kDAAkD,CAAC;QACtE,eAAU,GAAsB;YAC/B;gBACC,WAAW,EAAE,WAAW;gBACxB,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAC/B,OAAO,EAAE,EAAE;gBACX,QAAQ,EAAE,IAAI;gBACd,WAAW,EAAE,4EAA4E;aACzF;SACD,CAAC;QACF,iBAAY,GAAyB;YACpC,IAAI,EAAE,SAAS;YACf,UAAU,EAAE,EAAE,OAAO,EAAE,EAAE,aAAa,EAAE,mCAAmC,EAAE,EAAE;SAC/E,CAAC;QACF,SAAI,GAA2B,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,0BAA0B,EAAE,GAAG,EAAE,WAAW,EAAE,EAAE,CAAC;IACvG,CAAC;CAAA;AApBD,4BAoBC"}
@@ -0,0 +1,5 @@
1
+ import type { IExecuteFunctions, INodeExecutionData, INodeType, INodeTypeDescription } from 'n8n-workflow';
2
+ export declare class WebsiteTrafficDatabase implements INodeType {
3
+ description: INodeTypeDescription;
4
+ execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]>;
5
+ }
@@ -0,0 +1,387 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WebsiteTrafficDatabase = void 0;
4
+ const n8n_workflow_1 = require("n8n-workflow");
5
+ const ACTOR_ID = 'apivault_labs~website-traffic-database';
6
+ class WebsiteTrafficDatabase {
7
+ constructor() {
8
+ this.description = {
9
+ displayName: "Website Traffic Database",
10
+ name: "websiteTrafficDatabase",
11
+ icon: 'file:websitetrafficdatabase.svg',
12
+ group: ['transform'],
13
+ version: 1,
14
+ description: "Build targeted website lists for outreach and prospecting. The reverse of SimilarWeb: filter 40M+ sites by niche/category, monthly visits, country, rank, traffic channel, engagement, growth or the keywords they rank for. A cheaper SimilarWeb/Semrush alternative for bulk site discovery. $5/1K.",
15
+ defaults: { name: "Website Traffic Database" },
16
+ inputs: [n8n_workflow_1.NodeConnectionTypes.Main],
17
+ outputs: [n8n_workflow_1.NodeConnectionTypes.Main],
18
+ usableAsTool: true,
19
+ credentials: [{ name: 'apifyApi', required: true }],
20
+ properties: [
21
+ {
22
+ "displayName": "Minimum monthly visits",
23
+ "name": "minVisits",
24
+ "description": "Return sites with at least this many visits in the most recent month (e.g. 1000 = 1K+ visits/month). Used only in traffic mode. If you use ‘Top sites by Global Rank’ in section ②, this field is ignored automatically — you don't need to clear it.",
25
+ "type": "number",
26
+ "default": 1000,
27
+ "typeOptions": {
28
+ "minValue": 0
29
+ }
30
+ },
31
+ {
32
+ "displayName": "Maximum monthly visits",
33
+ "name": "maxVisits",
34
+ "description": "Return sites with at most this many visits in the most recent month. Leave empty for no upper limit.",
35
+ "type": "number",
36
+ "default": 0
37
+ },
38
+ {
39
+ "displayName": "Top sites worldwide (enter N, e.g. 100)",
40
+ "name": "topGlobalRank",
41
+ "description": "Enter 1000 to get the world's top 1000 sites — global ranks 1 through 1000, ordered from rank 1 (rank 1 = the most visited site in the world). Just fill this one field: the monthly-visits fields in ① and every optional filter in ③ (category, country, etc.) are ignored automatically, so you don't have to clear anything. Leave this empty to select by traffic instead.",
42
+ "type": "number",
43
+ "default": 0,
44
+ "typeOptions": {
45
+ "minValue": 1
46
+ }
47
+ },
48
+ {
49
+ "displayName": "Category contains",
50
+ "name": "category",
51
+ "description": "Keep only sites whose category contains this text (e.g. 'finance', 'health', 'games'). Category is known for a subset of sites, so this narrows results. Leave empty for all.",
52
+ "type": "string",
53
+ "default": ""
54
+ },
55
+ {
56
+ "displayName": "Top country (code)",
57
+ "name": "country",
58
+ "description": "Keep only sites whose #1 visitor country matches this code (e.g. 'US', 'DE', 'GB'). Leave empty for all countries.",
59
+ "type": "string",
60
+ "default": ""
61
+ },
62
+ {
63
+ "displayName": "Minimum search-traffic share (%)",
64
+ "name": "minSearchShare",
65
+ "description": "Keep only sites where organic search is at least this % of traffic (e.g. 50 = SEO-dependent sites). Leave empty to ignore.",
66
+ "type": "number",
67
+ "default": 0,
68
+ "typeOptions": {
69
+ "minValue": 0,
70
+ "maxValue": 100
71
+ }
72
+ },
73
+ {
74
+ "displayName": "Only sites with AI/LLM traffic",
75
+ "name": "hasAiTraffic",
76
+ "description": "Keep only sites that get visits from AI assistants (ChatGPT, Perplexity, etc.).",
77
+ "type": "boolean",
78
+ "default": false
79
+ },
80
+ {
81
+ "displayName": "Only growing sites",
82
+ "name": "onlyGrowing",
83
+ "description": "Keep only sites whose most recent month is higher than their earliest tracked month (positive trend).",
84
+ "type": "boolean",
85
+ "default": false
86
+ },
87
+ {
88
+ "displayName": "Minimum growth (%)",
89
+ "name": "minGrowthPercent",
90
+ "description": "Keep only sites growing at least this % from their earliest to most recent tracked month (e.g. 20 = fast-growing / trending sites). Leave empty to ignore.",
91
+ "type": "number",
92
+ "default": 0
93
+ },
94
+ {
95
+ "displayName": "Ranks for keyword",
96
+ "name": "keyword",
97
+ "description": "Keep only sites that have this keyword among their top search keywords (reverse keyword lookup, e.g. 'crypto wallet'). Best combined with other filters. Leave empty to ignore.",
98
+ "type": "string",
99
+ "default": ""
100
+ },
101
+ {
102
+ "displayName": "Traffic channel",
103
+ "name": "trafficSource",
104
+ "description": "Which traffic channel to filter by (used together with 'Minimum channel share' below). E.g. pick 'social' + 40 to find sites where social is 40%+ of traffic.",
105
+ "type": "options",
106
+ "options": [
107
+ {
108
+ "name": "Organic search",
109
+ "value": "search"
110
+ },
111
+ {
112
+ "name": "Direct",
113
+ "value": "direct"
114
+ },
115
+ {
116
+ "name": "Social",
117
+ "value": "social"
118
+ },
119
+ {
120
+ "name": "Referral",
121
+ "value": "referral"
122
+ },
123
+ {
124
+ "name": "Email",
125
+ "value": "mail"
126
+ },
127
+ {
128
+ "name": "Paid ads",
129
+ "value": "ads"
130
+ },
131
+ {
132
+ "name": "AI / LLM",
133
+ "value": "ai"
134
+ }
135
+ ],
136
+ "default": "search"
137
+ },
138
+ {
139
+ "displayName": "Minimum channel share (%)",
140
+ "name": "minSourceShare",
141
+ "description": "Keep only sites where the chosen 'Traffic channel' is at least this % of total traffic (e.g. 40). Leave empty to ignore this filter.",
142
+ "type": "number",
143
+ "default": 0,
144
+ "typeOptions": {
145
+ "minValue": 0,
146
+ "maxValue": 100
147
+ }
148
+ },
149
+ {
150
+ "displayName": "Maximum bounce rate (%)",
151
+ "name": "maxBounce",
152
+ "description": "Keep only sites with a bounce rate at or below this % (lower = more engaged visitors, e.g. 40). Leave empty to ignore.",
153
+ "type": "number",
154
+ "default": 0,
155
+ "typeOptions": {
156
+ "minValue": 0,
157
+ "maxValue": 100
158
+ }
159
+ },
160
+ {
161
+ "displayName": "Minimum pages per visit",
162
+ "name": "minPagesPerVisit",
163
+ "description": "Keep only sites where visitors view at least this many pages per visit (engagement, e.g. 3). Leave empty to ignore.",
164
+ "type": "number",
165
+ "default": 0,
166
+ "typeOptions": {
167
+ "minValue": 0
168
+ }
169
+ },
170
+ {
171
+ "displayName": "Minimum time on site (seconds)",
172
+ "name": "minTimeOnSite",
173
+ "description": "Keep only sites with an average visit duration of at least this many seconds (e.g. 120 = 2 min). Leave empty to ignore.",
174
+ "type": "number",
175
+ "default": 0,
176
+ "typeOptions": {
177
+ "minValue": 0
178
+ }
179
+ },
180
+ {
181
+ "displayName": "Max results",
182
+ "name": "maxResults",
183
+ "description": "Maximum number of websites to return. Up to 50,000 are returned as an accurate global top-N; larger values (up to 1,000,000) switch to a streaming bulk export for full-list pulls.",
184
+ "type": "number",
185
+ "default": 10000,
186
+ "typeOptions": {
187
+ "minValue": 1,
188
+ "maxValue": 1000000
189
+ }
190
+ },
191
+ {
192
+ "displayName": "Sort by",
193
+ "name": "sortBy",
194
+ "description": "Which field to sort results by.",
195
+ "type": "options",
196
+ "options": [
197
+ {
198
+ "name": "Monthly visits",
199
+ "value": "visits"
200
+ },
201
+ {
202
+ "name": "Global rank",
203
+ "value": "global_rank"
204
+ },
205
+ {
206
+ "name": "Bounce rate",
207
+ "value": "bounce"
208
+ },
209
+ {
210
+ "name": "Pages per visit",
211
+ "value": "pages"
212
+ },
213
+ {
214
+ "name": "Time on site",
215
+ "value": "time_on_site"
216
+ },
217
+ {
218
+ "name": "Category rank",
219
+ "value": "category_rank"
220
+ },
221
+ {
222
+ "name": "Country rank",
223
+ "value": "country_rank"
224
+ },
225
+ {
226
+ "name": "AI visits",
227
+ "value": "ai_visits"
228
+ }
229
+ ],
230
+ "default": "visits"
231
+ },
232
+ {
233
+ "displayName": "Sort order",
234
+ "name": "sortOrder",
235
+ "description": "Highest first (descending) or lowest first (ascending).",
236
+ "type": "options",
237
+ "options": [
238
+ {
239
+ "name": "Descending (highest first)",
240
+ "value": "desc"
241
+ },
242
+ {
243
+ "name": "Ascending (lowest first)",
244
+ "value": "asc"
245
+ }
246
+ ],
247
+ "default": "desc"
248
+ },
249
+ {
250
+ "displayName": "Domains to look up",
251
+ "name": "domains",
252
+ "description": "Enter one or more domains (e.g. 'stripe.com', 'https://www.nike.com/') to get their traffic data directly. Only domains already tracked in the database return a row. When you fill this, the filter fields above are ignored. Enter one value per line or separate values with commas.",
253
+ "type": "string",
254
+ "typeOptions": {
255
+ "rows": 3
256
+ },
257
+ "default": ""
258
+ },
259
+ {
260
+ "displayName": "Find competitors of this domain",
261
+ "name": "similarTo",
262
+ "description": "Enter ONE domain (e.g. 'stripe.com') to get its competitors: other sites in the same category with comparable monthly traffic. The domain must be in the database and have a known category. When you fill this, everything above is ignored.",
263
+ "type": "string",
264
+ "default": ""
265
+ },
266
+ {
267
+ "displayName": "Additional Actor Input (JSON)",
268
+ "name": "additionalInput",
269
+ "description": "Optional advanced fields to merge into the Actor input. Explicit fields above take precedence.",
270
+ "type": "json",
271
+ "default": "{}"
272
+ }
273
+ ],
274
+ };
275
+ }
276
+ async execute() {
277
+ const items = this.getInputData();
278
+ const returnData = [];
279
+ for (let i = 0; i < items.length; i++) {
280
+ try {
281
+ const body = {};
282
+ const extra = this.getNodeParameter('additionalInput', i, '{}');
283
+ if (extra) {
284
+ try {
285
+ Object.assign(body, typeof extra === 'string' ? JSON.parse(extra) : extra);
286
+ }
287
+ catch {
288
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'Additional Actor Input must be valid JSON', { itemIndex: i });
289
+ }
290
+ }
291
+ body["minVisits"] = this.getNodeParameter("minVisits", i);
292
+ {
293
+ const value = this.getNodeParameter("maxVisits", i, 0);
294
+ if (value !== 0)
295
+ body["maxVisits"] = value;
296
+ }
297
+ {
298
+ const value = this.getNodeParameter("topGlobalRank", i, 0);
299
+ if (value !== 0)
300
+ body["topGlobalRank"] = value;
301
+ }
302
+ {
303
+ const value = this.getNodeParameter("category", i, '');
304
+ if (value.trim())
305
+ body["category"] = value.trim();
306
+ }
307
+ {
308
+ const value = this.getNodeParameter("country", i, '');
309
+ if (value.trim())
310
+ body["country"] = value.trim();
311
+ }
312
+ {
313
+ const value = this.getNodeParameter("minSearchShare", i, 0);
314
+ if (value !== 0)
315
+ body["minSearchShare"] = value;
316
+ }
317
+ body["hasAiTraffic"] = this.getNodeParameter("hasAiTraffic", i);
318
+ body["onlyGrowing"] = this.getNodeParameter("onlyGrowing", i);
319
+ {
320
+ const value = this.getNodeParameter("minGrowthPercent", i, 0);
321
+ if (value !== 0)
322
+ body["minGrowthPercent"] = value;
323
+ }
324
+ {
325
+ const value = this.getNodeParameter("keyword", i, '');
326
+ if (value.trim())
327
+ body["keyword"] = value.trim();
328
+ }
329
+ body["trafficSource"] = this.getNodeParameter("trafficSource", i);
330
+ {
331
+ const value = this.getNodeParameter("minSourceShare", i, 0);
332
+ if (value !== 0)
333
+ body["minSourceShare"] = value;
334
+ }
335
+ {
336
+ const value = this.getNodeParameter("maxBounce", i, 0);
337
+ if (value !== 0)
338
+ body["maxBounce"] = value;
339
+ }
340
+ {
341
+ const value = this.getNodeParameter("minPagesPerVisit", i, 0);
342
+ if (value !== 0)
343
+ body["minPagesPerVisit"] = value;
344
+ }
345
+ {
346
+ const value = this.getNodeParameter("minTimeOnSite", i, 0);
347
+ if (value !== 0)
348
+ body["minTimeOnSite"] = value;
349
+ }
350
+ body["maxResults"] = this.getNodeParameter("maxResults", i);
351
+ body["sortBy"] = this.getNodeParameter("sortBy", i);
352
+ body["sortOrder"] = this.getNodeParameter("sortOrder", i);
353
+ {
354
+ const value = this.getNodeParameter("domains", i, '');
355
+ const values = value.split(/[,\n]/).map((entry) => entry.trim()).filter(Boolean);
356
+ if (values.length)
357
+ body["domains"] = values;
358
+ }
359
+ {
360
+ const value = this.getNodeParameter("similarTo", i, '');
361
+ if (value.trim())
362
+ body["similarTo"] = value.trim();
363
+ }
364
+ const options = {
365
+ method: 'POST',
366
+ url: `https://api.apify.com/v2/acts/${ACTOR_ID}/run-sync-get-dataset-items`,
367
+ body,
368
+ json: true,
369
+ };
370
+ const response = await this.helpers.requestWithAuthentication.call(this, 'apifyApi', options);
371
+ const results = Array.isArray(response) ? response : [response];
372
+ for (const result of results)
373
+ returnData.push({ json: result, pairedItem: { item: i } });
374
+ }
375
+ catch (error) {
376
+ if (this.continueOnFail()) {
377
+ returnData.push({ json: { error: error.message }, pairedItem: { item: i } });
378
+ continue;
379
+ }
380
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), error, { itemIndex: i });
381
+ }
382
+ }
383
+ return [returnData];
384
+ }
385
+ }
386
+ exports.WebsiteTrafficDatabase = WebsiteTrafficDatabase;
387
+ //# sourceMappingURL=WebsiteTrafficDatabase.node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebsiteTrafficDatabase.node.js","sourceRoot":"","sources":["../../../nodes/WebsiteTrafficDatabase/WebsiteTrafficDatabase.node.ts"],"names":[],"mappings":";;;AAQA,+CAAuE;AAEvE,MAAM,QAAQ,GAAG,wCAAwC,CAAC;AAE1D,MAAa,sBAAsB;IAAnC;QACC,gBAAW,GAAyB;YACnC,WAAW,EAAE,0BAA0B;YACvC,IAAI,EAAE,wBAAwB;YAC9B,IAAI,EAAE,iCAAiC;YACvC,KAAK,EAAE,CAAC,WAAW,CAAC;YACpB,OAAO,EAAE,CAAC;YACV,WAAW,EAAE,uSAAuS;YACpT,QAAQ,EAAE,EAAE,IAAI,EAAE,0BAA0B,EAAE;YAC9C,MAAM,EAAE,CAAC,kCAAmB,CAAC,IAAI,CAAC;YAClC,OAAO,EAAE,CAAC,kCAAmB,CAAC,IAAI,CAAC;YACnC,YAAY,EAAE,IAAI;YAClB,WAAW,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;YACnD,UAAU,EAAE;gBACX;oBACG,aAAa,EAAE,wBAAwB;oBACvC,MAAM,EAAE,WAAW;oBACnB,aAAa,EAAE,uPAAuP;oBACtQ,MAAM,EAAE,QAAQ;oBAChB,SAAS,EAAE,IAAI;oBACf,aAAa,EAAE;wBACZ,UAAU,EAAE,CAAC;qBACf;iBACH;gBACD;oBACG,aAAa,EAAE,wBAAwB;oBACvC,MAAM,EAAE,WAAW;oBACnB,aAAa,EAAE,sGAAsG;oBACrH,MAAM,EAAE,QAAQ;oBAChB,SAAS,EAAE,CAAC;iBACd;gBACD;oBACG,aAAa,EAAE,yCAAyC;oBACxD,MAAM,EAAE,eAAe;oBACvB,aAAa,EAAE,iXAAiX;oBAChY,MAAM,EAAE,QAAQ;oBAChB,SAAS,EAAE,CAAC;oBACZ,aAAa,EAAE;wBACZ,UAAU,EAAE,CAAC;qBACf;iBACH;gBACD;oBACG,aAAa,EAAE,mBAAmB;oBAClC,MAAM,EAAE,UAAU;oBAClB,aAAa,EAAE,+KAA+K;oBAC9L,MAAM,EAAE,QAAQ;oBAChB,SAAS,EAAE,EAAE;iBACf;gBACD;oBACG,aAAa,EAAE,oBAAoB;oBACnC,MAAM,EAAE,SAAS;oBACjB,aAAa,EAAE,oHAAoH;oBACnI,MAAM,EAAE,QAAQ;oBAChB,SAAS,EAAE,EAAE;iBACf;gBACD;oBACG,aAAa,EAAE,kCAAkC;oBACjD,MAAM,EAAE,gBAAgB;oBACxB,aAAa,EAAE,4HAA4H;oBAC3I,MAAM,EAAE,QAAQ;oBAChB,SAAS,EAAE,CAAC;oBACZ,aAAa,EAAE;wBACZ,UAAU,EAAE,CAAC;wBACb,UAAU,EAAE,GAAG;qBACjB;iBACH;gBACD;oBACG,aAAa,EAAE,gCAAgC;oBAC/C,MAAM,EAAE,cAAc;oBACtB,aAAa,EAAE,iFAAiF;oBAChG,MAAM,EAAE,SAAS;oBACjB,SAAS,EAAE,KAAK;iBAClB;gBACD;oBACG,aAAa,EAAE,oBAAoB;oBACnC,MAAM,EAAE,aAAa;oBACrB,aAAa,EAAE,uGAAuG;oBACtH,MAAM,EAAE,SAAS;oBACjB,SAAS,EAAE,KAAK;iBAClB;gBACD;oBACG,aAAa,EAAE,oBAAoB;oBACnC,MAAM,EAAE,kBAAkB;oBAC1B,aAAa,EAAE,4JAA4J;oBAC3K,MAAM,EAAE,QAAQ;oBAChB,SAAS,EAAE,CAAC;iBACd;gBACD;oBACG,aAAa,EAAE,mBAAmB;oBAClC,MAAM,EAAE,SAAS;oBACjB,aAAa,EAAE,iLAAiL;oBAChM,MAAM,EAAE,QAAQ;oBAChB,SAAS,EAAE,EAAE;iBACf;gBACD;oBACG,aAAa,EAAE,iBAAiB;oBAChC,MAAM,EAAE,eAAe;oBACvB,aAAa,EAAE,+JAA+J;oBAC9K,MAAM,EAAE,SAAS;oBACjB,SAAS,EAAE;wBACR;4BACG,MAAM,EAAE,gBAAgB;4BACxB,OAAO,EAAE,QAAQ;yBACnB;wBACD;4BACG,MAAM,EAAE,QAAQ;4BAChB,OAAO,EAAE,QAAQ;yBACnB;wBACD;4BACG,MAAM,EAAE,QAAQ;4BAChB,OAAO,EAAE,QAAQ;yBACnB;wBACD;4BACG,MAAM,EAAE,UAAU;4BAClB,OAAO,EAAE,UAAU;yBACrB;wBACD;4BACG,MAAM,EAAE,OAAO;4BACf,OAAO,EAAE,MAAM;yBACjB;wBACD;4BACG,MAAM,EAAE,UAAU;4BAClB,OAAO,EAAE,KAAK;yBAChB;wBACD;4BACG,MAAM,EAAE,UAAU;4BAClB,OAAO,EAAE,IAAI;yBACf;qBACH;oBACD,SAAS,EAAE,QAAQ;iBACrB;gBACD;oBACG,aAAa,EAAE,2BAA2B;oBAC1C,MAAM,EAAE,gBAAgB;oBACxB,aAAa,EAAE,sIAAsI;oBACrJ,MAAM,EAAE,QAAQ;oBAChB,SAAS,EAAE,CAAC;oBACZ,aAAa,EAAE;wBACZ,UAAU,EAAE,CAAC;wBACb,UAAU,EAAE,GAAG;qBACjB;iBACH;gBACD;oBACG,aAAa,EAAE,yBAAyB;oBACxC,MAAM,EAAE,WAAW;oBACnB,aAAa,EAAE,wHAAwH;oBACvI,MAAM,EAAE,QAAQ;oBAChB,SAAS,EAAE,CAAC;oBACZ,aAAa,EAAE;wBACZ,UAAU,EAAE,CAAC;wBACb,UAAU,EAAE,GAAG;qBACjB;iBACH;gBACD;oBACG,aAAa,EAAE,yBAAyB;oBACxC,MAAM,EAAE,kBAAkB;oBAC1B,aAAa,EAAE,qHAAqH;oBACpI,MAAM,EAAE,QAAQ;oBAChB,SAAS,EAAE,CAAC;oBACZ,aAAa,EAAE;wBACZ,UAAU,EAAE,CAAC;qBACf;iBACH;gBACD;oBACG,aAAa,EAAE,gCAAgC;oBAC/C,MAAM,EAAE,eAAe;oBACvB,aAAa,EAAE,yHAAyH;oBACxI,MAAM,EAAE,QAAQ;oBAChB,SAAS,EAAE,CAAC;oBACZ,aAAa,EAAE;wBACZ,UAAU,EAAE,CAAC;qBACf;iBACH;gBACD;oBACG,aAAa,EAAE,aAAa;oBAC5B,MAAM,EAAE,YAAY;oBACpB,aAAa,EAAE,qLAAqL;oBACpM,MAAM,EAAE,QAAQ;oBAChB,SAAS,EAAE,KAAK;oBAChB,aAAa,EAAE;wBACZ,UAAU,EAAE,CAAC;wBACb,UAAU,EAAE,OAAO;qBACrB;iBACH;gBACD;oBACG,aAAa,EAAE,SAAS;oBACxB,MAAM,EAAE,QAAQ;oBAChB,aAAa,EAAE,iCAAiC;oBAChD,MAAM,EAAE,SAAS;oBACjB,SAAS,EAAE;wBACR;4BACG,MAAM,EAAE,gBAAgB;4BACxB,OAAO,EAAE,QAAQ;yBACnB;wBACD;4BACG,MAAM,EAAE,aAAa;4BACrB,OAAO,EAAE,aAAa;yBACxB;wBACD;4BACG,MAAM,EAAE,aAAa;4BACrB,OAAO,EAAE,QAAQ;yBACnB;wBACD;4BACG,MAAM,EAAE,iBAAiB;4BACzB,OAAO,EAAE,OAAO;yBAClB;wBACD;4BACG,MAAM,EAAE,cAAc;4BACtB,OAAO,EAAE,cAAc;yBACzB;wBACD;4BACG,MAAM,EAAE,eAAe;4BACvB,OAAO,EAAE,eAAe;yBAC1B;wBACD;4BACG,MAAM,EAAE,cAAc;4BACtB,OAAO,EAAE,cAAc;yBACzB;wBACD;4BACG,MAAM,EAAE,WAAW;4BACnB,OAAO,EAAE,WAAW;yBACtB;qBACH;oBACD,SAAS,EAAE,QAAQ;iBACrB;gBACD;oBACG,aAAa,EAAE,YAAY;oBAC3B,MAAM,EAAE,WAAW;oBACnB,aAAa,EAAE,yDAAyD;oBACxE,MAAM,EAAE,SAAS;oBACjB,SAAS,EAAE;wBACR;4BACG,MAAM,EAAE,4BAA4B;4BACpC,OAAO,EAAE,MAAM;yBACjB;wBACD;4BACG,MAAM,EAAE,0BAA0B;4BAClC,OAAO,EAAE,KAAK;yBAChB;qBACH;oBACD,SAAS,EAAE,MAAM;iBACnB;gBACD;oBACG,aAAa,EAAE,oBAAoB;oBACnC,MAAM,EAAE,SAAS;oBACjB,aAAa,EAAE,yRAAyR;oBACxS,MAAM,EAAE,QAAQ;oBAChB,aAAa,EAAE;wBACZ,MAAM,EAAE,CAAC;qBACX;oBACD,SAAS,EAAE,EAAE;iBACf;gBACD;oBACG,aAAa,EAAE,iCAAiC;oBAChD,MAAM,EAAE,WAAW;oBACnB,aAAa,EAAE,+OAA+O;oBAC9P,MAAM,EAAE,QAAQ;oBAChB,SAAS,EAAE,EAAE;iBACf;gBACD;oBACG,aAAa,EAAE,+BAA+B;oBAC9C,MAAM,EAAE,iBAAiB;oBACzB,aAAa,EAAE,gGAAgG;oBAC/G,MAAM,EAAE,MAAM;oBACd,SAAS,EAAE,IAAI;iBACjB;aACH;SACC,CAAC;IAoDH,CAAC;IAlDA,KAAK,CAAC,OAAO;QACZ,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAClC,MAAM,UAAU,GAAyB,EAAE,CAAC;QAC5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,IAAI,CAAC;gBACJ,MAAM,IAAI,GAA4B,EAAE,CAAC;gBACzC,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,CAAC,EAAE,IAAI,CAAoB,CAAC;gBACnF,IAAI,KAAK,EAAE,CAAC;oBACX,IAAI,CAAC;wBAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;oBAAC,CAAC;oBACnF,MAAM,CAAC;wBAAC,MAAM,IAAI,iCAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,2CAA2C,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC;oBAAC,CAAC;gBACvH,CAAC;gBACD,IAAI,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;gBAC1D,CAAC;oBAAC,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,CAAW,CAAC;oBAAC,IAAI,KAAK,KAAK,CAAC;wBAAE,IAAI,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC;gBAAC,CAAC;gBACjH,CAAC;oBAAC,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,eAAe,EAAE,CAAC,EAAE,CAAC,CAAW,CAAC;oBAAC,IAAI,KAAK,KAAK,CAAC;wBAAE,IAAI,CAAC,eAAe,CAAC,GAAG,KAAK,CAAC;gBAAC,CAAC;gBACzH,CAAC;oBAAC,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,CAAW,CAAC;oBAAC,IAAI,KAAK,CAAC,IAAI,EAAE;wBAAE,IAAI,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;gBAAC,CAAC;gBACxH,CAAC;oBAAC,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE,CAAW,CAAC;oBAAC,IAAI,KAAK,CAAC,IAAI,EAAE;wBAAE,IAAI,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;gBAAC,CAAC;gBACtH,CAAC;oBAAC,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,CAAC,EAAE,CAAC,CAAW,CAAC;oBAAC,IAAI,KAAK,KAAK,CAAC;wBAAE,IAAI,CAAC,gBAAgB,CAAC,GAAG,KAAK,CAAC;gBAAC,CAAC;gBAC3H,IAAI,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;gBAChE,IAAI,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;gBAC9D,CAAC;oBAAC,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,CAAC,EAAE,CAAC,CAAW,CAAC;oBAAC,IAAI,KAAK,KAAK,CAAC;wBAAE,IAAI,CAAC,kBAAkB,CAAC,GAAG,KAAK,CAAC;gBAAC,CAAC;gBAC/H,CAAC;oBAAC,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE,CAAW,CAAC;oBAAC,IAAI,KAAK,CAAC,IAAI,EAAE;wBAAE,IAAI,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;gBAAC,CAAC;gBACtH,IAAI,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;gBAClE,CAAC;oBAAC,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,CAAC,EAAE,CAAC,CAAW,CAAC;oBAAC,IAAI,KAAK,KAAK,CAAC;wBAAE,IAAI,CAAC,gBAAgB,CAAC,GAAG,KAAK,CAAC;gBAAC,CAAC;gBAC3H,CAAC;oBAAC,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,CAAW,CAAC;oBAAC,IAAI,KAAK,KAAK,CAAC;wBAAE,IAAI,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC;gBAAC,CAAC;gBACjH,CAAC;oBAAC,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,CAAC,EAAE,CAAC,CAAW,CAAC;oBAAC,IAAI,KAAK,KAAK,CAAC;wBAAE,IAAI,CAAC,kBAAkB,CAAC,GAAG,KAAK,CAAC;gBAAC,CAAC;gBAC/H,CAAC;oBAAC,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,eAAe,EAAE,CAAC,EAAE,CAAC,CAAW,CAAC;oBAAC,IAAI,KAAK,KAAK,CAAC;wBAAE,IAAI,CAAC,eAAe,CAAC,GAAG,KAAK,CAAC;gBAAC,CAAC;gBACzH,IAAI,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;gBAC5D,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;gBACpD,IAAI,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;gBAC1D,CAAC;oBAAC,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE,CAAW,CAAC;oBAAC,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;oBAAC,IAAI,MAAM,CAAC,MAAM;wBAAE,IAAI,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC;gBAAC,CAAC;gBACnM,CAAC;oBAAC,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC,EAAE,EAAE,CAAW,CAAC;oBAAC,IAAI,KAAK,CAAC,IAAI,EAAE;wBAAE,IAAI,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;gBAAC,CAAC;gBAC1H,MAAM,OAAO,GAAoB;oBAChC,MAAM,EAAE,MAA6B;oBACrC,GAAG,EAAE,iCAAiC,QAAQ,6BAA6B;oBAC3E,IAAI;oBACJ,IAAI,EAAE,IAAI;iBACV,CAAC;gBACF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,yBAAyB,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;gBAC9F,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;gBAChE,KAAK,MAAM,MAAM,IAAI,OAAO;oBAAE,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YAC1F,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;oBAC3B,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,KAAK,EAAG,KAAe,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;oBACxF,SAAS;gBACV,CAAC;gBACD,MAAM,IAAI,iCAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,KAAc,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC;YAChF,CAAC;QACF,CAAC;QACD,OAAO,CAAC,UAAU,CAAC,CAAC;IACrB,CAAC;CACD;AA/TD,wDA+TC"}
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64"><rect width="64" height="64" rx="14" fill="#6e45e2"/><path d="M18 20h28v7H18zm0 12h20v7H18zm0 12h28v7H18z" fill="#fff"/></svg>
package/index.js ADDED
@@ -0,0 +1 @@
1
+ module.exports = {};
package/package.json ADDED
@@ -0,0 +1,51 @@
1
+ {
2
+ "name": "n8n-nodes-apivault-website-traffic-database",
3
+ "version": "0.1.0",
4
+ "description": "n8n community node for Website Traffic Database, backed by the apivault_labs/website-traffic-database Apify Actor.",
5
+ "license": "MIT",
6
+ "homepage": "https://apify.com/apivault_labs/website-traffic-database",
7
+ "keywords": [
8
+ "n8n-community-node-package",
9
+ "n8n",
10
+ "apify",
11
+ "automation",
12
+ "lead-generation",
13
+ "website",
14
+ "traffic",
15
+ "database"
16
+ ],
17
+ "author": {
18
+ "name": "apivault_labs"
19
+ },
20
+ "repository": {
21
+ "type": "git",
22
+ "url": "https://github.com/apivault-labs/apify-funnels.git"
23
+ },
24
+ "main": "index.js",
25
+ "scripts": {
26
+ "build": "tsc && copyfiles \"nodes/**/*.svg\" dist",
27
+ "dev": "tsc --watch",
28
+ "prepublishOnly": "npm run build"
29
+ },
30
+ "files": [
31
+ "dist"
32
+ ],
33
+ "n8n": {
34
+ "n8nNodesApiVersion": 1,
35
+ "credentials": [
36
+ "dist/credentials/ApifyApi.credentials.js"
37
+ ],
38
+ "nodes": [
39
+ "dist/nodes/WebsiteTrafficDatabase/WebsiteTrafficDatabase.node.js"
40
+ ]
41
+ },
42
+ "devDependencies": {
43
+ "@types/node": "^20.10.0",
44
+ "copyfiles": "^2.4.1",
45
+ "n8n-workflow": "*",
46
+ "typescript": "^5.4.0"
47
+ },
48
+ "peerDependencies": {
49
+ "n8n-workflow": "*"
50
+ }
51
+ }