This workflow corresponds to n8n.io template #16051 — we link there as the canonical source.
This workflow follows the Apifyn8N Nodes Apify → Google Sheets 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": "SNTDFoVXuLb0OsHg",
"name": "Online Review Monitoring (Apify \u2192 Sheets \u2192 Gemini)",
"tags": [],
"nodes": [
{
"id": "239510b8-ab37-4c3b-996c-2de42ed330f2",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"position": [
2560,
48
],
"parameters": {
"color": 7,
"width": 400,
"height": 368,
"content": "## Merge and notify\n\nCombines the outputs from all three Google Sheets update branches, then sends a Gmail message once the merged review-monitoring results are ready."
},
"typeVersion": 1
},
{
"id": "0c7403b8-3206-45c4-b6a5-81112f499f1b",
"name": "Fetch Google Maps Reviews",
"type": "@apify/n8n-nodes-apify.apify",
"position": [
2064,
32
],
"parameters": {
"actorId": {
"__rl": true,
"mode": "list",
"value": "Xb8osYTtOjlsgI6k9",
"cachedResultUrl": "https://console.apify.com/actors/Xb8osYTtOjlsgI6k9/input",
"cachedResultName": "Google Maps Reviews Scraper (compass/Google-Maps-Reviews-Scraper)"
},
"timeout": {},
"operation": "Run actor and get dataset",
"customBody": "{\n \"language\": \"en\",\n \"maxReviews\": 50,\n \"personalData\": true,\n \"reviewsStartDate\": \"2026-01-01\",\n \"startUrls\": [\n {\n \"url\": \"https://www.google.com/maps/place/San+Carlo+Mala+Strana/@50.0870868,14.4002294,17z/data=!3m1!4b1!4m6!3m5!1s0x470b94e367240611:0x7cb0bfdb21a4cd8d!8m2!3d50.0870868!4d14.4028043!16s%2Fg%2F11b8r7d48b?entry=ttu&g_ep=EgoyMDI2MDUwMi4wIKXMDSoASAFQAw%3D%3D\"\n },\n {\n \"url\": \"https://www.google.com/maps/place/San+Carlo+Dittrichova/@50.0761995,14.4129542,17z/data=!4m14!1m7!3m6!1s0x470b94f6b4f5bb33:0x606ee74f5e93c790!2sSan+Carlo+Dittrichova!8m2!3d50.0761995!4d14.4155291!16s%2Fg%2F11b8b2p43l!3m5!1s0x470b94f6b4f5bb33:0x606ee74f5e93c790!8m2!3d50.0761995!4d14.4155291!16s%2Fg%2F11b8b2p43l?entry=ttu&g_ep=EgoyMDI2MDUwMi4wIKXMDSoASAFQAw%3D%3D\"\n }\n ]\n}",
"actorSource": "store",
"authentication": "apifyOAuth2Api"
},
"credentials": {
"apifyOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "05510c26-22b6-481f-babd-23eea86356e5",
"name": "Fetch Yelp Reviews",
"type": "@apify/n8n-nodes-apify.apify",
"position": [
2064,
384
],
"parameters": {
"actorId": {
"__rl": true,
"mode": "list",
"value": "c7MfRDqfYvZWOtMrJ",
"cachedResultUrl": "https://console.apify.com/actors/c7MfRDqfYvZWOtMrJ/input",
"cachedResultName": "Fast Yelp Reviews Scraper API | Extract Review Text & Ratings (agents/yelp-reviews)"
},
"timeout": {},
"operation": "Run actor and get dataset",
"customBody": "{\n \"maxReviewsPerUrl\": 50,\n \"startUrls\": [\n {\n \"url\": \"https://www.yelp.com/biz/san-carlo-praha-2?osq=San+Carlo\"\n },\n {\n \"url\": \"https://www.yelp.com/biz/san-carlo-praha-3?osq=San+Carlo\"\n }\n ]\n}",
"actorSource": "store",
"authentication": "apifyOAuth2Api"
},
"credentials": {
"apifyOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "93d8e8ed-b644-452e-8ee9-37fac7f94d2e",
"name": "Fetch Tripadvisor Reviews",
"type": "@apify/n8n-nodes-apify.apify",
"position": [
2064,
736
],
"parameters": {
"actorId": {
"__rl": true,
"mode": "list",
"value": "Hvp4YfFGyLM635Q2F",
"cachedResultUrl": "https://console.apify.com/actors/Hvp4YfFGyLM635Q2F/input",
"cachedResultName": "Tripadvisor Reviews Scraper (maxcopell/tripadvisor-reviews)"
},
"timeout": {},
"operation": "Run actor and get dataset",
"customBody": "{\n \"maxItemsPerQuery\": 50,\n \"reviewRatings\": [\n \"ALL_REVIEW_RATINGS\"\n ],\n \"reviewsLanguages\": [\n \"ALL_REVIEW_LANGUAGES\"\n ],\n \"scrapeReviewerInfo\": true,\n \"startUrls\": [\n {\n \"url\": \"http://tripadvisor.com/Restaurant_Review-g274707-d7938899-Reviews-San_Carlo_Dittrichova-Prague_Bohemia.html\"\n },\n {\n \"url\": \"https://www.tripadvisor.com/Restaurant_Review-g274707-d13340787-Reviews-San_Carlo_Mala_Strana-Prague_Bohemia.html\"\n }\n ]\n}",
"actorSource": "store",
"authentication": "apifyOAuth2Api"
},
"credentials": {
"apifyOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "f5a24a89-1454-467f-b56e-604760faba38",
"name": "Update Google Maps in Sheets",
"type": "n8n-nodes-base.googleSheets",
"position": [
2352,
32
],
"parameters": {
"columns": {
"value": {
"Date": "={{ $json.publishedAtDate }}",
"Text": "={{ $json.text }}",
"Author": "={{ $json.name }}",
"Location URL": "={{ $json.searchString }}",
"Text translated": "={{ $json.textTranslated }}"
},
"schema": [
{
"id": "Location URL",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Location URL",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Date",
"type": "string",
"display": true,
"required": false,
"displayName": "Date",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Author",
"type": "string",
"display": true,
"required": false,
"displayName": "Author",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Text",
"type": "string",
"display": true,
"required": false,
"displayName": "Text",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Text translated",
"type": "string",
"display": true,
"required": false,
"displayName": "Text translated",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"Location URL"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "appendOrUpdate",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1Y6xJcD_x-KWiPM5aOTsHMiiomlMu1oAAonyu-22hKSw/edit#gid=0",
"cachedResultName": "Google Maps"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1Y6xJcD_x-KWiPM5aOTsHMiiomlMu1oAAonyu-22hKSw",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1Y6xJcD_x-KWiPM5aOTsHMiiomlMu1oAAonyu-22hKSw/edit?usp=drivesdk",
"cachedResultName": "Online review monitoring"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.7
},
{
"id": "0e75d2d1-66ac-4113-9699-583f6f893390",
"name": "Update Yelp in Sheets",
"type": "n8n-nodes-base.googleSheets",
"position": [
2352,
384
],
"parameters": {
"columns": {
"value": {
"Date": "={{ $json.scrapedAt }}",
"Text": "={{ $json.message }}",
"Author": "={{ $json.reviewer.name }}",
"Location URL": "={{ $json.inputSource }}"
},
"schema": [
{
"id": "Location URL",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Location URL",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Date",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Date",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Author",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Author",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Text",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Text",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Text translated",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Text translated",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"Location URL"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "appendOrUpdate",
"sheetName": {
"__rl": true,
"mode": "list",
"value": 446667629,
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1Y6xJcD_x-KWiPM5aOTsHMiiomlMu1oAAonyu-22hKSw/edit#gid=446667629",
"cachedResultName": "Yelp"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1Y6xJcD_x-KWiPM5aOTsHMiiomlMu1oAAonyu-22hKSw",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1Y6xJcD_x-KWiPM5aOTsHMiiomlMu1oAAonyu-22hKSw/edit?usp=drivesdk",
"cachedResultName": "Online review monitoring"
}
},
"typeVersion": 4.7
},
{
"id": "073d561c-13ef-45fc-be5e-660bc6bc81d1",
"name": "Update Tripadvisor in Sheets",
"type": "n8n-nodes-base.googleSheets",
"position": [
2352,
736
],
"parameters": {
"columns": {
"value": {
"Date": "={{ $json.publishedDate }}",
"Text": "={{ $json.text }}",
"Author": "={{ $json.user.name }}",
"Location URL": "={{ $json.url }}"
},
"schema": [
{
"id": "Location URL",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Location URL",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Date",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Date",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Author",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Author",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Text",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Text",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Text translated",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Text translated",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"Location URL"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "appendOrUpdate",
"sheetName": {
"__rl": true,
"mode": "list",
"value": 1521687947,
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1Y6xJcD_x-KWiPM5aOTsHMiiomlMu1oAAonyu-22hKSw/edit#gid=1521687947",
"cachedResultName": "Sheet3"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1Y6xJcD_x-KWiPM5aOTsHMiiomlMu1oAAonyu-22hKSw",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1Y6xJcD_x-KWiPM5aOTsHMiiomlMu1oAAonyu-22hKSw/edit?usp=drivesdk",
"cachedResultName": "Online review monitoring"
}
},
"typeVersion": 4.7
},
{
"id": "436bf3ef-8a14-4b4e-a7b3-84ac41c5cf37",
"name": "Merge All Reviews",
"type": "n8n-nodes-base.merge",
"position": [
2608,
224
],
"parameters": {
"numberInputs": 3
},
"typeVersion": 3.2
},
{
"id": "dda35d67-95ad-4f1a-9020-93cd9a34a35d",
"name": "Every 4 Days at 7am",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
1728,
240
],
"parameters": {
"rule": {
"interval": [
{
"daysInterval": 4,
"triggerAtHour": 7
}
]
}
},
"typeVersion": 1.3
},
{
"id": "9fee9579-e8f0-45ad-9386-dcce710d42d7",
"name": "Send Email Notification",
"type": "n8n-nodes-base.gmail",
"position": [
2816,
240
],
"parameters": {
"message": "Your reviews are ready for analysis.",
"options": {},
"subject": "Workflow complete."
},
"executeOnce": true,
"typeVersion": 2.2
},
{
"id": "297060dd-b4a0-4a65-8ff1-4190dbbf1288",
"name": "Sticky Note6",
"type": "n8n-nodes-base.stickyNote",
"position": [
1120,
-128
],
"parameters": {
"width": 480,
"height": 896,
"content": "## Online Review Monitoring (Apify \u2192 Sheets \u2192 Gmail)\n\n### How it works\n\nThis workflow runs on a schedule to monitor online reviews from Google Maps, Yelp, and Tripadvisor using separate Apify extraction branches. Each branch writes its results into Google Sheets, then the outputs are merged. After all review-source branches complete, the workflow sends a Gmail notification with the combined result context.\n\n### Setup steps\n\n- Configure the Schedule Trigger with the desired monitoring frequency.\n- Set up Apify credentials and, input parameters, and target business/listing for Google Maps, Yelp, and Tripadvisor.\n- Make a copy of the [Google Sheet template](https://docs.google.com/spreadsheets/d/1ADgjq0NGz3rlKJPKuNfXjbae7Uh90sGjCcs7RoD-I8k/edit?usp=sharing)\n- Connect Google Sheets credentials and choose the spreadsheet, sheet tabs, key columns, and field mappings for each append-or-update node.\n- Connect Gmail credentials and configure the recipient, subject, and message body for the notification email.\n\n### Customization\n\nAdjust the Apify Actor inputs to monitor different businesses or review sources, change the Google Sheets mappings to match your reporting schema, or customize the Gmail message to summarize new or updated reviews."
},
"typeVersion": 1
},
{
"id": "a5f6d544-01e9-4211-924c-6959b0d3496b",
"name": "Sticky Note7",
"type": "n8n-nodes-base.stickyNote",
"position": [
1680,
0
],
"parameters": {
"color": 7,
"height": 400,
"content": "## Scheduled workflow start\n\nTriggers the review monitoring workflow on a configured schedule and fans out execution to the three review-source lanes."
},
"typeVersion": 1
},
{
"id": "b7619868-aa8f-47b7-819a-e869c6a90627",
"name": "Sticky Note8",
"type": "n8n-nodes-base.stickyNote",
"position": [
2000,
-128
],
"parameters": {
"color": 7,
"width": 496,
"height": 336,
"content": "## Google Maps review sync\n\nFetches Google Maps reviews with Apify and appends or updates the corresponding rows in Google Sheets."
},
"typeVersion": 1
},
{
"id": "f90b39ba-771e-4d66-9f70-0c3c100d726f",
"name": "Sticky Note9",
"type": "n8n-nodes-base.stickyNote",
"position": [
2000,
224
],
"parameters": {
"color": 7,
"width": 496,
"height": 320,
"content": "## Yelp review sync\n\nFetches Yelp reviews with Apify and writes them into Google Sheets."
},
"typeVersion": 1
},
{
"id": "15bcd4fb-4da1-4ef2-b3fe-c7ceb3abb52e",
"name": "Sticky Note10",
"type": "n8n-nodes-base.stickyNote",
"position": [
2000,
576
],
"parameters": {
"color": 7,
"width": 496,
"height": 352,
"content": "## Tripadvisor review sync\n\nFetches Tripadvisor Reviews with Apify and appends or updates the matching rows in Google Sheets."
},
"typeVersion": 1
}
],
"active": false,
"settings": {
"binaryMode": "separate",
"executionOrder": "v1"
},
"versionId": "63b9584a-5708-49e6-86dd-f70bdca8c504",
"connections": {
"Merge All Reviews": {
"main": [
[
{
"node": "Send Email Notification",
"type": "main",
"index": 0
}
]
]
},
"Fetch Yelp Reviews": {
"main": [
[
{
"node": "Update Yelp in Sheets",
"type": "main",
"index": 0
}
]
]
},
"Every 4 Days at 7am": {
"main": [
[
{
"node": "Fetch Google Maps Reviews",
"type": "main",
"index": 0
},
{
"node": "Fetch Yelp Reviews",
"type": "main",
"index": 0
},
{
"node": "Fetch Tripadvisor Reviews",
"type": "main",
"index": 0
}
]
]
},
"Update Yelp in Sheets": {
"main": [
[
{
"node": "Merge All Reviews",
"type": "main",
"index": 1
}
]
]
},
"Fetch Google Maps Reviews": {
"main": [
[
{
"node": "Update Google Maps in Sheets",
"type": "main",
"index": 0
}
]
]
},
"Fetch Tripadvisor Reviews": {
"main": [
[
{
"node": "Update Tripadvisor in Sheets",
"type": "main",
"index": 0
}
]
]
},
"Update Google Maps in Sheets": {
"main": [
[
{
"node": "Merge All Reviews",
"type": "main",
"index": 0
}
]
]
},
"Update Tripadvisor in Sheets": {
"main": [
[
{
"node": "Merge All Reviews",
"type": "main",
"index": 2
}
]
]
}
}
}
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.
apifyOAuth2ApigoogleSheetsOAuth2Api
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
This workflow runs every four days to scrape Google Maps, Yelp, and Tripadvisor reviews via Apify, stores them in dedicated Google Sheets tabs, and then sends a Gmail notification when the collection run finishes. Runs on a schedule every four days at 07:00. Uses Apify’s Google…
Source: https://n8n.io/workflows/16051/ — 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.
This n8n workflow fully automates the outbound lead generation process using LinkedIn, Apify, OpenAI, Google Sheets, and Gmail.
Founder's Discovery Engine. Uses googleSheets, googleDrive, httpRequest, gmail. Scheduled trigger; 18 nodes.
Know what your competitors are doing every morning before your first meeting. This workflow visits each competitor website daily, uses OpenAI to analyse it for strategic signals, and emails your team
Take full control of your expected loyalty points. This workflow helps you log every coupon and the points you should receive, store proof of purchase, and get a weekly summary so you can quickly spot
Who's this for Finance teams, AI developers, product managers, and business owners who need to monitor and control OpenAI API costs across different models and projects. If you're using GPT-4, GPT-3.5