n8n-nodes-apivault-trustpilot 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,5 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Apivault
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction... THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND.
package/README.md ADDED
@@ -0,0 +1,14 @@
1
+ # n8n-nodes-apivault-trustpilot
2
+
3
+ n8n community node for **Trustpilot Reviews Scraper**.
4
+
5
+ Scrape Trustpilot reviews in real-time — author, rating, title, text, date. Multi-page, fresh data, no login needed. $0.0005 per review ($0.5 per 1,000).
6
+
7
+ ## Install
8
+ n8n: Settings → Community Nodes → Install → `n8n-nodes-apivault-trustpilot`
9
+
10
+ ## Credential
11
+ Add an **Apify API** credential with your Apify token (Apify Console → Settings → Integrations). Free account includes monthly credits.
12
+
13
+ ---
14
+ Backed by the Apify Actor [`apivault_labs/trustpilot-reviews-scraper`](https://apify.com/apivault_labs/trustpilot-reviews-scraper).
@@ -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 Trustpilot implements INodeType {
3
+ description: INodeTypeDescription;
4
+ execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]>;
5
+ }
@@ -0,0 +1,209 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Trustpilot = void 0;
4
+ const n8n_workflow_1 = require("n8n-workflow");
5
+ const ACTOR_ID = 'apivault_labs~trustpilot-reviews-scraper';
6
+ class Trustpilot {
7
+ constructor() {
8
+ this.description = {
9
+ displayName: 'Trustpilot Reviews Scraper',
10
+ name: 'trustpilot',
11
+ icon: 'file:trustpilot.svg',
12
+ group: ['transform'],
13
+ version: 1,
14
+ description: 'Scrape Trustpilot reviews in real-time — author, rating, title, text, date. Multi-page, fresh data, no login needed. $0.0005 per review ($0.5 per 1,000).',
15
+ defaults: { name: 'Trustpilot Reviews Scraper' },
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": "Trustpilot Company URLs",
23
+ "name": "companyUrls",
24
+ "description": "List of Trustpilot company page URLs. Accepts full URLs or domain-only values like 'www.amazon.com'. (comma or new-line separated)",
25
+ "type": "string",
26
+ "default": "",
27
+ "required": true
28
+ },
29
+ {
30
+ "displayName": "Pages per company",
31
+ "name": "maxPages",
32
+ "description": "How many review pages to scrape per company (each page = ~20 reviews)",
33
+ "type": "number",
34
+ "default": 3,
35
+ "typeOptions": {
36
+ "minValue": 1,
37
+ "maxValue": 50
38
+ }
39
+ },
40
+ {
41
+ "displayName": "Sort reviews by",
42
+ "name": "sortBy",
43
+ "description": "Order in which to fetch reviews",
44
+ "type": "options",
45
+ "options": [
46
+ {
47
+ "name": "Most recent",
48
+ "value": "recency"
49
+ },
50
+ {
51
+ "name": "Most relevant (default)",
52
+ "value": "relevance"
53
+ }
54
+ ],
55
+ "default": "recency"
56
+ },
57
+ {
58
+ "displayName": "Reviewer Name",
59
+ "name": "extractReviewer",
60
+ "description": "Include reviewer name",
61
+ "type": "boolean",
62
+ "default": true
63
+ },
64
+ {
65
+ "displayName": "Reviewer Location",
66
+ "name": "extractReviewerLocation",
67
+ "description": "Include reviewer country / location",
68
+ "type": "boolean",
69
+ "default": true
70
+ },
71
+ {
72
+ "displayName": "Reviewer's Total Reviews",
73
+ "name": "extractReviewerTotalReviews",
74
+ "description": "Total number of reviews written by this reviewer",
75
+ "type": "boolean",
76
+ "default": true
77
+ },
78
+ {
79
+ "displayName": "Review Title",
80
+ "name": "extractTitle",
81
+ "description": "Include the review headline",
82
+ "type": "boolean",
83
+ "default": true
84
+ },
85
+ {
86
+ "displayName": "Review Text",
87
+ "name": "extractText",
88
+ "description": "Include review body text",
89
+ "type": "boolean",
90
+ "default": true
91
+ },
92
+ {
93
+ "displayName": "Rating",
94
+ "name": "extractRating",
95
+ "description": "Star rating 1-5",
96
+ "type": "boolean",
97
+ "default": true
98
+ },
99
+ {
100
+ "displayName": "Date of Experience",
101
+ "name": "extractDateOfExperience",
102
+ "description": "Date the customer experienced the service",
103
+ "type": "boolean",
104
+ "default": true
105
+ },
106
+ {
107
+ "displayName": "Date Published",
108
+ "name": "extractDatePublished",
109
+ "description": "Date the review was posted on Trustpilot",
110
+ "type": "boolean",
111
+ "default": true
112
+ },
113
+ {
114
+ "displayName": "Verified Flag",
115
+ "name": "extractVerified",
116
+ "description": "Whether Trustpilot marked this review verified",
117
+ "type": "boolean",
118
+ "default": true
119
+ },
120
+ {
121
+ "displayName": "Owner Reply",
122
+ "name": "extractOwnerReply",
123
+ "description": "Company's response to the review, if any",
124
+ "type": "boolean",
125
+ "default": true
126
+ },
127
+ {
128
+ "displayName": "Company Name",
129
+ "name": "extractCompanyName",
130
+ "description": "Include the company domain on every review row",
131
+ "type": "boolean",
132
+ "default": true
133
+ },
134
+ {
135
+ "displayName": "Max Concurrency",
136
+ "name": "maxConcurrency",
137
+ "description": "How many pages to scrape in parallel (2-4 recommended)",
138
+ "type": "number",
139
+ "default": 3,
140
+ "typeOptions": {
141
+ "minValue": 1,
142
+ "maxValue": 6
143
+ }
144
+ },
145
+ {
146
+ "displayName": "Timeout per page (seconds)",
147
+ "name": "timeout",
148
+ "description": "Max wait per Trustpilot page",
149
+ "type": "number",
150
+ "default": 120,
151
+ "typeOptions": {
152
+ "minValue": 45,
153
+ "maxValue": 300
154
+ }
155
+ }
156
+ ],
157
+ };
158
+ }
159
+ async execute() {
160
+ const items = this.getInputData();
161
+ const returnData = [];
162
+ for (let i = 0; i < items.length; i++) {
163
+ try {
164
+ const body = {};
165
+ {
166
+ const _v = this.getNodeParameter("companyUrls", i, '');
167
+ const _a = _v.split(/[,\n]/).map(s => s.trim()).filter(s => s.length > 0);
168
+ if (_a.length)
169
+ body["companyUrls"] = _a;
170
+ }
171
+ body["maxPages"] = this.getNodeParameter("maxPages", i);
172
+ body["sortBy"] = this.getNodeParameter("sortBy", i);
173
+ body["extractReviewer"] = this.getNodeParameter("extractReviewer", i);
174
+ body["extractReviewerLocation"] = this.getNodeParameter("extractReviewerLocation", i);
175
+ body["extractReviewerTotalReviews"] = this.getNodeParameter("extractReviewerTotalReviews", i);
176
+ body["extractTitle"] = this.getNodeParameter("extractTitle", i);
177
+ body["extractText"] = this.getNodeParameter("extractText", i);
178
+ body["extractRating"] = this.getNodeParameter("extractRating", i);
179
+ body["extractDateOfExperience"] = this.getNodeParameter("extractDateOfExperience", i);
180
+ body["extractDatePublished"] = this.getNodeParameter("extractDatePublished", i);
181
+ body["extractVerified"] = this.getNodeParameter("extractVerified", i);
182
+ body["extractOwnerReply"] = this.getNodeParameter("extractOwnerReply", i);
183
+ body["extractCompanyName"] = this.getNodeParameter("extractCompanyName", i);
184
+ body["maxConcurrency"] = this.getNodeParameter("maxConcurrency", i);
185
+ body["timeout"] = this.getNodeParameter("timeout", i);
186
+ const options = {
187
+ method: 'POST',
188
+ url: `https://api.apify.com/v2/acts/${ACTOR_ID}/run-sync-get-dataset-items`,
189
+ body,
190
+ json: true,
191
+ };
192
+ const response = await this.helpers.requestWithAuthentication.call(this, 'apifyApi', options);
193
+ const results = Array.isArray(response) ? response : [response];
194
+ for (const result of results)
195
+ returnData.push({ json: result, pairedItem: { item: i } });
196
+ }
197
+ catch (error) {
198
+ if (this.continueOnFail()) {
199
+ returnData.push({ json: { error: error.message }, pairedItem: { item: i } });
200
+ continue;
201
+ }
202
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), error, { itemIndex: i });
203
+ }
204
+ }
205
+ return [returnData];
206
+ }
207
+ }
208
+ exports.Trustpilot = Trustpilot;
209
+ //# sourceMappingURL=Trustpilot.node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Trustpilot.node.js","sourceRoot":"","sources":["../../../nodes/Trustpilot/Trustpilot.node.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" width="64" height="64"><rect width="64" height="64" rx="12" fill="#4f46e5"/><text x="32" y="40" font-family="Arial" font-size="28" font-weight="700" fill="#fff" text-anchor="middle">T</text></svg>
package/index.js ADDED
@@ -0,0 +1 @@
1
+ module.exports = {};
package/package.json ADDED
@@ -0,0 +1,49 @@
1
+ {
2
+ "name": "n8n-nodes-apivault-trustpilot",
3
+ "version": "0.1.0",
4
+ "description": "n8n community node for Trustpilot Reviews Scraper — backed by the Apify Actor apivault_labs/trustpilot-reviews-scraper. No login. Pay-as-you-go via Apify.",
5
+ "license": "MIT",
6
+ "homepage": "https://apify.com/apivault_labs/trustpilot-reviews-scraper",
7
+ "keywords": [
8
+ "n8n-community-node-package",
9
+ "n8n",
10
+ "trustpilot",
11
+ "apify",
12
+ "no-code",
13
+ "automation"
14
+ ],
15
+ "author": {
16
+ "name": "apivault_labs"
17
+ },
18
+ "repository": {
19
+ "type": "git",
20
+ "url": "https://github.com/apivault-labs/n8n-nodes-apivault-trustpilot.git"
21
+ },
22
+ "main": "index.js",
23
+ "scripts": {
24
+ "build": "tsc && copyfiles \"nodes/**/*.svg\" dist",
25
+ "dev": "tsc --watch",
26
+ "prepublishOnly": "npm run build"
27
+ },
28
+ "files": [
29
+ "dist"
30
+ ],
31
+ "n8n": {
32
+ "n8nNodesApiVersion": 1,
33
+ "credentials": [
34
+ "dist/credentials/ApifyApi.credentials.js"
35
+ ],
36
+ "nodes": [
37
+ "dist/nodes/Trustpilot/Trustpilot.node.js"
38
+ ]
39
+ },
40
+ "devDependencies": {
41
+ "@types/node": "^20.10.0",
42
+ "copyfiles": "^2.4.1",
43
+ "n8n-workflow": "*",
44
+ "typescript": "^5.4.0"
45
+ },
46
+ "peerDependencies": {
47
+ "n8n-workflow": "*"
48
+ }
49
+ }