AutomationFlowsAI & RAG › Generate Domain Insights with Whois Lookup and Gpt-5-nano via Rapidapi

Generate Domain Insights with Whois Lookup and Gpt-5-nano via Rapidapi

ByOriol Seguí @oxsr11 on n8n.io

This template allows you to automatically fetch WHOIS data for any domain and display it in a clean, modern HTML card. It doesn’t just stop at showing raw registry data — it also uses a lightweight AI model to generate a short analysis or conclusion about the domain.

Webhook trigger★★★★☆ complexityAI-powered15 nodesOpenAIHTTP Request ToolHTTP Request
AI & RAG Trigger: Webhook Nodes: 15 Complexity: ★★★★☆ AI nodes: yes Added:

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

This workflow follows the HTTP Request → HTTP Request Tool 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": true
  },
  "nodes": [
    {
      "id": "eac50c4b-7ab3-4d18-917b-4f6cbf8a3358",
      "name": "Webhook",
      "type": "n8n-nodes-base.webhook",
      "position": [
        -560,
        96
      ],
      "parameters": {
        "path": "76654401-5166-4a5a-94df-fa3a2d986142",
        "options": {},
        "responseMode": "responseNode"
      },
      "typeVersion": 2.1
    },
    {
      "id": "8a8ce283-6ee1-40e3-abf5-5e4ad7ac1f66",
      "name": "Respond to Webhook",
      "type": "n8n-nodes-base.respondToWebhook",
      "position": [
        832,
        96
      ],
      "parameters": {
        "options": {},
        "respondWith": "text",
        "responseBody": "=<div class=\"whois-card\">\n  <h2>\n    WHOIS \u2014\n    {{ $('Request API').item.json['ergates.net'][0]['0'].replace(/^\\s*Domain Name:\\s*/i,'').trim() }}\n  </h2>\n\n  <div class=\"whois-grid\">\n    <div class=\"row\">\n      <span class=\"k\">Registry Domain ID</span>\n      <span class=\"v\">{{ $('Request API').item.json['ergates.net'][1]['1'].replace(/^\\s*Registry Domain ID:\\s*/i,'').trim() }}</span>\n    </div>\n\n    <div class=\"row\">\n      <span class=\"k\">Registrar WHOIS</span>\n      <span class=\"v\">{{ $('Request API').item.json['ergates.net'][2]['2'].replace(/^\\s*Registrar WHOIS Server:\\s*/i,'').trim() }}</span>\n    </div>\n\n    <div class=\"row\">\n      <span class=\"k\">Registrar URL</span>\n      <span class=\"v\">{{ $('Request API').item.json['ergates.net'][3]['3'].replace(/^\\s*Registrar URL:\\s*/i,'').trim() }}</span>\n    </div>\n\n    <div class=\"row\">\n      <span class=\"k\">Updated</span>\n      <span class=\"v\">{{ $('Request API').item.json['ergates.net'][4]['4'].replace(/^\\s*Updated Date:\\s*/i,'').trim() }}</span>\n    </div>\n\n    <div class=\"row\">\n      <span class=\"k\">Created</span>\n      <span class=\"v\">{{ $('Request API').item.json['ergates.net'][5]['5'].replace(/^\\s*Creation Date:\\s*/i,'').trim() }}</span>\n    </div>\n\n    <div class=\"row\">\n      <span class=\"k\">Expiry</span>\n      <span class=\"v\">{{ $('Request API').item.json['ergates.net'][6]['6'].replace(/^\\s*Registry Expiry Date:\\s*/i,'').trim() }}</span>\n    </div>\n\n    <div class=\"row\">\n      <span class=\"k\">Registrar</span>\n      <span class=\"v\">{{ $('Request API').item.json['ergates.net'][7]['7'].replace(/^\\s*Registrar:\\s*/i,'').trim() }}</span>\n    </div>\n\n    <div class=\"row\">\n      <span class=\"k\">IANA ID</span>\n      <span class=\"v\">{{ $('Request API').item.json['ergates.net'][8]['8'].replace(/^\\s*Registrar IANA ID:\\s*/i,'').trim() }}</span>\n    </div>\n\n    <div class=\"row\">\n      <span class=\"k\">Abuse Email</span>\n      <span class=\"v\">{{ $('Request API').item.json['ergates.net'][9]['9'].replace(/^\\s*Registrar Abuse Contact Email:\\s*/i,'').trim() }}</span>\n    </div>\n\n    <div class=\"row\">\n      <span class=\"k\">Abuse Phone</span>\n      <span class=\"v\">{{ $('Request API').item.json['ergates.net'][10]['10'].replace(/^\\s*Registrar Abuse Contact Phone:\\s*/i,'').trim() }}</span>\n    </div>\n\n    <div class=\"row\">\n      <span class=\"k\">Domain Status</span>\n      <span class=\"v\">\n        {{ $('Request API').item.json['ergates.net'][11]['11'].replace(/^\\s*Domain Status:\\s*/i,'').replace(/\\shttps?:.*/,'').trim() }}<br>\n        {{ $('Request API').item.json['ergates.net'][12]['12'].replace(/^\\s*Domain Status:\\s*/i,'').replace(/\\shttps?:.*/,'').trim() }}\n      </span>\n    </div>\n\n    <div class=\"row\">\n      <span class=\"k\">Name Servers</span>\n      <span class=\"v\">\n        {{ $('Request API').item.json['ergates.net'][13]['13'].replace(/^\\s*Name Server:\\s*/i,'').trim() }}<br>\n        {{ $('Request API').item.json['ergates.net'][14]['14'].replace(/^\\s*Name Server:\\s*/i,'').trim() }}\n      </span>\n    </div>\n\n    <div class=\"row\">\n      <span class=\"k\">DNSSEC</span>\n      <span class=\"v\">{{ $('Request API').item.json['ergates.net'][15]['15'].replace(/^\\s*DNSSEC:\\s*/i,'').trim() }}</span>\n    </div>\n\n    <div class=\"row\">\n      <span class=\"k\">Last WHOIS Update</span>\n      <span class=\"v\">{{ $('Request API').item.json['ergates.net'][17]['17'].replace(/[<>]/g,'').replace(/^\\s*Last update of whois database:\\s*/i,'').trim() }}</span>\n    </div>\n  </div>\n\n  <div class=\"row\">\n    <span class=\"k\">ChatGPT Description</span>\n    <span class=\"v\">{{ $json.message?.content || '' }}</span>\n  </div>\n</div>\n\n\n<style>\n  :root{\n  --whois-bg: #ffffff;\n  --whois-fg: #0f1115;\n  --whois-muted: #556;\n  --whois-border: #e7e9ee;\n  --whois-soft: #f7f8fb;\n  --whois-radius: 14px;\n  --whois-gap: 12px;\n  --whois-shadow: 0 6px 24px rgba(16,24,40,.06);\n  --whois-font: system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Arial,sans-serif;\n}\n\n.whois-card{\n  font-family: var(--whois-font);\n  max-width: 760px;\n  margin: 16px auto;\n  padding: 20px 22px;\n  background: var(--whois-bg);\n  color: var(--whois-fg);\n  border: 1px solid var(--whois-border);\n  border-radius: var(--whois-radius);\n  box-shadow: var(--whois-shadow);\n}\n\n.whois-card h2{\n  margin: 0 0 14px;\n  font-size: 20px;\n  line-height: 1.2;\n  letter-spacing: .2px;\n}\n\n.whois-grid{\n  display: grid;\n  gap: var(--whois-gap);\n}\n\n.whois-card .row{\n  display: grid;\n  grid-template-columns: 180px 1fr;\n  align-items: start;\n  gap: 14px;\n  padding: 12px 14px;\n  background: var(--whois-soft);\n  border: 1px solid var(--whois-border);\n  border-radius: 12px;\n  transition: transform .15s ease, background-color .2s ease, border-color .2s ease;\n}\n\n.whois-card .row:hover{\n  transform: translateY(-1px);\n  background: #fff;\n  border-color: #dfe3ea;\n}\n\n.whois-card .k{\n  font-weight: 600;\n  color: var(--whois-muted);\n  letter-spacing: .1px;\n}\n\n.whois-card .v{\n  color: var(--whois-fg);\n  word-break: break-word;\n  white-space: pre-wrap;\n}\n\n/* Peque\u00f1os detalles tipogr\u00e1ficos */\n.whois-card .v a{ text-decoration: none; border-bottom: 1px dotted #c7ccd6; }\n.whois-card .v a:hover{ border-bottom-style: solid; }\n\n/* Responsivo */\n@media (max-width: 640px){\n  .whois-card{ padding: 18px; }\n  .whois-card .row{ grid-template-columns: 1fr; }\n  .whois-card h2{ font-size: 18px; }\n}\n\n/* Modo oscuro autom\u00e1tico */\n@media (prefers-color-scheme: dark){\n  :root{\n    --whois-bg: #0f1115;\n    --whois-fg: #e8ebf1;\n    --whois-muted: #c3c8d4;\n    --whois-border: #222837;\n    --whois-soft: #141925;\n    --whois-shadow: none;\n  }\n  .whois-card .row:hover{\n    background: #101522;\n    border-color: #2a3650;\n  }\n}\n\n</style>\n"
      },
      "typeVersion": 1.4
    },
    {
      "id": "0c51d286-49f8-4afd-913d-c32f1327267a",
      "name": "Message a model",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        432,
        96
      ],
      "parameters": {
        "modelId": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-5-nano",
          "cachedResultName": "GPT-5-NANO"
        },
        "options": {},
        "messages": {
          "values": [
            {
              "role": "system",
              "content": "=Your task is to analyze the whois shared by the user and draw a conclusion or analysis based on your knowledge. \n\n\nImportant: make a short description\n\nForced to search the web: {{ $('OPTIONS').item.json.search_web }} (if this value is true you can use the tool to search the web, search for bing (https://www.bing.com/search?q=example)\n\nRespond in this language: {{ $('OPTIONS').item.json.lang }}"
            },
            {
              "content": "=Whois recivido:\n\n{{ $json[\"ergates.net\"].map(e => `<li>${Object.values(e)[0]}</li>`).join(\"\") }}\n"
            }
          ]
        }
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.8
    },
    {
      "id": "5819375a-1eda-43f7-b9d5-2b372cbee0f6",
      "name": "OPTIONS",
      "type": "n8n-nodes-base.set",
      "position": [
        -208,
        96
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "6dd785e8-f276-4661-9ea4-0ca1c6448dd1",
              "name": "lang",
              "type": "string",
              "value": "spanish"
            },
            {
              "id": "9808cfc4-bd20-4e92-add3-715d0e79964a",
              "name": "search_web",
              "type": "boolean",
              "value": true
            },
            {
              "id": "10c0fdac-a571-4dc8-81d1-6b7b666f3f51",
              "name": "domain",
              "type": "string",
              "value": "ergates.net"
            },
            {
              "id": "967dc9ed-e29c-4c51-bfd7-7047bae8adff",
              "name": "rapidapi",
              "type": "string",
              "value": "d33cc41e4emsh5252b1267d08d3ap14fe71jsnc8b777bbd7cc"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "62138ca3-a116-4203-b20d-1503caf46216",
      "name": "HTTP Request1",
      "type": "n8n-nodes-base.httpRequestTool",
      "position": [
        576,
        288
      ],
      "parameters": {
        "url": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('URL', ``, 'string') }}",
        "options": {},
        "toolDescription": "Makes an HTTP request and returns the response data (using: https://www.bing.com/search?q=example)"
      },
      "typeVersion": 4.2
    },
    {
      "id": "f0bcf135-ff7b-4991-b1e1-84a540e1340c",
      "name": "Request API",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        144,
        96
      ],
      "parameters": {
        "url": "https://pointsdb-bulk-whois-v1.p.rapidapi.com/whois",
        "options": {},
        "sendQuery": true,
        "sendHeaders": true,
        "queryParameters": {
          "parameters": [
            {
              "name": "domains",
              "value": "={{ $json.domain }}"
            },
            {
              "name": "format",
              "value": "split"
            }
          ]
        },
        "headerParameters": {
          "parameters": [
            {
              "name": "x-rapidapi-host",
              "value": "pointsdb-bulk-whois-v1.p.rapidapi.com"
            },
            {
              "name": "x-rapidapi-key",
              "value": "={{ $json.rapidapi }}"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "cc6f75bc-f84f-45b2-b4bd-0fcca12efe5e",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -160,
        -384
      ],
      "parameters": {
        "color": 3,
        "width": 480,
        "height": 192,
        "content": "## Disscount Code\nIf you\u2019ve made it this far, send a **screenshot** to **[oriolrotllant3@gmai.com](mailto:oriolrotllant3@gmai.com)** and receive a **25% discount** on any of my products. *Limited offer. One use per person.*\n"
      },
      "typeVersion": 1
    },
    {
      "id": "100786c1-1cd9-43d1-96c2-581d7b36e5e9",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1088,
        -384
      ],
      "parameters": {
        "color": 4,
        "width": 256,
        "height": 800,
        "content": "## LICENSE\n\nThis project is distributed under a custom open license. You are free to use and modify this work, but not to sell copies of it.\n\n### Key Terms:\n\n* **Use**: You may use this project for personal, educational, or commercial purposes.\n\n* **Modification**: You are permitted to modify the code or content as you wish.\n\n* **Distribution**: You may share copies of the project, both in its original and modified versions, provided that such distribution is **non-commercial**. Selling copies of this project, in whole or in part, is not permitted.\n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "224776e0-c229-4b39-99e7-6f1dcf2203bb",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -672,
        -384
      ],
      "parameters": {
        "color": 3,
        "width": 480,
        "height": 192,
        "content": "## Welcome\nThis flow receives requests via Webhook, queries the domain's WHOIS via API, and, with the help of lightweight AI (GPT-5-Nano) and optional web search, generates a concise and clear analysis. The response is returned as an HTML card with a clean design, automatic dark mode, and key fields (dates, registrar, DNS, status), offering a modern, visual, and straightforward experience from the first glance."
      },
      "typeVersion": 1
    },
    {
      "id": "3da895c9-c20c-4cdc-9341-541c5db5f51c",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -672,
        -160
      ],
      "parameters": {
        "color": 5,
        "width": 320,
        "height": 576,
        "content": "## Trigger\nThe Webhook node receives external requests (HTTP) and acts as an entry point to the flow, starting execution when a request arrives at the generated URL."
      },
      "typeVersion": 1
    },
    {
      "id": "bbff074d-5a28-4ddc-af89-f1899dec1404",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -320,
        -160
      ],
      "parameters": {
        "color": 5,
        "width": 320,
        "height": 576,
        "content": "## Config Node\nThe OPTIONS node defines and assigns initial variables (language, domain, API key, web search, etc.) that will be used in subsequent nodes in the flow to maintain centralized configuration."
      },
      "typeVersion": 1
    },
    {
      "id": "7e55dc3a-ff46-447f-94b9-936c71cbb455",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        32,
        -160
      ],
      "parameters": {
        "color": 5,
        "width": 320,
        "height": 576,
        "content": "## Req API Node\nThe Request API node makes the call to the external WHOIS service (RapidAPI), sending the configured domain and returning the registration information in a split format so that the rest of the flow can process it."
      },
      "typeVersion": 1
    },
    {
      "id": "d1d75b26-aa0d-4e58-ad43-9e900bf34c17",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        384,
        -160
      ],
      "parameters": {
        "color": 5,
        "width": 320,
        "height": 576,
        "content": "## GPT\nMessage to model: Sends the WHOIS (and context) to GPT-5-Nano to generate a short parse in the language defined in OPTIONS, and can invoke a web search if search_web is true.\n\nHTTP Request1 (AI Tool): Provides the AI \u200b\u200bwith a tool to launch HTTP searches (e.g., Bing) when prompted, returning the data to the model node."
      },
      "typeVersion": 1
    },
    {
      "id": "b03d3421-3d79-4bf3-a3b5-27dd0e134a83",
      "name": "Sticky Note7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        736,
        -160
      ],
      "parameters": {
        "color": 5,
        "width": 320,
        "height": 576,
        "content": "## Response\nThe Respond to Webhook node sends the final output of the flow back to the requesting client. In this case, it returns a stylized HTML card with the processed WHOIS data and the AI-generated description, providing a clear, browser-ready presentation."
      },
      "typeVersion": 1
    },
    {
      "id": "8e7e4506-9d35-49e7-bb52-1c27cfdc6985",
      "name": "Sticky Note8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        352,
        -384
      ],
      "parameters": {
        "color": 3,
        "width": 704,
        "height": 192,
        "content": "## BY OXSR\nBy OXSR, visit my profile for professional and business \n\nWorkflows :: https://n8n.io/creators/oxsr11/\n\nGithub: https://github.com/oxsr"
      },
      "typeVersion": 1
    }
  ],
  "connections": {
    "OPTIONS": {
      "main": [
        [
          {
            "node": "Request API",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Webhook": {
      "main": [
        [
          {
            "node": "OPTIONS",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Request API": {
      "main": [
        [
          {
            "node": "Message a model",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "HTTP Request1": {
      "ai_tool": [
        [
          {
            "node": "Message a model",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Message a model": {
      "main": [
        [
          {
            "node": "Respond to Webhook",
            "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 template allows you to automatically fetch WHOIS data for any domain and display it in a clean, modern HTML card. It doesn’t just stop at showing raw registry data — it also uses a lightweight AI model to generate a short analysis or conclusion about the domain.

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

More AI & RAG workflows → · Browse all categories →

Related workflows

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

AI & RAG

My workflow 8. Uses openAi, slack, httpRequestTool, httpRequest. Webhook trigger; 15 nodes.

OpenAI, Slack, HTTP Request Tool +1
AI & RAG

Main-Workflow. Uses openAi, slack, httpRequestTool, httpRequest. Webhook trigger; 6 nodes.

OpenAI, Slack, HTTP Request Tool +1
AI & RAG

This workflow captures new leads via webhook, enriches and scores them with Apollo and Google Gemini, logs everything in Google Sheets, and automates outreach, reply handling, follow-ups, meeting prep

HTTP Request, Google Gemini, Google Sheets +3
AI & RAG

This powerful n8n automation workflow is designed to execute advanced B2B lead enrichment and hyper-personalization for cold email outreach. By orchestrating a complex chain of data scraping, AI analy

OpenAI, HTTP Request, Airtable
AI & RAG

Propulsar — Content Engine v3. Uses openAi, httpRequest, googleSheets. Webhook trigger; 73 nodes.

OpenAI, HTTP Request, Google Sheets