AutomationFlowsData & Sheets › Enrich Domains with Similarweb Traffic Analytics in Google Sheets & Airtable

Enrich Domains with Similarweb Traffic Analytics in Google Sheets & Airtable

ByAvkash Kakdiya @itechnotion on n8n.io

This workflow starts whenever a new domain is added to a Google Sheet. It cleans the domain, fetches traffic insights from SimilarWeb, extracts the most relevant metrics, and updates the sheet with enriched data. Optionally, it can also send this information to Airtable for…

Event trigger★★★★☆ complexity9 nodesGoogle Sheets TriggerHTTP RequestGoogle SheetsAirtable
Data & Sheets Trigger: Event Nodes: 9 Complexity: ★★★★☆ Added:

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

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

Download .json
{
  "meta": {
    "templateCredsSetupCompleted": false
  },
  "name": "14 - Domain Traffic Enricher",
  "tags": [],
  "nodes": [
    {
      "id": "541d74fd-8229-442d-8805-3485c0f183ba",
      "name": "\ud83d\udfe2 Sheet Trigger: New Domain",
      "type": "n8n-nodes-base.googleSheetsTrigger",
      "position": [
        -1740,
        60
      ],
      "parameters": {
        "event": "rowAdded",
        "options": {},
        "pollTimes": {
          "item": [
            {
              "mode": "everyMinute"
            }
          ]
        },
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/YOUR_GOOGLE_SHEET_ID_HERE/edit#gid=0",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "YOUR_GOOGLE_SHEET_ID_HERE",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/YOUR_GOOGLE_SHEET_ID_HERE/edit?usp=drivesdk",
          "cachedResultName": "Companies List"
        }
      },
      "credentials": {
        "googleSheetsTriggerOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "cc51b573-cf22-44ea-8c77-60e12187b348",
      "name": "\ud83e\uddfc Clean Domain URL",
      "type": "n8n-nodes-base.set",
      "position": [
        -1520,
        60
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "domain_cleanup",
              "name": "domain",
              "type": "string",
              "value": "={{ $json.List.replace(/^https?:\\/\\//, '').replace(/^www\\./, '').replace(/\\/$/, '') }}"
            },
            {
              "id": "row_number",
              "name": "rowNumber",
              "type": "number",
              "value": "={{ $json.row_number }}"
            }
          ]
        }
      },
      "typeVersion": 3.3
    },
    {
      "id": "bbd629ed-94fa-4cfd-8274-075890405f6d",
      "name": "\ud83c\udf10 Fetch Analysis (SimilarWeb API)",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -1300,
        60
      ],
      "parameters": {
        "url": "https://similarweb8.p.rapidapi.com/get-analysis",
        "options": {
          "timeout": 30000
        },
        "sendQuery": true,
        "sendHeaders": true,
        "queryParameters": {
          "parameters": [
            {
              "name": "domain",
              "value": "={{ $json.domain }}"
            }
          ]
        },
        "headerParameters": {
          "parameters": [
            {
              "name": "X-RapidAPI-Key",
              "value": "YOUR_SIMILARWEB_RAPIDAPI_KEY_HERE"
            },
            {
              "name": "X-RapidAPI-Host",
              "value": "similarweb8.p.rapidapi.com"
            }
          ]
        }
      },
      "typeVersion": 4.1,
      "continueOnFail": true
    },
    {
      "id": "4c68f450-c6c1-4233-af80-527a720114dd",
      "name": "\ud83d\udcca Extract Key Traffic Metrics",
      "type": "n8n-nodes-base.code",
      "position": [
        -1080,
        60
      ],
      "parameters": {
        "jsCode": "// Input: Raw SimilarWeb data in `$json.data`\nconst data = $json.data;\n\nconst output = {\n  domain: data.domain,\n  globalRank: data.global_rank,\n  countryRank: `${data.country_rank.country} - ${data.country_rank.rank}`,\n  categoryRank: `${data.category_rank.category} - ${data.category_rank.rank}`,\n  totalVisits: data.traffic_overview.total_visits,\n  bounceRate: `${(data.traffic_overview.bounce_rate * 100).toFixed(2)}%`,\n  pagesPerVisit: data.traffic_overview.pages_per_visit,\n  avgVisitDuration: data.traffic_overview.avg_visit_duration,\n\n  // Only top 3 traffic sources\n  topTrafficSources: {\n    direct: `${(data.traffic_sources.direct * 100).toFixed(1)}%`,\n    search: `${(data.traffic_sources.search * 100).toFixed(1)}%`,\n    social: `${(data.traffic_sources.social * 100).toFixed(1)}%`\n  },\n\n  // Top 3 countries only\n  topCountries: data.geography.top_countries.slice(0, 3).map(c => `${c.country}: ${(c.share * 100).toFixed(1)}%`),\n\n  deviceSplit: {\n    mobile: `${(data.mobile_vs_desktop.mobile * 100).toFixed(1)}%`,\n    desktop: `${(data.mobile_vs_desktop.desktop * 100).toFixed(1)}%`\n  }\n};\n\nreturn [\n  {\n    json: output\n  }\n];"
      },
      "typeVersion": 2
    },
    {
      "id": "1c94450d-23dd-4a58-a10b-1a976d53e03e",
      "name": "\ud83d\udce4 Update Sheet with Traffic Data",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -860,
        -40
      ],
      "parameters": {
        "columns": {
          "value": {},
          "mappingMode": "defineBelow"
        },
        "options": {},
        "operation": "update",
        "sheetName": "Sheet1",
        "documentId": "YOUR_OUTPUT_GOOGLE_SHEET_ID_HERE"
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4
    },
    {
      "id": "e4edab91-d07a-4045-96fb-36918cb869ce",
      "name": "\ud83d\udcc1 Export to Airtable (Optional)",
      "type": "n8n-nodes-base.airtable",
      "position": [
        -860,
        160
      ],
      "parameters": {
        "base": {
          "__rl": true,
          "mode": "id",
          "value": "YOUR_AIRTABLE_BASE_ID"
        },
        "table": {
          "__rl": true,
          "mode": "id",
          "value": "YOUR_AIRTABLE_TABLE_NAME"
        },
        "columns": {
          "value": {},
          "schema": [],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "create",
        "authentication": "airtableOAuth2Api"
      },
      "credentials": {
        "airtableOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "e6e73f3f-5987-4a01-b5b3-b2e7f5f5c0bd",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1780,
        -200
      ],
      "parameters": {
        "width": 400,
        "height": 540,
        "content": "## \ud83e\uddfe Trigger Sheet | \ud83d\udee0\ufe0f Set Sheet Data\n\n**Purpose:**\n\n*Fetches site URLs from the connected Google Sheet and structures each row into a clean format with keys like domain, rowNumber, etc., preparing the data for enrichment and traffic analysis.*"
      },
      "typeVersion": 1
    },
    {
      "id": "2356c9db-8443-4805-af2c-77b32170637b",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1360,
        -320
      ],
      "parameters": {
        "width": 420,
        "height": 660,
        "content": "## \ud83c\udf0d Similarweb HTTP Request | \ud83d\udee0\ufe0f Set Formatted Similarweb Response\n\n**Purpose:**\n\n*Fetches web traffic and engagement insights from Similarweb for each domain (e.g. global rank, total visits, bounce rate). Then formats this data to extract only key metrics like:\n\nGlobal Rank, Country Rank, Monthly Visits, Avg Visit Duration, Top Traffic Sources, Device Split (Mobile/Desktop)*"
      },
      "typeVersion": 1
    },
    {
      "id": "0de06e71-5a3e-4040-b110-1ebe399fe669",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -920,
        -320
      ],
      "parameters": {
        "width": 200,
        "height": 660,
        "content": "## \ud83e\uddfe Send to Sheet\n\n**Purpose:**\n\n*Appends the enriched and filtered lead data back to a new Google Sheet or another destination sheet for further use.*"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "connections": {
    "\ud83e\uddfc Clean Domain URL": {
      "main": [
        [
          {
            "node": "\ud83c\udf10 Fetch Analysis (SimilarWeb API)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "\ud83d\udfe2 Sheet Trigger: New Domain": {
      "main": [
        [
          {
            "node": "\ud83e\uddfc Clean Domain URL",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "\ud83d\udcca Extract Key Traffic Metrics": {
      "main": [
        [
          {
            "node": "\ud83d\udce4 Update Sheet with Traffic Data",
            "type": "main",
            "index": 0
          },
          {
            "node": "\ud83d\udcc1 Export to Airtable (Optional)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "\ud83d\udce4 Update Sheet with Traffic Data": {
      "main": [
        []
      ]
    },
    "\ud83c\udf10 Fetch Analysis (SimilarWeb API)": {
      "main": [
        [
          {
            "node": "\ud83d\udcca Extract Key Traffic Metrics",
            "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.

Pro

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

About this workflow

This workflow starts whenever a new domain is added to a Google Sheet. It cleans the domain, fetches traffic insights from SimilarWeb, extracts the most relevant metrics, and updates the sheet with enriched data. Optionally, it can also send this information to Airtable for…

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

More Data & Sheets workflows → · Browse all categories →

Related workflows

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

Data & Sheets

This template is ideal for solo store owners, eCommerce marketers, automation beginners, or anyone using Shopify and Gmail who wants to recover lost revenue without coding.

HTTP Request, Gmail, Twilio +3
Data & Sheets

This guide will walk you through setting up your n8n workflow. By the end, you'll have a fully automated system for managing your recruitment pipeline.

Google Calendar Trigger, Slack, HTTP Request +4
Data & Sheets

Stickynote Workflow. Uses googleTranslate, googleSheetsTrigger, googleDrive, httpRequest. Event-driven trigger; 22 nodes.

Google Translate, Google Sheets Trigger, Google Drive +2
Data & Sheets

This workflow is perfect for recruiters, HR professionals, and startup founders who receive job applications by email and want to automate the process of parsing, matching, and evaluating resumes. If

Gmail Trigger, Airtable, HTTP Request +2
Data & Sheets

This powerful no-code workflow automates plagiarism detection using Plagiarism Checker AI Powered. Users submit text through Google Sheets. The system checks for duplication using the API, sends a det

Google Sheets Trigger, HTTP Request, Email Send +1