AutomationFlowsGeneral › Bulk Check Namesilo Domain Availability

Bulk Check Namesilo Domain Availability

Original n8n title: Namesilo Bulk Domain Availability [template]

Namesilo Bulk Domain Availability [Template]. Uses stickyNote, splitInBatches, httpRequest, convertToFile. Event-driven trigger; 10 nodes.

Event trigger★★★★☆ complexity10 nodesHTTP Request
General Trigger: Event Nodes: 10 Complexity: ★★★★☆ Added:

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": "phqg5Kk3YowxoMHQ",
  "name": "Namesilo Bulk Domain Availability [Template]",
  "tags": [
    {
      "id": "28jVdgW1S4XWqLH4",
      "name": "Templates",
      "createdAt": "2025-02-28T12:22:07.921Z",
      "updatedAt": "2025-02-28T12:22:07.921Z"
    }
  ],
  "nodes": [
    {
      "id": "b1184b35-0ab4-42d8-a5b2-66ef926d7eed",
      "name": "Set Data",
      "type": "n8n-nodes-base.set",
      "position": [
        -240,
        0
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "05a34cf0-9462-4684-aac8-32b4b17e9ef0",
              "name": "Domains",
              "type": "string",
              "value": "=domain1.com\ndomain2.com\ndomain3.com"
            },
            {
              "id": "438830f9-27fe-4e89-bcb9-766483e2d9b1",
              "name": "Namesilo API Key",
              "type": "string",
              "value": "YOUR_API_KEY"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "7fc40d31-a43b-4273-a6eb-d519fda815d4",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -800,
        -340
      ],
      "parameters": {
        "width": 580,
        "height": 280,
        "content": "## How-To\n1. Claim your free Namesilo API key here: https://www.namesilo.com/account/api-manager\n\n2. Set your API key and domains in \"Set Data\" node.\n\nThe workflow send up to 200 domains per loop until all domains are processed. The output is in Excel format.\n\nEnjoy!\n\nNote: Each loop wait 5min. This is required due to Namesilo rate limits."
      },
      "typeVersion": 1
    },
    {
      "id": "a2137f76-9e08-4743-b914-b10bbebc9a13",
      "name": "Convert & Split Domains",
      "type": "n8n-nodes-base.code",
      "position": [
        -60,
        0
      ],
      "parameters": {
        "jsCode": "// Get domains from input JSON\nconst domains = $json.Domains.split(\"\\n\").map(domain => domain.trim()).filter(Boolean);\n\n// Define batch size\nconst batchSize = 200;\n\n// Split into batches of 200\nlet batches = [];\nfor (let i = 0; i < domains.length; i += batchSize) {\n    batches.push(domains.slice(i, i + batchSize).join(\",\"));\n}\n\n// Return batches as an array\nreturn batches.map(batch => ({ batchedDomains: batch }));"
      },
      "typeVersion": 2
    },
    {
      "id": "41140017-1f98-4ea9-ac97-9d48e5bdfda1",
      "name": "Wait",
      "type": "n8n-nodes-base.wait",
      "position": [
        680,
        -200
      ],
      "parameters": {
        "unit": "minutes"
      },
      "typeVersion": 1.1
    },
    {
      "id": "9aa9ddb5-9091-4726-917c-bce9d0f207c9",
      "name": "Merge Results",
      "type": "n8n-nodes-base.code",
      "position": [
        320,
        0
      ],
      "parameters": {
        "jsCode": "// This re-maps each input item (if needed)\nconst newItems = items.map(item => ({\n  json: {\n    Domain: item.json.Domain,\n    Availability: item.json.Availability\n  }\n}));\n\nreturn newItems;"
      },
      "typeVersion": 2
    },
    {
      "id": "bb2fd210-fd11-4712-94d0-fabb7060705c",
      "name": "Loop Over Domains",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        120,
        0
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 3
    },
    {
      "id": "5d97cd82-f7d5-4f98-a789-8c0fcf473f0f",
      "name": "Namesilo Requests",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        320,
        -200
      ],
      "parameters": {
        "url": "=https://www.namesilo.com/apibatch/checkRegisterAvailability?version=1&type=json&key={{ $('Set Data').item.json['Namesilo API Key'] }}&domains={{ $json.batchedDomains }}",
        "options": {}
      },
      "retryOnFail": true,
      "typeVersion": 4.2,
      "waitBetweenTries": 5000
    },
    {
      "id": "c4f38893-636a-4293-9e10-395be30683d0",
      "name": "Parse Data",
      "type": "n8n-nodes-base.code",
      "position": [
        500,
        -200
      ],
      "parameters": {
        "jsCode": "// Ensure input data exists\nif (!$json || !$json.data) {\n    throw new Error(\"Invalid input data format\");\n}\n\n// Parse the JSON string inside `data`\nlet parsedData;\ntry {\n    parsedData = JSON.parse($json.data);\n} catch (error) {\n    throw new Error(\"Error parsing JSON data: \" + error.message);\n}\n\n// Extract available and unavailable domains safely\nconst availableDomains = parsedData.reply?.available ? Object.values(parsedData.reply.available) : [];\nconst unavailableDomains = parsedData.reply?.unavailable ? Object.values(parsedData.reply.unavailable) : [];\n\n// Prepare the output array\nconst output = [];\n\n// Process available domains\navailableDomains.forEach(domainObj => {\n    if (domainObj && domainObj.domain) {\n        output.push({\n            Domain: domainObj.domain,\n            Availability: \"Available\"\n        });\n    }\n});\n\n// Process unavailable domains\nunavailableDomains.forEach(domain => {\n    if (typeof domain === \"string\") {\n        output.push({\n            Domain: domain,\n            Availability: \"Unavailable\"\n        });\n    } else if (typeof domain === \"object\" && domain.domain) {\n        output.push({\n            Domain: domain.domain,\n            Availability: \"Unavailable\"\n        });\n    }\n});\n\n// Return the structured data\nreturn output;"
      },
      "typeVersion": 2
    },
    {
      "id": "ec7b8311-65b7-45b0-85ae-b91d7c82e123",
      "name": "Convert to Excel",
      "type": "n8n-nodes-base.convertToFile",
      "position": [
        500,
        0
      ],
      "parameters": {
        "options": {
          "fileName": "domain_results.xlsx"
        },
        "operation": "xlsx",
        "binaryPropertyName": "={{ $json.MergedDomains }}"
      },
      "typeVersion": 1.1
    },
    {
      "id": "7d33c875-ce2d-404c-97a0-f551939d59f4",
      "name": "Start",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -420,
        0
      ],
      "parameters": {},
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "1a05d4b0-db0c-4554-8abf-0547130be16c",
  "connections": {
    "Wait": {
      "main": [
        [
          {
            "node": "Loop Over Domains",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Start": {
      "main": [
        [
          {
            "node": "Set Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set Data": {
      "main": [
        [
          {
            "node": "Convert & Split Domains",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Parse Data": {
      "main": [
        [
          {
            "node": "Wait",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Merge Results": {
      "main": [
        [
          {
            "node": "Convert to Excel",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop Over Domains": {
      "main": [
        [
          {
            "node": "Merge Results",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Namesilo Requests",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Namesilo Requests": {
      "main": [
        [
          {
            "node": "Parse Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Convert & Split Domains": {
      "main": [
        [
          {
            "node": "Loop Over Domains",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Pro

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

How this works

Quickly check the availability of multiple domain names in bulk to secure your ideal web addresses without endless manual searches, saving hours of time for domain investors, marketers, or small business owners building their online presence. This workflow processes a list of domains you provide, querying Namesilo's API to return real-time availability status for each one, allowing you to focus on registration rather than research. The key step involves splitting your domain list into batches and sending targeted HTTP requests to Namesilo, followed by merging the results into a clear, actionable format.

Use this workflow when you have 50 or more domains to evaluate at once, especially for brainstorming brand names or scouting expired domains, ensuring compliance with Namesilo's rate limits through built-in waits. Avoid it for single-domain checks, where a simple browser search suffices, or if you need advanced features like WHOIS data beyond basic availability. Common variations include adapting the HTTP request for other registrars like GoDaddy or adding email notifications for available domains.

About this workflow

Namesilo Bulk Domain Availability [Template]. Uses stickyNote, splitInBatches, httpRequest, convertToFile. Event-driven trigger; 10 nodes.

Source: https://github.com/Zie619/n8n-workflows — original creator credit. Request a take-down →

More General workflows → · Browse all categories →

Related workflows

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

General

Create Animated Stories using GPT-4o-mini, Midjourney, Kling and Creatomate API. Uses httpRequest, stickyNote, manualTrigger. Event-driven trigger; 51 nodes.

HTTP Request
General

Generate Leads with Google Maps - AlexK1919. Uses manualTrigger, scheduleTrigger, executeWorkflowTrigger, stopAndError. Event-driven trigger; 42 nodes.

Execute Workflow Trigger, Stop And Error, HTTP Request +1
General

Limit Code. Uses microsoftOutlookTrigger, httpRequest, limit, noOp. Event-driven trigger; 41 nodes.

Microsoft Outlook Trigger, HTTP Request
General

AutoQoutesV2_template. Uses manualTrigger, httpRequest, stickyNote, googleSheets. Event-driven trigger; 28 nodes.

HTTP Request, Google Sheets, Google Drive +2
General

Turn YouTube Videos into Summaries, Transcripts, and Visual Insights. Uses manualTrigger, stickyNote, httpRequest. Event-driven trigger; 26 nodes.

HTTP Request