This workflow corresponds to n8n.io template #4835 — we link there as the canonical source.
This workflow follows the Agent → 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": "wPoAbM9MyEUmG20lcRWLB",
"name": "Enrich Company Firmographic Data in Google Sheets with Explorium MCP",
"tags": [],
"nodes": [
{
"id": "e88652cf-cf09-4799-b664-45af4e314e83",
"name": "Google Sheets Trigger",
"type": "n8n-nodes-base.googleSheetsTrigger",
"position": [
-704,
124
],
"parameters": {
"options": {},
"pollTimes": {
"item": [
{
"mode": "everyMinute"
}
]
},
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1bAMUxQ2UCU_rd1khEkNZ0RKqmBzal7eKk90-AnVScQE/edit#gid=0",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1bAMUxQ2UCU_rd1khEkNZ0RKqmBzal7eKk90-AnVScQE",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1bAMUxQ2UCU_rd1khEkNZ0RKqmBzal7eKk90-AnVScQE/edit?usp=drivesdk",
"cachedResultName": "n8n test"
}
},
"typeVersion": 1
},
{
"id": "04290361-ad81-4f1a-b267-3d707f8cd253",
"name": "Filter Valid Rows",
"type": "n8n-nodes-base.if",
"position": [
-480,
124
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 1,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "8c7d5b8a-4569-4c8f-b5e8-6c5f5e5c5e5c",
"operator": {
"type": "string",
"operation": "notEmpty"
},
"leftValue": "={{ $json.name }}",
"rightValue": ""
},
{
"id": "9d8e6c9b-5670-5d9f-c6f9-7d6g6f6d6f6d",
"operator": {
"type": "string",
"operation": "notEmpty"
},
"leftValue": "={{ $json.website }}",
"rightValue": ""
}
]
}
},
"typeVersion": 2
},
{
"id": "8bf68e42-a28c-4769-9e33-e0633668a1d9",
"name": "Loop Over Items",
"type": "n8n-nodes-base.splitInBatches",
"position": [
-256,
124
],
"parameters": {
"options": {}
},
"typeVersion": 3
},
{
"id": "625db31b-0236-4897-9ddd-6aba1c5672bf",
"name": "AI Agent",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
24,
0
],
"parameters": {
"text": "=You will be provided with company information including:\n\nName: {{ $json.name }}\nDomain: {{ $json.website }}\n\nYour task is to research and extract the following key business metrics for this company:\nRequired Data Points:\n- Name (keep the same as provided)\n- Website (keep the same as provided)\n- Annual revenue (as business_id first, then get the range)\n- Number of employees (range)\n- NAICS code\n\nUse the Explorium tools to:\n1. First use match-business to find the business ID\n2. Then use enrich-businesses-firmographics to get the company details\n\nReturn the data exactly in this format.",
"options": {},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 1.6
},
{
"id": "225f4f5d-fe00-4747-9181-a9ac4dcb1aa8",
"name": "Anthropic Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatAnthropic",
"position": [
-32,
224
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "claude-sonnet-4-5-20250929",
"cachedResultName": "Claude Sonnet 4.5"
},
"options": {}
},
"credentials": {
"anthropicApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.3
},
{
"id": "0bab3c6b-51ad-44d5-8f48-f4108eeb6b54",
"name": "Code - Format Output",
"type": "n8n-nodes-base.code",
"position": [
432,
0
],
"parameters": {
"jsCode": "// Simply pass through the AI output with proper formatting\nreturn {\n name: $json.output.name || $json.name,\n website: $json.output.website || $json.website,\n business_id: $json.output.business_id || '',\n naics: $json.output.naics || '',\n number_of_employees_range: $json.output.number_of_employees_range || '',\n yearly_revenue_range: $json.output.yearly_revenue_range || ''\n};"
},
"typeVersion": 2
},
{
"id": "a76dbb00-24de-4cf2-b5ef-35839b7e68b3",
"name": "Update Company Row",
"type": "n8n-nodes-base.googleSheets",
"position": [
656,
124
],
"parameters": {
"columns": {
"value": {},
"schema": [
{
"id": "name",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "website",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "website",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "business_id",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "business_id",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "naics",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "naics",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "number_of_employees_range",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "number_of_employees_range",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "yearly_revenue_range",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "yearly_revenue_range",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "autoMapInputData",
"matchingColumns": [
"name"
]
},
"options": {},
"operation": "appendOrUpdate",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1bAMUxQ2UCU_rd1khEkNZ0RKqmBzal7eKk90-AnVScQE/edit#gid=0",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1bAMUxQ2UCU_rd1khEkNZ0RKqmBzal7eKk90-AnVScQE",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1bAMUxQ2UCU_rd1khEkNZ0RKqmBzal7eKk90-AnVScQE/edit?usp=drivesdk",
"cachedResultName": "n8n test"
}
},
"typeVersion": 4.5
},
{
"id": "09191cb1-d819-4cd0-b0c1-01d6d4124b31",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-704,
400
],
"parameters": {
"color": 5,
"width": 460,
"height": 280,
"content": "# Enrich Company Data from Google Sheets with Explorium MCP\n\nThis workflow automatically enriches company data when new rows are added or when the name/website fields are updated in your Google Sheet."
},
"typeVersion": 1
},
{
"id": "6190f78e-7d44-496d-9596-088fdca13584",
"name": "Output Parser",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
224,
224
],
"parameters": {
"jsonSchemaExample": "{\n \"name\": \"Microsoft Corporation\",\n \"website\": \"https://www.microsoft.com\",\n \"business_id\": \"a34bacf839b923770b2c360eefa26748\",\n \"naics\": \"511210\",\n \"number_of_employees_range\": \"10001+\",\n \"yearly_revenue_range\": \"100B-1T\"\n}"
},
"typeVersion": 1.2
},
{
"id": "d9e5f0fb-e66f-47a3-b0e0-92df54eb9450",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-208,
400
],
"parameters": {
"width": 460,
"height": 280,
"content": "### Workflow Structure:\n\n**Google Sheets Trigger** \u2192 **Filter Valid Rows** \u2192 **Loop Over Items**\n \u2193\n **AI Agent**\n \u2193\n **Code - Format Output**\n \u2193\n **Update Company Row**\n \u2193\n (back to Loop Over Items)"
},
"typeVersion": 1
},
{
"id": "ffc1473a-158f-4d0e-831e-32f172701d60",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
304,
400
],
"parameters": {
"color": 4,
"width": 460,
"height": 460,
"content": "### How the Loop Works:\n1. Loop Over Items splits the batch (size 1)\n2. Sends one item to AI Agent\n3. AI Agent enriches the data\n4. Code formats the output\n5. Google Sheets updates the row\n6. Flow returns to Loop Over Items for next item\n7. When all items are processed, loop ends\n\n### Key Points:\n- Each row is processed individually\n- The loop continues until all rows are done\n- Failed enrichments won't stop other rows\n\n### Testing:\n1. Add multiple rows with company names and websites\n2. Trigger the workflow\n3. Watch each row get processed sequentially\n4. All rows should be updated with enriched data"
},
"typeVersion": 1
},
{
"id": "13f5c31b-be3b-4a09-b983-f33de15c4c2f",
"name": "MCP Client",
"type": "@n8n/n8n-nodes-langchain.mcpClientTool",
"position": [
96,
224
],
"parameters": {
"options": {},
"endpointUrl": "https://mcp-n8n.explorium.ai/mcp",
"authentication": "headerAuth"
},
"credentials": {
"httpHeaderAuth": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "",
"connections": {
"AI Agent": {
"main": [
[
{
"node": "Code - Format Output",
"type": "main",
"index": 0
}
]
]
},
"MCP Client": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Output Parser": {
"ai_outputParser": [
[
{
"node": "AI Agent",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"Loop Over Items": {
"main": [
[],
[
{
"node": "AI Agent",
"type": "main",
"index": 0
}
]
]
},
"Filter Valid Rows": {
"main": [
[
{
"node": "Loop Over Items",
"type": "main",
"index": 0
}
]
]
},
"Update Company Row": {
"main": [
[
{
"node": "Loop Over Items",
"type": "main",
"index": 0
}
]
]
},
"Anthropic Chat Model": {
"ai_languageModel": [
[
{
"node": "AI Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Code - Format Output": {
"main": [
[
{
"node": "Update Company Row",
"type": "main",
"index": 0
}
]
]
},
"Google Sheets Trigger": {
"main": [
[
{
"node": "Filter Valid Rows",
"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.
anthropicApihttpHeaderAuth
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Google Sheets Company Enrichment with Explorium MCP
Source: https://n8n.io/workflows/4835/ — 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 template enables natural-language-driven automation using Bright Data's MCP tools, triggered directly by new leads in HubSpot. It dynamically extracts and executes the right tool based on lead co
This n8n workflow automates company research by combining Explorium’s MCP server, web scraping tools, and an AI agent. Results are written to a Google Sheet for easy use in GTM, product analysis, or c
This automation is designed to help you generate AI-powered music tracks, cover art, and fully rendered music videos — all triggered from a simple Telegram chat and managed via Google Sheets.
This workflow is designed for marketers, content creators, agencies, and solo founders who want to publish long‑form posts with visuals on autopilot using n8n and AI agents.
Automated Book Generation System. Uses googleSheetsTrigger, gmail, lmChatOpenAi, outputParserStructured. Event-driven trigger; 43 nodes.