This workflow follows the Google Sheets → HTTP Request recipe pattern — see all workflows that pair these two integrations.
The workflow JSON
Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →
{
"id": "w434EiZ2z7klQAyp",
"meta": {
"templateCredsSetupCompleted": true
},
"name": "Scrape Trustpilot Reviews with DeepSeek, Analyze Sentiment with OpenAI",
"tags": [
{
"id": "2VG6RbmUdJ2VZbrj",
"name": "Google Drive",
"createdAt": "2024-12-04T16:50:56.177Z",
"updatedAt": "2024-12-04T16:50:56.177Z"
},
{
"id": "paTcf5QZDJsC2vKY",
"name": "OpenAI",
"createdAt": "2024-12-04T16:52:10.768Z",
"updatedAt": "2024-12-04T16:52:10.768Z"
}
],
"nodes": [
{
"id": "095a8e10-1630-4a1a-b6c9-7950ae1ed803",
"name": "Split Out",
"type": "n8n-nodes-base.splitOut",
"position": [
320,
-380
],
"parameters": {
"options": {},
"fieldToSplitOut": "recensioni"
},
"typeVersion": 1
},
{
"id": "6ff4dd9d-eedd-4d84-b13a-b3c0db717409",
"name": "Information Extractor",
"type": "@n8n/n8n-nodes-langchain.informationExtractor",
"position": [
-440,
140
],
"parameters": {
"text": "=You need to extract the review from the following HTML: {{ $json.recensione }}",
"options": {
"systemPromptTemplate": "You are a review expert. You need to extract only the required information and report it without changing anything.\nAll the required information is in the text."
},
"attributes": {
"attributes": [
{
"name": "autore",
"required": true,
"description": "Extract the name of the review author"
},
{
"name": "valutazione",
"type": "number",
"required": true,
"description": "Extract the rating given to the review (from 1 to 5)"
},
{
"name": "data",
"required": true,
"description": "Extract review date in YYYY-MM-DD format"
},
{
"name": "titolo",
"required": true,
"description": "Extract the review title"
},
{
"name": "testo",
"required": true,
"description": "Extract the review text"
},
{
"name": "n_recensioni",
"type": "number",
"required": true,
"description": "Extract the total number of reviews made by the user"
},
{
"name": "nazione",
"required": true,
"description": "Extract the country of the user who wrote the review. Must be two characters"
}
]
}
},
"typeVersion": 1
},
{
"id": "0036f3b1-4832-4a35-8694-0893475a4119",
"name": "If",
"type": "n8n-nodes-base.if",
"position": [
60,
-100
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "loose"
},
"combinator": "and",
"conditions": [
{
"id": "ab666549-4eec-40e2-a702-0575c094a2d4",
"operator": {
"type": "string",
"operation": "empty",
"singleValue": true
},
"leftValue": "={{ $json.Valutazione }}",
"rightValue": "={{ $('Split Out').item.json.recensioni.replace('/reviews/','') }}"
}
]
},
"looseTypeValidation": true
},
"executeOnce": false,
"typeVersion": 2.2
},
{
"id": "5423b55d-eb6c-41c6-9b26-410e3c92b85d",
"name": "When clicking \u2018Test workflow\u2019",
"type": "n8n-nodes-base.manualTrigger",
"position": [
-700,
-380
],
"parameters": {},
"typeVersion": 1
},
{
"id": "506cdaa1-e0ba-4f29-b137-69d321b13c94",
"name": "Limit1",
"type": "n8n-nodes-base.limit",
"position": [
540,
-380
],
"parameters": {
"maxItems": 3
},
"typeVersion": 1
},
{
"id": "40f1e30d-8aed-4995-b4e4-2239248bd6e7",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-460,
-480
],
"parameters": {
"width": 212.25249169435213,
"height": 245.55481727574733,
"content": "Change to the name of the company registered on Trustpilot and the maximum number of pages to scrape"
},
"typeVersion": 1
},
{
"id": "e6d2fec1-7255-4270-86b4-6d6f39f44ccb",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-460,
80
],
"parameters": {
"width": 381,
"height": 177,
"content": "Extract all information with DeepSeek (remember to change base_url with https://api.deepseek.com/v1)"
},
"typeVersion": 1
},
{
"id": "af5e962c-4faf-41cc-a8b8-2fbb145b7af6",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-240,
-160
],
"parameters": {
"width": 501.28903654485043,
"height": 195.84053156146172,
"content": "Check if the review has already been saved to Google Drive"
},
"typeVersion": 1
},
{
"id": "400dff0c-8b2e-4fe2-933e-1f4d14624ca1",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
40,
80
],
"parameters": {
"width": 301.27574750830576,
"height": 177.34219269102988,
"content": "Analyze review sentiment"
},
"typeVersion": 1
},
{
"id": "52757ade-4206-40f9-bf4f-c3aefb004d2e",
"name": "Set Parameters",
"type": "n8n-nodes-base.set",
"position": [
-440,
-380
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "556e201d-242a-4c0e-bc13-787c2b60f800",
"name": "company_id",
"type": "string",
"value": "COMPANY"
},
{
"id": "a1f239df-df08-41d8-8b78-d6502266a581",
"name": "max_page",
"type": "number",
"value": 2
}
]
}
},
"typeVersion": 3.4
},
{
"id": "cd7e9d36-7ecd-4d9c-b552-8f46b0cfcc03",
"name": "Get reviews",
"type": "n8n-nodes-base.httpRequest",
"position": [
-200,
-380
],
"parameters": {
"url": "=https://it.trustpilot.com/review/{{ $json.company_id }}",
"options": {
"pagination": {
"pagination": {
"parameters": {
"parameters": [
{
"name": "page",
"value": "={{ $pageCount + 1 }}"
}
]
},
"maxRequests": "={{ $json.max_page }}",
"requestInterval": 5000,
"limitPagesFetched": true
}
}
},
"sendQuery": true,
"queryParameters": {
"parameters": [
{
"name": "sort",
"value": "recency"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "476ff7b6-ab30-4674-a7fe-b032128ee51a",
"name": "Extract",
"type": "n8n-nodes-base.html",
"position": [
60,
-380
],
"parameters": {
"options": {},
"operation": "extractHtmlContent",
"extractionValues": {
"values": [
{
"key": "recensioni",
"attribute": "href",
"cssSelector": "article section a",
"returnArray": true,
"returnValue": "attribute"
}
]
}
},
"typeVersion": 1.2
},
{
"id": "a2a35455-7d3e-4c4c-aa66-6cbbd48d867a",
"name": "Get rows",
"type": "n8n-nodes-base.googleSheets",
"position": [
-200,
-100
],
"parameters": {
"options": {},
"filtersUI": {
"values": [
{
"lookupValue": "={{ $('Split Out').item.json.recensioni.replace('/reviews/','') }}",
"lookupColumn": "Id"
}
]
},
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "",
"cachedResultName": "Foglio1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1QZhQqg79-HVBQh8Y2ihMq67UIYIRrJFKLQalcFvtDaY",
"cachedResultUrl": "",
"cachedResultName": "Trustpilot Review"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.5
},
{
"id": "2d507fe6-a4fc-42ff-97ff-dfd552c651ab",
"name": "Get Google Sheets",
"type": "n8n-nodes-base.googleSheets",
"position": [
-440,
-100
],
"parameters": {
"columns": {
"value": {
"Id": "={{ $('Split Out').item.json.recensioni.replace('/reviews/','') }}"
},
"schema": [
{
"id": "Id",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Id",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Data",
"type": "string",
"display": true,
"required": false,
"displayName": "Data",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Nome",
"type": "string",
"display": true,
"required": false,
"displayName": "Nome",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Titolo",
"type": "string",
"display": true,
"required": false,
"displayName": "Titolo",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Testo",
"type": "string",
"display": true,
"required": false,
"displayName": "Testo",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Localit\u00e0",
"type": "string",
"display": true,
"required": false,
"displayName": "Localit\u00e0",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "N. Recensioni",
"type": "string",
"display": true,
"required": false,
"displayName": "N. Recensioni",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "URL",
"type": "string",
"display": true,
"required": false,
"displayName": "URL",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Valutazione",
"type": "string",
"display": true,
"required": false,
"displayName": "Valutazione",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Sentiment",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Sentiment",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"Id"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "appendOrUpdate",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "",
"cachedResultName": "Foglio1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1QZhQqg79-HVBQh8Y2ihMq67UIYIRrJFKLQalcFvtDaY",
"cachedResultUrl": "",
"cachedResultName": "Trustpilot Reviews"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"executeOnce": false,
"typeVersion": 4.5
},
{
"id": "0a1fab6e-96b7-403b-884e-f67be6e23fa5",
"name": "Get Single review",
"type": "n8n-nodes-base.httpRequest",
"position": [
320,
-120
],
"parameters": {
"url": "=https://it.trustpilot.com{{ $('Split Out').item.json.recensioni }}",
"options": {}
},
"typeVersion": 4.2,
"alwaysOutputData": false
},
{
"id": "7d322d76-1032-405a-9d46-2958761a184d",
"name": "Extract review",
"type": "n8n-nodes-base.html",
"position": [
540,
-120
],
"parameters": {
"options": {},
"operation": "extractHtmlContent",
"extractionValues": {
"values": [
{
"key": "recensione",
"cssSelector": "article",
"returnArray": true
}
]
}
},
"typeVersion": 1.2
},
{
"id": "952484e5-8e87-4eb3-99a6-5bf26c701ba8",
"name": "Update sheet",
"type": "n8n-nodes-base.googleSheets",
"position": [
520,
120
],
"parameters": {
"columns": {
"value": {
"Id": "={{ $('Split Out').item.json.recensioni.replace('/reviews/','') }}",
"URL": "=https://it.trustpilot.com{{ $('Split Out').item.json.recensioni }}",
"Data": "={{ $('Information Extractor').item.json.output.data }}",
"Nome": "={{ $json.output.autore }}",
"Testo": "={{ $('Information Extractor').item.json.output.testo }}",
"Titolo": "={{ $('Information Extractor').item.json.output.titolo }}",
"Localit\u00e0": "={{ $('Information Extractor').item.json.output.nazione }}",
"Sentiment": "={{ $json.sentimentAnalysis.category }}",
"Valutazione": "={{ $('Information Extractor').item.json.output.valutazione }}",
"N. Recensioni": "={{ $('Information Extractor').item.json.output.n_recensioni }}"
},
"schema": [
{
"id": "Id",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Id",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Data",
"type": "string",
"display": true,
"required": false,
"displayName": "Data",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Nome",
"type": "string",
"display": true,
"required": false,
"displayName": "Nome",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Titolo",
"type": "string",
"display": true,
"required": false,
"displayName": "Titolo",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Testo",
"type": "string",
"display": true,
"required": false,
"displayName": "Testo",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Localit\u00e0",
"type": "string",
"display": true,
"required": false,
"displayName": "Localit\u00e0",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "N. Recensioni",
"type": "string",
"display": true,
"required": false,
"displayName": "N. Recensioni",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "URL",
"type": "string",
"display": true,
"required": false,
"displayName": "URL",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Valutazione",
"type": "string",
"display": true,
"required": false,
"displayName": "Valutazione",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Sentiment",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Sentiment",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"Id"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "appendOrUpdate",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "",
"cachedResultName": "Foglio1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1QZhQqg79-HVBQh8Y2ihMq67UIYIRrJFKLQalcFvtDaY",
"cachedResultUrl": "",
"cachedResultName": "Trustpilot Reviews"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.5
},
{
"id": "eb853885-816d-4df7-b5ac-900fa89d3df9",
"name": "Sentiment Analysis",
"type": "@n8n/n8n-nodes-langchain.sentimentAnalysis",
"position": [
60,
140
],
"parameters": {
"options": {
"categories": "Positive, Neutral, Negative",
"systemPromptTemplate": "You are highly intelligent and accurate sentiment analyzer. Analyze the sentiment of the provided text. Categorize it into one of the following: {categories}. Use the provided formatting instructions. Only output the JSON."
},
"inputText": "={{ $json.output.testo }}"
},
"typeVersion": 1
},
{
"id": "79f1b9ea-6297-4735-9c0f-9f28dd65efa0",
"name": "DeepSeek Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
-460,
320
],
"parameters": {
"model": "deepseek-reasoner",
"options": {
"baseURL": "https://api.deepseek.com/v1"
}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "159cc88e-1dd3-4bba-a3c8-59a9aad14c88",
"name": "OpenAI Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
40,
320
],
"parameters": {
"options": {}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.1
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "43c8ee74-159c-4217-9cb4-554c63a3b183",
"connections": {
"If": {
"main": [
[
{
"node": "Get Single review",
"type": "main",
"index": 0
}
]
]
},
"Limit1": {
"main": [
[
{
"node": "Get Google Sheets",
"type": "main",
"index": 0
}
]
]
},
"Extract": {
"main": [
[
{
"node": "Split Out",
"type": "main",
"index": 0
}
]
]
},
"Get rows": {
"main": [
[
{
"node": "If",
"type": "main",
"index": 0
}
]
]
},
"Split Out": {
"main": [
[
{
"node": "Limit1",
"type": "main",
"index": 0
}
]
]
},
"Get reviews": {
"main": [
[
{
"node": "Extract",
"type": "main",
"index": 0
}
]
]
},
"Extract review": {
"main": [
[
{
"node": "Information Extractor",
"type": "main",
"index": 0
}
]
]
},
"Set Parameters": {
"main": [
[
{
"node": "Get reviews",
"type": "main",
"index": 0
}
]
]
},
"Get Google Sheets": {
"main": [
[
{
"node": "Get rows",
"type": "main",
"index": 0
}
]
]
},
"Get Single review": {
"main": [
[
{
"node": "Extract review",
"type": "main",
"index": 0
}
]
]
},
"OpenAI Chat Model": {
"ai_languageModel": [
[
{
"node": "Sentiment Analysis",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Sentiment Analysis": {
"main": [
[
{
"node": "Update sheet",
"type": "main",
"index": 0
}
],
[
{
"node": "Update sheet",
"type": "main",
"index": 0
}
],
[
{
"node": "Update sheet",
"type": "main",
"index": 0
}
]
]
},
"DeepSeek Chat Model": {
"ai_languageModel": [
[
{
"node": "Information Extractor",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Information Extractor": {
"main": [
[
{
"node": "Sentiment Analysis",
"type": "main",
"index": 0
}
]
]
},
"When clicking \u2018Test workflow\u2019": {
"main": [
[
{
"node": "Set Parameters",
"type": "main",
"index": 0
}
]
]
}
}
}
Credentials you'll need
Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.
googleSheetsOAuth2ApiopenAiApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
How this works
Gain quick insights into customer opinions by automatically scraping recent reviews from Trustpilot and analysing their sentiment using OpenAI's advanced models, helping businesses monitor brand reputation without manual effort. This workflow suits marketing teams or customer service managers seeking to track feedback trends efficiently. The key step involves feeding extracted review texts into OpenAI's sentiment analysis node, which categorises emotions and highlights key themes for actionable reports.
Use this workflow when you need periodic sentiment checks on competitor or own company reviews, such as weekly summaries exported to Google Sheets for team review. Avoid it for real-time monitoring, as the event-driven trigger suits batch processing rather than instant alerts; opt for simpler tools if scraping large volumes risks rate limits on Trustpilot. Common variations include adding filters for specific review ratings or integrating with email notifications for negative sentiment spikes.
About this workflow
Scrape Trustpilot Reviews with DeepSeek, Analyze Sentiment with OpenAI. Uses splitOut, informationExtractor, manualTrigger, limit. Event-driven trigger; 20 nodes.
Source: https://github.com/Zie619/n8n-workflows — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
Scrape Trustpilot Reviews with DeepSeek, Analyze Sentiment with OpenAI. Uses splitOut, informationExtractor, manualTrigger, limit. Event-driven trigger; 20 nodes.
YouTube Comment Sentiment Analyzer. Uses splitOut, lmChatOpenAi, noOp, googleSheets. Event-driven trigger; 16 nodes.
Splitout Manual Export. Uses manualTrigger, splitOut, googleSheets, lmChatOpenAi. Event-driven trigger; 7 nodes.
This n8n template demonstrates how to use AI to score the all Resumes by matching it with Job profile
simon-apify-youtube-transcript-20250724-v1-ok. Uses httpRequest, lmChatOpenAi, chainLlm, executeWorkflowTrigger. Event-driven trigger; 19 nodes.