AutomationFlowsMarketing & Ads › Turn Ecommerce Product Urls Into Leads with Google Sheets and Mrscraper

Turn Ecommerce Product Urls Into Leads with Google Sheets and Mrscraper

Byriandra @riandradiva on n8n.io

This n8n workflow automates the process of finding ecommerce seller leads, enriching them with product and business details, discovering company websites, and extracting contact information such as emails and phone numbers.

Event trigger★★★★★ complexity49 nodesGoogle SheetsN8N Nodes MrscraperHTTP Request
Marketing & Ads Trigger: Event Nodes: 49 Complexity: ★★★★★ Added:

This workflow corresponds to n8n.io template #15460 — 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": "GuvmMG7ssyd4Gy4z",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "Ecommerce Leads Finder & Contact Extraction",
  "tags": [],
  "nodes": [
    {
      "id": "4ecda2bf-d244-421f-be72-91a4012cdc97",
      "name": "When clicking \u2018Execute workflow\u2019",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -3184,
        2032
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "7323cbbc-bf44-49aa-ba21-f61bcb4072a7",
      "name": "Check Cached Product Detail Result",
      "type": "n8n-nodes-base.code",
      "position": [
        -2080,
        2032
      ],
      "parameters": {
        "jsCode": "const raw_data = $input.all();\n\nconst cutoffTime = new Date();\ncutoffTime.setHours(1, 30, 0, 0);\n\n// Process a single item\nasync function processItem(data) {\n    const item = data.json;\n    console.log(\"item\", item)\n    const url = item.Url;\n    console.log(\"url\", url)\n    const scraperId = \"1780b8cb-747e-46b8-8d0d-b0168aeea930\";\n\n    const response = await this.helpers.httpRequest({\n        method: 'GET',\n        url: `https://api.app.mrscraper.com/api/v1/results?filters[url]=${encodeURIComponent(url)}&page=1&pageSize=1&sort=createdAt&sortOrder=DESC&filters[scraperId]=${scraperId}`,\n        headers: {\n            'accept': 'application/json',\n            'x-api-token': '',\n        },\n    });\n    console.log(\"response\", response)\n    let found = false;\n    let cur_result = null;\n    let last_scraped_at = null;\n\n    const results = response?.data || [];\n    for (let result of results) {\n\n        // Handle \"too large data\" case\n        if (result?.data?.message === \"Data is too large to display, check dataPath for more details\") {\n            const response_detail = await this.helpers.httpRequest({\n                method: 'GET',\n                url: `https://api.app.mrscraper.com/api/v1/results/${result.id}`,\n                headers: {\n                    'accept': 'application/json',\n                    'x-api-token': '',\n                },\n            });\n\n            result = response_detail?.data || results;\n        }\n        console.log(\"result\", result)\n        const createdAt = new Date(result.createdAt);\n\n        const title = result?.data?.Detail_product?.title;\n\n        if (title) {\n            found = true;\n            cur_result = result;\n            break;\n        }\n\n        // track last scraped date\n        if (!last_scraped_at || createdAt > new Date(last_scraped_at)) {\n            last_scraped_at = createdAt.toISOString().split('T')[0];\n        }\n    }\n\n    // If the item is new, return the original item from previous node\n    return {\n        is_new: !found,\n        data: found ? cur_result.data : item, // <-- use item when new\n    };\n}\n\n// Process with parallel workers\nconst WORKERS = 10;\nlet output = [];\n\nfor (let i = 0; i < raw_data.length; i += WORKERS) {\n    const chunk = raw_data.slice(i, i + WORKERS);\n\n    const results = await Promise.all(\n        chunk.map(data => processItem.call(this, data))\n    );\n\n    output.push(...results);\n}\n\nreturn output;"
      },
      "retryOnFail": true,
      "typeVersion": 2,
      "waitBetweenTries": 5000
    },
    {
      "id": "fde2dc17-d766-4a4d-bf02-1f74d04b6290",
      "name": "Merge",
      "type": "n8n-nodes-base.merge",
      "position": [
        144,
        544
      ],
      "parameters": {},
      "typeVersion": 3.2
    },
    {
      "id": "ee381b2c-ca25-45ef-a1e6-01c54d00386a",
      "name": "Check Cached Result Contact Detail1",
      "type": "n8n-nodes-base.code",
      "position": [
        224,
        -384
      ],
      "parameters": {
        "jsCode": "const raw_data = $input.all();\n\nconst cutoffTime = new Date();\ncutoffTime.setHours(1, 30, 0, 0);\n\n// Process a single item\nasync function processItem(data) {\n    const item = data.json;\n    const url = item.contact_url;\n\n    if (!url) {\n        return {\n            is_new: true,\n            data: item,\n        };\n    }\n\n    const scraperId = \"66e9c8ad-9d8a-47a2-b855-20aa13e64c66\";\n\n    const response = await this.helpers.httpRequest({\n        method: 'GET',\n        url: `https://api.app.mrscraper.com/api/v1/results?filters[url]=${encodeURIComponent(url)}&page=1&pageSize=1&sort=createdAt&sortOrder=DESC&filters[scraperId]=${scraperId}`,\n        headers: {\n            'accept': 'application/json',\n            'x-api-token': 'YOUR_MRSCRAPER_API_TOKEN',\n        },\n    });\n\n    let found = false;\n    let cur_result = null;\n    let last_scraped_at = null;\n\n    const results = response?.data || [];\n\n    for (let result of results) {\n\n        if (result?.data?.message === \"Data is too large to display, check dataPath for more details\") {\n            const response_detail = await this.helpers.httpRequest({\n                method: 'GET',\n                url: `https://api.app.mrscraper.com/api/v1/results/${result.id}`,\n                headers: {\n                    'accept': 'application/json',\n                    'x-api-token': 'YOUR_MRSCRAPER_API_TOKEN',\n                },\n            });\n\n            result = response_detail?.data || result;\n        }\n\n        const createdAt = new Date(result.createdAt);\n\n        const dataResult = result?.data?.data ?? result?.data;\n        const email = dataResult?.emails;\n\n        if (email) {\n            found = true;\n            cur_result = dataResult;\n            break;\n        }\n\n        // track last scraped date\n        if (!last_scraped_at || createdAt > new Date(last_scraped_at)) {\n            last_scraped_at = createdAt.toISOString().split('T')[0];\n        }\n    }\n\n    return {\n        is_new: !found,\n        data: found ? cur_result : item,\n    };\n}\n\n// Process with parallel workers\nconst WORKERS = 10;\nlet output = [];\n\nfor (let i = 0; i < raw_data.length; i += WORKERS) {\n    const chunk = raw_data.slice(i, i + WORKERS);\n\n    const results = await Promise.all(\n        chunk.map(data => processItem.call(this, data))\n    );\n\n    output.push(...results);\n}\n\nreturn output;"
      },
      "retryOnFail": true,
      "typeVersion": 2,
      "waitBetweenTries": 5000
    },
    {
      "id": "5622e7af-df68-4cc5-bd78-e216f3837d42",
      "name": "Run if only one execution exists",
      "type": "n8n-nodes-base.if",
      "position": [
        -2736,
        2032
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 3,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "16029302-62e1-4ccd-8e66-6c7ac00bee3d",
              "operator": {
                "type": "number",
                "operation": "equals"
              },
              "leftValue": "={{ $json.runningCount }}",
              "rightValue": 1
            }
          ]
        }
      },
      "typeVersion": 2.3
    },
    {
      "id": "bc8d3041-30e8-40d9-bffc-8108b1c489e9",
      "name": "Get Product url",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -2528,
        2032
      ],
      "parameters": {
        "options": {},
        "filtersUI": {
          "values": [
            {
              "lookupColumn": "status"
            }
          ]
        },
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/YOUR_PRODUCT_URL_SHEET_ID/edit#gid=0",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "YOUR_PRODUCT_URL_SHEET_ID",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/YOUR_PRODUCT_URL_SHEET_ID/edit?usp=drivesdk",
          "cachedResultName": "Spedire Detail Url"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "30d01806-ddda-4bda-bc8d-07eb1e672a7e",
      "name": "Loop Over Product Url",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        -2304,
        2032
      ],
      "parameters": {
        "options": {},
        "batchSize": 100
      },
      "typeVersion": 3
    },
    {
      "id": "aeba7e42-54a6-4ebb-bca1-d08630803809",
      "name": "Check is New or Cached is available",
      "type": "n8n-nodes-base.if",
      "position": [
        -1856,
        2032
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 3,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "2f1ef202-e090-478d-9cc3-2d57d3571bd1",
              "operator": {
                "type": "boolean",
                "operation": "true",
                "singleValue": true
              },
              "leftValue": "={{ $json.is_new }}",
              "rightValue": {}
            }
          ]
        }
      },
      "typeVersion": 2.3
    },
    {
      "id": "eae8669d-3fcb-4fe0-8e0d-ccfe1656df5f",
      "name": "Run Detail Product Scraper",
      "type": "n8n-nodes-mrscraper.mrscraper",
      "onError": "continueRegularOutput",
      "position": [
        -1632,
        1952
      ],
      "parameters": {
        "url": "={{ $json.data.Url ?? $json.data.Detail_product.url }}",
        "scraperId": "YOUR SCRAPER ID",
        "requestOptions": {
          "timeout": 120000
        }
      },
      "credentials": {
        "mrscraperApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "4f7c8c24-2735-4f1f-82d7-5561a3835a33",
      "name": "Merge Product Detail Data",
      "type": "n8n-nodes-base.merge",
      "position": [
        -1408,
        2032
      ],
      "parameters": {},
      "typeVersion": 3.2
    },
    {
      "id": "1721297c-50cf-4cf4-98b9-60a5f29ba8ea",
      "name": "Formatting Data",
      "type": "n8n-nodes-base.code",
      "position": [
        -1120,
        2016
      ],
      "parameters": {
        "jsCode": "const items = $input.all();\n\nreturn items.map((item) => {\n  const raw = item.json ?? {};\n\n  // support both structures\n  // data 1 => raw.data.data\n  // data 2 => raw.data\n  const root =\n    raw?.data?.data ||\n    raw?.data ||\n    {};\n\n  const product =\n    root?.Detail_product ??\n    null;\n\n  const seller =\n    root?.Detail_seller?.data ??\n    root?.Detail_seller ??\n    null;\n\n  return {\n    json: {\n      // PRODUCT\n      url: product?.url ?? null,\n\n      productTitle: product?.title ?? null,\n      productSummary: product?.aiSummary ?? null,\n      productDescription: product?.description ?? null,\n\n      favoritesCount: product?.favoritesCount ?? null,\n\n      // SPECIFICATIONS\n      specEra:\n        product?.specifications?.Era ?? null,\n\n      specBrand:\n        product?.specifications?.Brand ?? null,\n\n      specModel:\n        product?.specifications?.Model ||\n        product?.specifications?.[\"Model/name\"] ||\n        null,\n\n      specArtist:\n        product?.specifications?.Artist ?? null,\n\n      specDesigner:\n        product?.specifications?.[\"Designer/artist/maker\"] ?? null,\n\n      specManufacturer:\n        product?.specifications?.[\"Manufacturer/brand\"] ?? null,\n\n      specCountryOrigin:\n        product?.specifications?.[\"Country of origin\"] ?? null,\n\n      specMaterial:\n        product?.specifications?.Material ?? null,\n\n      specStyle:\n        product?.specifications?.Style ?? null,\n\n      specColour:\n        product?.specifications?.Colour ?? null,\n\n      specCondition:\n        product?.specifications?.Condition ?? null,\n\n      specPeriod:\n        product?.specifications?.Period ?? null,\n\n      specYear:\n        product?.specifications?.Year ?? null,\n\n      specTechnique:\n        product?.specifications?.Technique ?? null,\n\n      specSignature:\n        product?.specifications?.Signature ?? null,\n\n      specEdition:\n        product?.specifications?.Edition ?? null,\n\n      specSoldBy:\n        product?.specifications?.[\"Sold by\"] ?? null,\n\n      specSoldWithFrame:\n        product?.specifications?.[\"Sold with frame\"] ?? null,\n\n      specTitleArtwork:\n        product?.specifications?.[\"Title of artwork\"] ?? null,\n\n      specEstPeriod:\n        product?.specifications?.[\"Estimated period\"] ?? null,\n\n      specHeight:\n        product?.specifications?.Height ?? null,\n\n      specWidth:\n        product?.specifications?.Width ?? null,\n\n      specDepth:\n        product?.specifications?.Depth ?? null,\n\n      specSeatingHeight:\n        product?.specifications?.[\"Seating height\"] ?? null,\n\n      specNumObjects:\n        product?.specifications?.[\"Number of objects\"] ?? null,\n\n      // SHIPPING\n      shippingDestination:\n        product?.shipping?.destination ?? null,\n\n      shippingCost:\n        product?.shipping?.cost ?? null,\n\n      pickupLocation:\n        product?.shipping?.pickupLocation ?? null,\n\n      // IMAGES\n      imageUrls: (product?.images ?? [])\n        .map(img => img?.url)\n        .filter(Boolean)\n        .join(\" | \") || null,\n\n      imageAlts: (product?.images ?? [])\n        .map(img => img?.alt)\n        .filter(Boolean)\n        .join(\" | \") || null,\n\n      // SELLER (FROM PRODUCT)\n      sellerName:\n        product?.seller?.name ?? null,\n\n      sellerProfileUrl:\n        product?.seller?.profileUrl ?? null,\n\n      sellerCountry: seller?.country ??\n        product?.seller?.country ??  null,\n\n      sellerVerified:\n        product?.seller?.verified ?? null,\n\n      sellerType:\n        product?.seller?.type ?? null,\n\n      sellerObjectsSold:\n        product?.seller?.stats?.[\"Objects sold\"] ?? null,\n\n      sellerReviews:\n        product?.seller?.stats?.[\"Reviews\"] ?? null,\n\n      sellerPositiveScore:\n        product?.seller?.stats?.[\"100%\"] ?? null,\n\n      // SELLER DETAIL\n      sellerId:\n        seller?.sellerId ?? null,\n\n      seller_page_url:\n        seller?.sellerUrl ?? null,\n\n      sellerCanonicalUrl:\n        seller?.canonicalUrl ?? null,\n\n      sellerDetailCountry:\n        seller?.country ?? null,\n\n      business_name:\n        seller?.businessName ?? null,\n\n      business_address:\n        seller?.businessAddress ?? null,\n\n      business_license_number:\n        seller?.businessRegNumber ?? null,\n\n      sellerReviewCount:\n        seller?.reviewCount ?? null,\n\n      sellerObjectsSoldDetail:\n        seller?.objectsSold ?? null,\n\n      sellerPositiveScoreDetail:\n        seller?.positiveScore ?? null,\n\n      reviewsUrl:\n        seller?.reviewsUrl ?? null,\n\n      sellerTags: (seller?.tags ?? [])\n        .filter(Boolean)\n        .join(\" | \") || null,\n\n      sellerLotLabels: (seller?.lots ?? [])\n        .map(l => l?.label)\n        .filter(Boolean)\n        .join(\" | \") || null,\n\n      sellerLotCounts: (seller?.lots ?? [])\n        .map(l => l?.count)\n        .filter(v => v !== undefined && v !== null)\n        .join(\" | \") || null,\n\n      sellerLotUrls: (seller?.lots ?? [])\n        .map(l => l?.url)\n        .filter(Boolean)\n        .join(\" | \") || null,\n    },\n  };\n});"
      },
      "typeVersion": 2
    },
    {
      "id": "055b6927-38e2-4e44-b3e4-205ab04766da",
      "name": "Append or update Product Detail in Sheets",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -928,
        2016
      ],
      "parameters": {
        "columns": {
          "value": {},
          "schema": [
            {
              "id": "url",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "url",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "contact_url",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "contact_url",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "company_url",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "company_url",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "productTitle",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "productTitle",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "productSummary",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "productSummary",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "productDescription",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "productDescription",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "favoritesCount",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "favoritesCount",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "specEra",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "specEra",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "specModel",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "specModel",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "specDesigner",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "specDesigner",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "specManufacturer",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "specManufacturer",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "specCountryOrigin",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "specCountryOrigin",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "specMaterial",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "specMaterial",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "specStyle",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "specStyle",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "specColour",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "specColour",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "specCondition",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "specCondition",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "specEstPeriod",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "specEstPeriod",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "specHeight",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "specHeight",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "specWidth",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "specWidth",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "specDepth",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "specDepth",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "specSeatingHeight",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "specSeatingHeight",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "specNumObjects",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "specNumObjects",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "shippingDestination",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "shippingDestination",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "shippingCost",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "shippingCost",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "pickupLocation",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "pickupLocation",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "imageUrls",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "imageUrls",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "imageAlts",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "imageAlts",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "sellerName",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "sellerName",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "seller_page_url",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "seller_page_url",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "business_name",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "business_name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "business_address",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "business_address",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "business_license_number",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "business_license_number",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "sellerProfileUrl",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "sellerProfileUrl",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "sellerCountry",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "sellerCountry",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "sellerVerified",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "sellerVerified",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "sellerType",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "sellerType",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "sellerObjectsSold",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "sellerObjectsSold",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "sellerReviews",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "sellerReviews",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "sellerDetailCountry",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "sellerDetailCountry",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "sellerLotLabels",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "sellerLotLabels",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "sellerLotCounts",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "sellerLotCounts",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "sellerLotUrls",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "sellerLotUrls",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "emails",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "emails",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "phones",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "phones",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "autoMapInputData",
          "matchingColumns": [
            "url"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/YOUR_LEADS_SHEET_ID/edit#gid=0",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "YOUR_LEADS_SHEET_ID",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/YOUR_LEADS_SHEET_ID/edit?usp=drivesdk",
          "cachedResultName": "Spedire Leads"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "9b4ca6ab-a0af-4a18-a4c2-557a4535920b",
      "name": "Append or update url's scraped status",
      "type": "n8n-nodes-base.googleSheets",
      "onError": "continueRegularOutput",
      "position": [
        -736,
        2016
      ],
      "parameters": {
        "columns": {
          "value": {
            "Url": "={{ $json.url }}",
            "status": "finished"
          },
          "schema": [
            {
              "id": "Url",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Url",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "status",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "status",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "Url"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/YOUR_PRODUCT_URL_SHEET_ID/edit#gid=0",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "YOUR_PRODUCT_URL_SHEET_ID",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/YOUR_PRODUCT_URL_SHEET_ID/edit?usp=drivesdk",
          "cachedResultName": "Spedire Detail Url"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "a8565e90-2853-48e5-8832-01a6608e0e73",
      "name": "Loop SERP Company URL by Seller Detail",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        -1680,
        1248
      ],
      "parameters": {
        "options": {},
        "batchSize": 500
      },
      "typeVersion": 3
    },
    {
      "id": "9338b2e3-7bc4-4c8e-b856-6780abc9d71b",
      "name": "Get sellerDetail filter by Seller Country",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -1904,
        1248
      ],
      "parameters": {
        "options": {},
        "filtersUI": {
          "values": [
            {
              "lookupValue": "Italy",
              "lookupColumn": "sellerCountry"
            }
          ]
        },
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/YOUR_LEADS_SHEET_ID/edit#gid=0",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "YOUR_LEADS_SHEET_ID",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/YOUR_LEADS_SHEET_ID/edit?usp=drivesdk",
          "cachedResultName": "Spedire Leads"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "executeOnce": true,
      "typeVersion": 4.7
    },
    {
      "id": "b7eab9b1-6f1d-46e7-99cb-0e1986ed788e",
      "name": "request SERP API",
      "type": "n8n-nodes-base.httpRequest",
      "onError": "continueRegularOutput",
      "position": [
        -1232,
        1168
      ],
      "parameters": {
        "url": "https://sync.scraper.mrscraper.com/api/google/serp/sync",
        "method": "POST",
        "options": {
          "redirect": {
            "redirect": {}
          }
        },
        "jsonBody": "={\n  \"url\": \"https://www.google.com/search?q={{ $json.business_name ?? $json.sellerName }}+{{ $json.sellerCountry }}\",\n  \"raw\": true\n}",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "Bearer YOUR_TOKEN_HERE"
            },
            {
              "name": "Cookie",
              "value": "sl-session=YOUR_SESSION_COOKIE;"
            },
            {
              "name": "cookie",
              "value": "sl-session=YOUR_SESSION_COOKIE;"
            }
          ]
        }
      },
      "typeVersion": 4.4
    },
    {
      "id": "16e2c689-dbf8-430f-a3a5-77086e29f222",
      "name": "Filter Legit Company Profile Url",
      "type": "n8n-nodes-base.code",
      "position": [
        -1008,
        1168
      ],
      "parameters": {
        "jsCode": "const allInputs = $input.all();\nconst allScraperItems = $('Filter License Exists & Company URL Not Yet Available').all(0) ?? null;\nconsole.log(\"allScraperItems\", allScraperItems)\n\nconst BLACKLIST = [\n  'facebook.com','instagram.com','linkedin.com','twitter.com','x.com',\n  'youtube.com','tiktok.com','reddit.com','pinterest.com','threads.net',\n  'amazon.com','amazon.it','amazon.co.uk','amazon.de',\n  'ebay.com','ebay.it','etsy.com','aliexpress.com','alibaba.com',\n  'catawiki.com','vinted.com','subito.it','yelp.com','tripadvisor.com',\n  'trustpilot.com','wikipedia.org','google.com','bing.com','crunchbase.com'\n];\n\nconst CONFIDENCE_THRESHOLD = 2.5;\n\n\nfunction normalize(text) {\n  return (text || '')\n    .toLowerCase()\n    .replace(/[^a-z0-9\\s]+/g, ' ');\n}\n\nfunction tokenize(name) {\n  const stopwords = new Set([\n    \"the\",\"and\",\"of\",\"di\",\"e\",\"srl\",\"sas\",\"spa\",\"sa\",\"ltd\",\"llc\",\n    \"inc\",\"co\",\"company\",\"corp\",\"group\",\"holding\",\"holdings\"\n  ]);\n\n  return normalize(name)\n    .split(/\\s+/)\n    .filter(t => t && !stopwords.has(t) && t.length > 1);\n}\n\nfunction extractDomain(url) {\n  let d = url.replace(/^https?:\\/\\//i, '');\n  d = d.replace(/^www\\./i, '');\n  return d.split('/')[0].toLowerCase();\n}\n\nfunction registrableDomain(host) {\n  host = host.replace(/^www\\./, '');\n  const parts = host.split('.');\n  if (parts.length <= 2) return host;\n  return parts.slice(-2).join('.');\n}\n\nfunction isBlacklisted(url) {\n  const d = extractDomain(url);\n  return BLACKLIST.some(b => d === b || d.endsWith('.' + b));\n}\n\nfunction scoreCandidate(item, tokens, country) {\n  let score = 0;\n\n  const url = item.url;\n  const title = item.title || '';\n  const snippet = item.snippet || '';\n  const rank = item.rank ?? 0;\n\n  const parsedDomain = extractDomain(url);\n  const domain = registrableDomain(parsedDomain);\n\n  const domainCore = domain.split('.')[0];\n  const domainCompact = domainCore.replace(/[^a-z0-9]/g, '');\n\n  const tokenSet = new Set(tokens);\n  const domainTokens = domainCore.split(/[^a-z0-9]+/).filter(Boolean);\n\n  // 1. DOMAIN TOKEN MATCH (3.0)\n  const domainHits = domainTokens.filter(t => tokenSet.has(t)).length;\n  score += 3.0 * domainHits;\n\n  // 2. SUBSTRING MATCH (1.5)\n  let substringHits = 0;\n  for (const t of tokens) {\n    if (t.length >= 3 && domainCompact.includes(t)) substringHits++;\n  }\n  score += 1.5 * Math.max(0, substringHits - domainHits);\n\n  // 3. FULL NAME MATCH (2.0)\n  const joined = tokens.join('');\n  if (joined && domainCompact.includes(joined)) {\n    score += 2.0;\n  }\n\n  // 4. TITLE + SNIPPET MATCH (0.4)\n  const haystack = normalize(title + ' ' + snippet);\n  let textHits = 0;\n  for (const t of tokenSet) {\n    if (haystack.includes(t)) textHits++;\n  }\n  score += 0.4 * textHits;\n\n  // 5. HOMEPAGE BONUS (0.5)\n  const path = url.split(parsedDomain)[1] || '';\n  if (!path || path === '/') score += 0.5;\n  else if (path.split('/').length > 3) score -= 0.3;\n\n  // 6. RANK BONUS (0.3 decay)\n  score += Math.max(0, 0.3 - 0.03 * rank);\n\n  // 7. BLOG / BUILDER PENALTY (-1.5)\n  if (\n    parsedDomain.includes('blogspot') ||\n    parsedDomain.includes('wordpress') ||\n    parsedDomain.includes('wixsite') ||\n    parsedDomain.includes('weebly')\n  ) {\n    score -= 1.5;\n  }\n\n  return score;\n}\n\nfunction process(inputItem, scraperItem) {\n  const inputJson = inputItem?.json ?? null;\n  const scraperJson = scraperItem?.json ?? null;\n\n  const searchResults = Array.isArray(inputJson)\n    ? (inputJson[0]?.data ?? inputJson)\n    : (inputJson?.data ?? []);\n\n  const filtered = searchResults.filter(r => !isBlacklisted(r.url || ''));\n\n  const businessName =\n    scraperJson?.business_name ||\n    scraperJson?.data?.name ||\n    '';\n  console.log(\"businessName\", businessName)\n  const tokens = tokenize(businessName);\n\n  let bestScore = -Infinity;\n  let bestUrl = null;\n\n  const scored = filtered.map(r => {\n    const score = scoreCandidate(r, tokens);\n    return { ...r, score };\n  });\n\n  for (const r of scored) {\n    if (r.score > bestScore) {\n      bestScore = r.score;\n      bestUrl = r.url;\n    }\n  }\n\n  return {\n    bestUrl: bestScore >= CONFIDENCE_THRESHOLD ? bestUrl : null,\n    score: bestScore,\n    threshold: CONFIDENCE_THRESHOLD,\n    passed: bestScore >= CONFIDENCE_THRESHOLD,\n    businessName,\n    ranked: scored.sort((a,b) => b.score - a.score)\n  };\n}\n\n// Main Code\nreturn allInputs.map((inputItem, i) => {\n  const scraperItem = allScraperItems[i] ?? allScraperItems.at(-1);\n  return { json: process(inputItem, scraperItem) };\n});"
      },
      "typeVersion": 2
    },
    {
      "id": "f74ad874-a135-4b6b-bd3f-e3202ccdd59b",
      "name": "Append or update company Url",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -784,
        1168
      ],
      "parameters": {
        "columns": {
          "value": {
            "url": "={{ $('Filter License Exists & Company URL Not Yet Available').item.json.url }}",
            "company_url": "={{ $json.bestUrl }}"
          },
          "schema": [
            {
              "id": "url",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "url",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "contact_url",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "contact_url",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "company_url",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "company_url",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "productTitle",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "productTitle",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "productSummary",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "productSummary",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "productDescription",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "productDescription",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "favoritesCount",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "favoritesCount",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "specEra",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "specEra",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "specModel",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "specModel",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "specDesigner",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "specDesigner",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "specManufacturer",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "specManufacturer",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "specCountryOrigin",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "specCountryOrigin",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "specMaterial",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "specMaterial",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "specStyle",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "specStyle",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "specColour",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "specColour",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "specCondition",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "specCondition",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "specEstPeriod",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "specEstPeriod",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "specHeight",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "specHeight",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "specWidth",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "specWidth",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "specDepth",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "specDepth",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "specSeatingHeight",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "specSeatingHeight",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "specNumObjects",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "specNumObjects",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "shippingDestination",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "shippingDestination",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "shippingCost",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "shippingCost",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "pickupLocation",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "pickupLocation",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "imageUrls",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "imageUrls",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "imageAlts",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "imageAlts",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "sellerName",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "sellerName",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "seller_page_url",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "seller_page_url",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "business_name",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "business_name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "business_address",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "business_address",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "business_license_number",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "business_license_number",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "sellerProfileUrl",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "sellerProfileUrl",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "sellerCountry",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "sellerCountry",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "sellerVerified",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "sellerVerified",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "sellerType",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "sellerType",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "sellerObjectsSold",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "sellerObjectsSold",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "sellerReviews",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "sellerReviews",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "sellerDetailCountry",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "sellerDetailCountry",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "sellerLotLabels",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "sellerLotLabels",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "sellerLotCounts",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "sellerLotCounts",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "sellerLotUrls",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "sellerLotUrls",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "emails",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "emails",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "phones",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "phones",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "url"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/YOUR_LEADS_SHEET_ID/edit#gid=0",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "YOUR_LEADS_SHEET_ID",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/YOUR_LEADS_SHEET_ID/edit?usp=drivesdk",
          "cachedResultName": "Spedire Leads"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "5a2e1900-ffe0-4670-9308-f33c52913bb3",
      "name": "Merge Serp Result",
      "type": "n8n-nodes-base.merge",
      "onError": "continueRegularOutput",
      "position": [
        -544,
        1248
      ],
      "parameters": {},
      "typeVersion": 3.2
    },
    {
      "id": "ceab6bbc-1920-4d76-9e46-fa8ac6259e47",
      "name": "Append or update row in Contact Url",
      "type": "n8n-nodes-base.googleSheets",
      "onError": "continueRegularOutput",
      "position": [
        -80,
        464
      ],
      "parameters": {
        "columns": {
          "value": {
            "url": "={{ $('Filter Company Url Exists & Contact Url Not Yet Available').item.json.url }}",
            "contact_url": "={{ $json.url }}"
          },
          "schema": [
            {
              "id": "url",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "url",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "contact_url",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "contact_url",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "company_url",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "company_url",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "productTitle",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "productTitle",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "productSummary",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "productSummary",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "productDescription",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "productDescription",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "favoritesCount",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "favoritesCount",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "specEra",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "specEra",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "specModel",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "specModel",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "specDesigner",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "specDesigner",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "specManufacturer",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "specManufacturer",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "specCountryOrigin",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "specCountryOrigin",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "specMaterial",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "specMaterial",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "specStyle",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "specStyle",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "specColour",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "specColour",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "specCondition",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayNam

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 n8n workflow automates the process of finding ecommerce seller leads, enriching them with product and business details, discovering company websites, and extracting contact information such as emails and phone numbers.

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

More Marketing & Ads workflows → · Browse all categories →

Related workflows

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

Marketing & Ads

This template is for B2B sales teams, SDRs, growth marketers, and founders who maintain a spreadsheet of prospects and need verified contact details -- emails and mobile numbers -- without manual rese

Google Sheets, HTTP Request
Marketing & Ads

This workflow finds local businesses from Google Maps and automatically enriches them with emails, social profiles, AI summaries, and personalized outreach messages — all saved to Google Sheets. Searc

HTTP Request, Google Sheets
Marketing & Ads

This workflow leverages n8n to perform automated Google Maps API queries and manage data efficiently in Google Sheets. It's designed to extract specific location data based on a given list of ZIP code

Execute Workflow Trigger, Stop And Error, HTTP Request +1
Marketing & Ads

This repository contains an SLA-based lead routing workflow built in n8n, designed to ensure fast lead response, fair sales distribution, and controlled escalation without relying on a full CRM system

Form Trigger, Google Sheets, Slack +1
Marketing & Ads

This n8n workflow is a sophisticated B2B Lead Generation Scraper. It automates the entire journey from discovering businesses on Google Maps to extracting, scoring, and saving high-quality contact ema

HTTP Request, Google Sheets