AutomationFlowsAI & RAG › Google Serp + Trends and Recommendations with Bright Data & Google Gemini

Google Serp + Trends and Recommendations with Bright Data & Google Gemini

ByRanjan Dailata @ranjancse on n8n.io

Google SERP Tracker + Trends and Recommendations is an AI-powered n8n workflow that extracts Google search results via Bright Data, parses them into structured JSON using Google Gemini, and generates actionable recommendations and search trends. It outputs CSV reports and sends…

Event trigger★★★★☆ complexityAI-powered23 nodesHTTP RequestChain LlmGoogle Gemini ChatOutput Parser StructuredRead Write File
AI & RAG Trigger: Event Nodes: 23 Complexity: ★★★★☆ AI nodes: yes Added:
Google Serp + Trends and Recommendations with Bright Data & Google Gemini — n8n workflow card showing HTTP Request, Chain Llm, Google Gemini Chat integration

This workflow corresponds to n8n.io template #4861 — we link there as the canonical source.

This workflow follows the Chainllm → 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 →

Download .json
{
  "id": "77EZJT0bcpkDEigw",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "Google SERP Tracker + Trends and Recommendations with Bright Data & Google Gemini",
  "tags": [
    {
      "id": "Kujft2FOjmOVQAmJ",
      "name": "Engineering",
      "createdAt": "2025-04-09T01:31:00.558Z",
      "updatedAt": "2025-04-09T01:31:00.558Z"
    },
    {
      "id": "ZOwtAMLepQaGW76t",
      "name": "Building Blocks",
      "createdAt": "2025-04-13T15:23:40.462Z",
      "updatedAt": "2025-04-13T15:23:40.462Z"
    },
    {
      "id": "ddPkw7Hg5dZhQu2w",
      "name": "AI",
      "createdAt": "2025-04-13T05:38:08.053Z",
      "updatedAt": "2025-04-13T05:38:08.053Z"
    }
  ],
  "nodes": [
    {
      "id": "89c87a2f-ee34-47e4-8efd-a4a95d02b052",
      "name": "When clicking \u2018Test workflow\u2019",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -380,
        -160
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "44ede7e3-f552-4a70-a538-9d124a4df315",
      "name": "Set input fields",
      "type": "n8n-nodes-base.set",
      "position": [
        -120,
        -160
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "0ac91db2-9848-40d4-b942-cd7288597ded",
              "name": "url",
              "type": "string",
              "value": "https://www.google.com/search"
            },
            {
              "id": "7142f0df-3c68-4ce0-8e9b-25101db31312",
              "name": "webhook_notification_url",
              "type": "string",
              "value": "https://webhook.site/c9118da2-1c54-460f-a83a-e5131b7098db"
            },
            {
              "id": "f5b7e10d-bcd8-439c-8e84-ba4af11f2cd2",
              "name": "search",
              "type": "string",
              "value": "best crm for the year 2025"
            },
            {
              "id": "3a0bcec2-ec6d-457f-87a5-b73f4d826b2a",
              "name": "zone",
              "type": "string",
              "value": "web_unlocker1"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "adb4eb44-ae8b-4a5e-bab8-afbf5b91e2a2",
      "name": "Perform Bright Data Web Request",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        120,
        -160
      ],
      "parameters": {
        "url": "https://api.brightdata.com/request",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "sendHeaders": true,
        "authentication": "genericCredentialType",
        "bodyParameters": {
          "parameters": [
            {
              "name": "zone",
              "value": "={{ $json.zone }}"
            },
            {
              "name": "url",
              "value": "={{ $json.url }}?q={{ encodeURI($json.search) }}"
            },
            {
              "name": "format",
              "value": "raw"
            }
          ]
        },
        "genericAuthType": "httpHeaderAuth",
        "headerParameters": {
          "parameters": [
            {
              "name": "Content-Type",
              "value": "application/json"
            }
          ]
        }
      },
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "97f0a53c-81cb-4593-afde-d770547b88d0",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        60,
        -440
      ],
      "parameters": {
        "color": 5,
        "width": 440,
        "height": 240,
        "content": "## LLM Usages\n\nGoogle Gemini LLM is being utilized for the structured data extraction handling."
      },
      "typeVersion": 1
    },
    {
      "id": "ca10a555-a4ef-4a2b-8ad1-9abf0e02e2d8",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -380,
        -800
      ],
      "parameters": {
        "color": 7,
        "width": 400,
        "height": 340,
        "content": "## Logo\n\n\n![logo](https://images.seeklogo.com/logo-png/43/1/brightdata-logo-png_seeklogo-439974.png)\n"
      },
      "typeVersion": 1
    },
    {
      "id": "1ccd35b4-d56a-4c42-88a1-59453a344700",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -380,
        -440
      ],
      "parameters": {
        "width": 400,
        "height": 240,
        "content": "## Note\n\nDeals with the Google SERP Tracker by utilizing the Bright Data and Google Gemini LLM for transforming the profile into a structured JSON response.\n\n**Please make sure to set the input fields node with the filtering criteria, Bright Data zone name, Webhook notification URL**\n\nTest Webhook using - https://webhook.site/\n"
      },
      "typeVersion": 1
    },
    {
      "id": "f9b7f382-4a5a-4ddf-a62c-ee83af913a21",
      "name": "Google Search Data Extractor",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "position": [
        340,
        -160
      ],
      "parameters": {
        "text": "=Extract the following:\n\nRank (position in list)\n\nTitle\n\nURL\n\nSnippet/description\n\nType (organic/ads/map)\n\n{{ $json.data }}\n\nMake sure to return the data in JSON",
        "batching": {},
        "promptType": "define",
        "hasOutputParser": true
      },
      "retryOnFail": true,
      "typeVersion": 1.7
    },
    {
      "id": "f10a9a84-3e4c-4ac0-957e-7fc7308c9fda",
      "name": "Code",
      "type": "n8n-nodes-base.code",
      "position": [
        700,
        -160
      ],
      "parameters": {
        "jsCode": "return $input.first().json.output.results"
      },
      "typeVersion": 2
    },
    {
      "id": "d3621752-4837-4e6f-82af-953e98901b24",
      "name": "Loop Over Items",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        920,
        -160
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 3
    },
    {
      "id": "2f607774-34cf-4b0e-9384-f7214e0896e5",
      "name": "Trends Data Extractor",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "position": [
        1180,
        -140
      ],
      "parameters": {
        "text": "=Extract the trends based on the title and spippet:\n\nTitle : {{ $json.title }}\nSnippet : {{ $json.snippet }}\n\nMake sure to return the data in JSON",
        "batching": {},
        "promptType": "define",
        "hasOutputParser": true
      },
      "retryOnFail": true,
      "typeVersion": 1.7
    },
    {
      "id": "551b645b-99d7-4824-ad69-290ea8105689",
      "name": "Google Gemini Chat Model for Google Search",
      "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
      "position": [
        340,
        20
      ],
      "parameters": {
        "options": {},
        "modelName": "models/gemini-2.0-flash-exp"
      },
      "credentials": {
        "googlePalmApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "9bd32bc8-9452-4e6a-ac54-e3a1317d196e",
      "name": "Structured Output Parser for Google Search",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        520,
        20
      ],
      "parameters": {
        "schemaType": "manual",
        "inputSchema": "{\n  \"$schema\": \"http://json-schema.org/schema#\",\n  \"title\": \"Search Results Schema\",\n  \"type\": \"object\",\n  \"properties\": {\n    \"results\": {\n      \"type\": \"array\",\n      \"items\": {\n        \"type\": \"object\",\n        \"required\": [\"rank\", \"title\", \"type\"],\n        \"properties\": {\n          \"rank\": {\n            \"type\": \"integer\",\n            \"minimum\": 1\n          },\n          \"title\": {\n            \"type\": \"string\"\n          },\n          \"url\": {\n            \"type\": \"string\",\n            \"format\": \"uri\"\n          },\n          \"snippet\": {\n            \"type\": \"string\"\n          },\n          \"type\": {\n            \"type\": \"string\",\n            \"enum\": [\"organic\", \"paid\", \"featured\"]\n          }\n        },\n        \"additionalProperties\": false\n      }\n    }\n  },\n  \"required\": [\"results\"],\n  \"additionalProperties\": false\n}\n"
      },
      "typeVersion": 1.2
    },
    {
      "id": "06d01c21-4054-4879-a060-70c1a1bac559",
      "name": "Google Gemini Chat Model for Trend Data",
      "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
      "position": [
        1180,
        40
      ],
      "parameters": {
        "options": {},
        "modelName": "models/gemini-2.0-flash-exp"
      },
      "credentials": {
        "googlePalmApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "7c89ac87-28b1-47f3-9f04-b2c05b1a483a",
      "name": "Recommendation Data Extractor",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "position": [
        1180,
        -560
      ],
      "parameters": {
        "text": "=Provide recommendations based on the title and spippet:\n\nTitle : {{ $json.title }}\nSnippet : {{ $json.snippet }}\n\nMake sure to return the data in JSON",
        "batching": {},
        "promptType": "define",
        "hasOutputParser": true
      },
      "retryOnFail": true,
      "typeVersion": 1.7
    },
    {
      "id": "f1f9cfac-28d0-40a9-9287-b11689570b53",
      "name": "Google Gemini Chat Model for Recommendation",
      "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
      "position": [
        1180,
        -380
      ],
      "parameters": {
        "options": {},
        "modelName": "models/gemini-2.0-flash-exp"
      },
      "credentials": {
        "googlePalmApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "c008d472-0982-4970-a017-73784c6916e7",
      "name": "Structured Output Parser for Recommendation",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        1360,
        -380
      ],
      "parameters": {
        "schemaType": "manual",
        "inputSchema": "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"title\": \"CRM Recommendations Schema\",\n  \"type\": \"object\",\n  \"properties\": {\n    \"recommendations\": {\n      \"type\": \"array\",\n      \"items\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"type\": {\n            \"type\": \"string\",\n            \"enum\": [\"Software\", \"Action\", \"Consideration\", \"Research\", \"Focus\"],\n            \"description\": \"The category or nature of the recommendation\"\n          },\n          \"name\": {\n            \"type\": \"string\",\n            \"description\": \"The name\"\n          },\n          \"description\": {\n            \"type\": \"string\",\n            \"description\": \"Explanation or reason behind the recommendation\"\n          },\n          \"reason\": {\n            \"type\": \"string\",\n            \"description\": \"A detailed reason for recommendation (mainly used for Software type)\"\n          }\n        }\n      }\n    }\n  },\n  \"required\": [\"recommendations\"]\n}\n"
      },
      "typeVersion": 1.2
    },
    {
      "id": "113b9477-cb62-47b9-8f43-f49247c7053d",
      "name": "Structured Output Parser for Trend Data",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        1360,
        40
      ],
      "parameters": {
        "schemaType": "manual",
        "inputSchema": "{\n  \"$schema\": \"https://json-schema.org/schema\",\n  \"title\": \"Trends Schema\",\n  \"type\": \"object\",\n  \"properties\": {\n    \"trends\": {\n      \"type\": \"array\",\n      \"items\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"trend\": {\n            \"type\": \"string\",\n            \"description\": \"The name or label of the CRM trend\"\n          },\n          \"description\": {\n            \"type\": \"string\",\n            \"description\": \"A short explanation of the trend\"\n          }\n        },\n        \"required\": [\"trend\", \"description\"],\n        \"additionalProperties\": false\n      }\n    }\n  },\n  \"required\": [\"trends\"],\n  \"additionalProperties\": false\n}\n"
      },
      "typeVersion": 1.2
    },
    {
      "id": "6b6bb9f4-2836-469d-b81b-90cddf5d0d6c",
      "name": "Code for Recommendations",
      "type": "n8n-nodes-base.code",
      "position": [
        1580,
        -560
      ],
      "parameters": {
        "jsCode": "return $input.first().json.output.recommendations"
      },
      "typeVersion": 2
    },
    {
      "id": "cb71a4e9-55ff-4194-8e5c-be96f3971a4e",
      "name": "Code for Trends",
      "type": "n8n-nodes-base.code",
      "position": [
        1600,
        -140
      ],
      "parameters": {
        "jsCode": "return $input.first().json.output.trends"
      },
      "typeVersion": 2
    },
    {
      "id": "bfdac6af-7fa9-42d9-8931-029291202a35",
      "name": "Convert to File for Trends",
      "type": "n8n-nodes-base.convertToFile",
      "position": [
        1840,
        -140
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 1.1
    },
    {
      "id": "28d26067-622b-4115-ab25-79bf8802acdd",
      "name": "Convert to File for Recommendations",
      "type": "n8n-nodes-base.convertToFile",
      "position": [
        1820,
        -560
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 1.1
    },
    {
      "id": "0fb2daca-d998-432e-901a-001f750822db",
      "name": "Write the trends csv file to disk",
      "type": "n8n-nodes-base.readWriteFile",
      "position": [
        2080,
        -140
      ],
      "parameters": {
        "options": {},
        "fileName": "=d:\\Google_SERP_Trends_Response_{{ new Date().toISOString().replace(/[:.]/g, '-')}}.csv",
        "operation": "write"
      },
      "typeVersion": 1
    },
    {
      "id": "b0164de9-50a4-4aba-a680-a392eaba5765",
      "name": "Write the recommendations csv file to disk",
      "type": "n8n-nodes-base.readWriteFile",
      "position": [
        2060,
        -560
      ],
      "parameters": {
        "options": {},
        "fileName": "=d:\\Google_SERP_Recommendations_Response_{{ new Date().toISOString().replace(/[:.]/g, '-')}}.csv",
        "operation": "write"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "7842a7f6-ab16-42c6-a209-1f313ed15376",
  "connections": {
    "Code": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Code for Trends": {
      "main": [
        [
          {
            "node": "Convert to File for Trends",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop Over Items": {
      "main": [
        [],
        [
          {
            "node": "Trends Data Extractor",
            "type": "main",
            "index": 0
          },
          {
            "node": "Recommendation Data Extractor",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set input fields": {
      "main": [
        [
          {
            "node": "Perform Bright Data Web Request",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Trends Data Extractor": {
      "main": [
        [
          {
            "node": "Code for Trends",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Code for Recommendations": {
      "main": [
        [
          {
            "node": "Convert to File for Recommendations",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Convert to File for Trends": {
      "main": [
        [
          {
            "node": "Write the trends csv file to disk",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Google Search Data Extractor": {
      "main": [
        [
          {
            "node": "Code",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Recommendation Data Extractor": {
      "main": [
        [
          {
            "node": "Code for Recommendations",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Perform Bright Data Web Request": {
      "main": [
        [
          {
            "node": "Google Search Data Extractor",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "When clicking \u2018Test workflow\u2019": {
      "main": [
        [
          {
            "node": "Set input fields",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Write the trends csv file to disk": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Convert to File for Recommendations": {
      "main": [
        [
          {
            "node": "Write the recommendations csv file to disk",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Google Gemini Chat Model for Trend Data": {
      "ai_languageModel": [
        [
          {
            "node": "Trends Data Extractor",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser for Trend Data": {
      "ai_outputParser": [
        [
          {
            "node": "Trends Data Extractor",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Google Gemini Chat Model for Google Search": {
      "ai_languageModel": [
        [
          {
            "node": "Google Search Data Extractor",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser for Google Search": {
      "ai_outputParser": [
        [
          {
            "node": "Google Search Data Extractor",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Google Gemini Chat Model for Recommendation": {
      "ai_languageModel": [
        [
          {
            "node": "Recommendation Data Extractor",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser for Recommendation": {
      "ai_outputParser": [
        [
          {
            "node": "Recommendation Data Extractor",
            "type": "ai_outputParser",
            "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.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

Google SERP Tracker + Trends and Recommendations is an AI-powered n8n workflow that extracts Google search results via Bright Data, parses them into structured JSON using Google Gemini, and generates actionable recommendations and search trends. It outputs CSV reports and sends…

Source: https://n8n.io/workflows/4861/ — original creator credit. Request a take-down →

More AI & RAG workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

AI & RAG

Community nodes can only be installed on self-hosted instances of n8n.

HTTP Request, Google Gemini Chat, Chain Llm +4
AI & RAG

Community nodes can only be installed on self-hosted instances of n8n.

Google Gemini Chat, Chain Llm, Output Parser Structured +4
AI & RAG

Community nodes can only be installed on self-hosted instances of n8n.

N8N Nodes Mcp, Chain Llm, Output Parser Structured +3
AI & RAG

Community nodes can only be installed on self-hosted instances of n8n.

N8N Nodes Mcp, Agent, Google Gemini Chat +5
AI & RAG

Content - Newsletter Agent. Uses formTrigger, chainLlm, outputParserStructured, httpRequest. Event-driven trigger; 87 nodes.

Form Trigger, Chain Llm, Output Parser Structured +7