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

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

Eu Clara – Funil Kiwify Completo. Uses postgres, openAi, httpRequest, gmail. Webhook trigger; 70 nodes.

Postgres, OpenAI, HTTP Request +1
AI & RAG

This workflow bridges the gap between raw product data and revenue sales tools. It automates the entire Product Qualified Lead (PQL) lifecycle—from real-time intent routing to churn prevention—reducin

HTTP Request, Anthropic, OpenAI
AI & RAG

Lua Nova - Sistema Completo. Uses postgres, httpRequest, openAi. Webhook trigger; 55 nodes.

Postgres, HTTP Request, OpenAI
AI & RAG

User Signup & Verification: The workflow starts when a user signs up. It generates a verification code and sends it via SMS using Twilio. Code Validation: The user replies with the code. The workflow

Postgres, HTTP Request, OpenAI +2