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 +5 -0
- package/README.md +14 -0
- package/dist/credentials/ApifyApi.credentials.d.ts +9 -0
- package/dist/credentials/ApifyApi.credentials.js +28 -0
- package/dist/credentials/ApifyApi.credentials.js.map +1 -0
- package/dist/nodes/Trustpilot/Trustpilot.node.d.ts +5 -0
- package/dist/nodes/Trustpilot/Trustpilot.node.js +209 -0
- package/dist/nodes/Trustpilot/Trustpilot.node.js.map +1 -0
- package/dist/nodes/Trustpilot/trustpilot.svg +1 -0
- package/index.js +1 -0
- package/package.json +49 -0
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
|
+
}
|