AutomationFlowsWeb Scraping › Apify to Google Sheets Lead Scraping

Apify to Google Sheets Lead Scraping

Original n8n title: Automate Business Lead Scraping From Apify to Google Sheets with Data Cleaning

ByDavid Olusola @dae221 on n8n.io

This n8n workflow automates the process of scraping leads using Apify, cleaning the extracted data, and exporting it to Google Sheets—ready for use in outreach, prospecting, or CRM pipelines. ✅ Start – Manually triggers the workflow. 🧩 Set Variables – Stores required Apify…

Event trigger★★★★☆ complexity6 nodesHTTP RequestGoogle Sheets
Web Scraping Trigger: Event Nodes: 6 Complexity: ★★★★☆ Added:

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

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 →

Download .json
{
  "id": "8dpOtivR6zGMa8Nf",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "Automated Lead Scraper: Apify to Google Sheets",
  "tags": [],
  "nodes": [
    {
      "id": "331e904a-362e-4b18-ac01-60bd138a7ee1",
      "name": "Manual Trigger",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -1740,
        -300
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "c8c72d6e-4558-4ab1-9c19-2b8e3cefc856",
      "name": "Run Apify Scraper",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -1280,
        -300
      ],
      "parameters": {
        "url": "={{ 'https://api.apify.com/v2/actor-tasks/' + $json.APIFY_TASK_ID + '/run-sync-get-dataset-items?token=' +$json.APIFY_TOKEN}}",
        "options": {
          "splitIntoItems": true
        }
      },
      "typeVersion": 1
    },
    {
      "id": "fb61d5a9-0352-4079-a00f-c42df06bb09e",
      "name": "Clean Data",
      "type": "n8n-nodes-base.code",
      "position": [
        -1080,
        -300
      ],
      "parameters": {
        "jsCode": "// Clean scraped data before LLM processing\nreturn $input.all().map(item => ({\n  ...item.json,\n  phone: item.json.phone?.replace(/[^\\d+]/g, '') || '',\n  email: item.json.email?.toLowerCase().trim() || ''\n}));"
      },
      "typeVersion": 2
    },
    {
      "id": "a6988139-87e5-423c-bec9-ce155f617dab",
      "name": "Export to Google Sheets",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -760,
        -300
      ],
      "parameters": {
        "columns": {
          "value": {
            "phone": "={{ $json.phone }}",
            "Address": "={{ $json.address }}",
            "company name": "={{ $json.title }}"
          },
          "schema": [
            {
              "id": "company name",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "company name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "website",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "website",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "phone",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "phone",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Address",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Address",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "Sheet1",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1UHkd_OuK1Xzc0ZXo7FPrsd5M1JlsIY9pJDC3fsJ3oq8/edit#gid=0",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "YOUR_GOOGLE_SHEET_ID",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1UHkd_OuK1Xzc0ZXo7FPrsd5M1JlsIY9pJDC3fsJ3oq8/edit?usp=drivesdk",
          "cachedResultName": "leas list solar"
        }
      },
      "typeVersion": 4.5
    },
    {
      "id": "f4398fd2-bff0-4e9c-ae1b-f5950be0a384",
      "name": "Variables",
      "type": "n8n-nodes-base.set",
      "position": [
        -1500,
        -300
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "4486360c-2296-41ad-a48f-706e24c49a4f",
              "name": "APIFY_TOKEN",
              "type": "string",
              "value": "YOUR_APIFY_API_TOKEN"
            },
            {
              "id": "6e56b0e3-36ae-4f1e-b0e5-38767bbe8af9",
              "name": "APIFY_TASK_ID",
              "type": "string",
              "value": "YOUR_APIFY_TASK_ID"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "04a980cf-365b-4cc3-8439-fd71cb1f05a3",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1860,
        -820
      ],
      "parameters": {
        "color": 7,
        "width": 1660,
        "height": 780,
        "content": "## Automated Business Lead Scraper with Apify to Google Sheets\n**Purpose:** Automates scraping business leads using Apify, cleaning the data, and exporting them to Google Sheets.\n\n**Workflow Steps:**\n1. **Manual Trigger**: Starts the workflow manually.\n2. **Set API Credentials**: Add your `APIFY_TOKEN` and `APIFY_TASK_ID`.\n3. **Run Apify Scraper**: Fetches leads using Apify HTTP API.\n4. **Clean Data**: Formats phone numbers and emails.\n5. **Export to Google Sheets**: Appends data to your spreadsheet.\n\n**Google Sheet Requirements:**\n- Sheet name: `Sheet1`\n- Columns: `company name`, `phone`, `Address`\n\n**Customization Tips:**\n- Add more fields like `email`, `website` in Clean Data and mapping.\n- Add conditions or filters before exporting.\n- Add email alerts if needed.\n"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "47bf9abd-67aa-49c8-81c9-761e75ee731f",
  "connections": {
    "Start": {
      "main": [
        [
          {
            "node": "Variables",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Variables": {
      "main": [
        [
          {
            "node": "Run Apify Scraper",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Clean Data": {
      "main": [
        [
          {
            "node": "Export to Google Sheets",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Run Apify Scraper": {
      "main": [
        [
          {
            "node": "Clean Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Pro

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

About this workflow

This n8n workflow automates the process of scraping leads using Apify, cleaning the extracted data, and exporting it to Google Sheets—ready for use in outreach, prospecting, or CRM pipelines. ✅ Start – Manually triggers the workflow. 🧩 Set Variables – Stores required Apify…

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

More Web Scraping workflows → · Browse all categories →

Related workflows

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

Web Scraping

Automate LinkedIn lead generation by scraping comments from targeted posts and enriching profiles with detailed data

Form Trigger, HTTP Request, Google Sheets
Web Scraping

This automated n8n workflow scrapes job listings from Upwork using Apify, processes and cleans the data, and generates daily email reports with job summaries. The system uses Google Sheets for data st

Google Sheets, HTTP Request, Gmail
Web Scraping

Transform LinkedIn profile URLs into comprehensive enriched lead profiles, quickly and automatically.

HTTP Request, Google Sheets
Web Scraping

Transform any website into a structured knowledge repository with this intelligent crawler that extracts hyperlinks from the homepage, intelligently filters images and content pages, and aggregates fu

HTTP Request, Google Sheets
Web Scraping

Content creators, researchers, educators, and digital marketers who need to discover high-quality YouTube training videos on specific topics. Perfect for building curated learning resource lists, comp

HTTP Request, Google Sheets