n8n
Add StackScan as a step in any n8n workflow.
What is the n8n node?
n8n is a workflow automation tool you can self-host or run in their cloud. The StackScan community node adds our technology data as a step inside any n8n workflow, so you can look up what a website runs, find the company behind it, or size a technology's install base, and pass the result straight into whatever comes next.
It talks to the same public API as everything else we offer, so the data and the credit cost are identical to calling the API yourself. The node just saves you writing the HTTP step.
What it can do
The node has three resources.
Company
- Look Up Company returns the company behind a website, with industry and location. A full URL is accepted, not just a bare domain. There is a fresh option to bypass the response cache when you need the current answer rather than a recent one.
Domain
- Look Up Technologies returns every technology detected on one website.
- Look Up Technologies in Bulk does the same for up to 100 websites in a single call. Use this rather than looping the single lookup: it is one request instead of a hundred, and it is cheaper.
Technology
- Get Usage returns how many websites run a given technology and where they are.
- Start List Export kicks off a full export of every website running a technology. Exports run in the background and are collected when ready, because a large technology can run to millions of rows.
What it costs
Credits are charged by the API, not by n8n, on exactly the same terms as a direct call. Bulk lookups charge per resolved domain, so a batch of 100 where 90 resolve costs 90, not 100. List exports charge one flat credit regardless of how many rows come back.
A lookup that finds nothing is not charged.
What it does not do
It reads. There is no write side, because we hold no contact data of our own to push anywhere. If you want StackScan data landing in a CRM, the pattern is to read it here and write it with whichever node already talks to that CRM.
Is it verified?
Not yet. It is a community node, published to npm with a provenance attestation so you can verify it was built from our repository by our workflow. Verification by n8n is a separate review we submit after publishing. Until that clears, self-hosted instances need to allow community nodes, which is the default.
Installing the StackScan node in n8n
Installation takes a couple of minutes and needs one value from your dashboard.
1. Get your API token
In StackScan, open My Account → API Tokens and create a token. It is shown once, so copy it before you leave the page. If you lose it, revoke it and make another; there is no way to read an existing token back.
That token is the only thing the credential needs. The workspace is chosen on the node itself, not in the credential, so one credential can drive steps against different workspaces in the same workflow.
2. Install the node
n8n Cloud
Open Settings → Community nodes → Install, enter the package name, agree to the community node terms and install.
n8n-nodes-stackscan
Self-hosted
Either use the same Settings screen, or install it into your n8n data directory:
cd ~/.n8n
npm install n8n-nodes-stackscan
Restart n8n afterwards. If you run n8n in Docker, install into the mounted volume that holds .n8n, not into the container filesystem, or the node disappears on the next pull.
Self-hosted instances need N8N_COMMUNITY_PACKAGES_ENABLED left at its default of true. If someone has turned community packages off, the node will not appear in the search.
3. Add the credential
Add any StackScan step to a workflow and choose Create new credential. There is one field:
- API Token, the value from step 1.
Save it. n8n verifies the credential immediately by calling /v1/me, so a bad token fails at this point rather than silently later. If it fails, the usual cause is a trailing space on a pasted token.
4. Pick the workspace
Every StackScan step starts with a Workspace dropdown, populated from the workspaces your token can reach.
This matters more than it looks. Each workspace has its own credits and its own data, so picking the wrong one spends the wrong balance. If you only have one workspace it is selected for you. You can also supply an ID through an expression when the workspace should vary per item.
5. Pick a resource and operation
| Resource | Operation | Returns |
|---|---|---|
| Company | Look Up Company | The company behind a website, with industry and location |
| Domain | Look Up Technologies | Every technology on one website |
| Domain | Look Up Technologies in Bulk | The same for up to 100 websites in one call |
| Technology | Get Usage | How many websites run a technology, and where |
| Technology | Start List Export | Begins a full export of everything running a technology |
Verifying the package is genuine
Every release is published from our GitHub repository through a workflow that attaches an npm provenance statement. You can confirm a given version was built from our source, by that workflow, rather than uploaded by hand:
npm view n8n-nodes-stackscan
Look for the provenance line on the npm page for the version you installed.
Troubleshooting
The node does not appear after installing. Restart n8n. On self-hosted, confirm you installed into the same .n8n directory the running instance uses.
Credential test fails with 401. The token is wrong, revoked, or has a trailing space. Create a fresh one.
A lookup returns nothing and costs nothing. That is a miss, not an error. We do not charge for a domain we cannot resolve, and the node passes the empty result through so your workflow can branch on it.
429 responses. You are over the per-token rate limit. The current limits are published on the API page. Add a Wait node, or switch a loop of single lookups to one bulk lookup.
Example n8n workflows
Four patterns that cover most of what people build with the node. Each one is small on purpose; the value is in what you attach either side of the StackScan step.
Enrich a new CRM record
Trigger: your CRM's "new company" node. Step: StackScan → Company → Look Up Company, with the record's website as the domain. Then: write industry, size and location back to the record.
Add an If node on whether a company came back. A miss returns an empty result and costs nothing, so branching on it is free and stops you writing blanks over fields a human filled in.
Qualify inbound signups
Trigger: webhook from your signup flow. Step: StackScan → Domain → Look Up Technologies on the email domain. Then: route the lead based on what they run.
Someone already running a competitor is a different conversation from someone running nothing in your category. This is the one that tends to earn its keep, because it happens at the moment of interest rather than in a batch overnight.
Enrich a list you already have
Trigger: a spreadsheet, a CRM export, or whenever the list changes. Step: StackScan → Domain → Look Up Technologies in Bulk, 100 domains per call. Then: write the stack back beside each row.
Use the bulk operation, not a loop over the single lookup. One request instead of a hundred, and you are charged only for domains that resolve. A Split In Batches node feeding 100 at a time is the shape you want.
Do not put this on a nightly schedule. Our detections change when we recrawl the web, not every night, so a daily re-scan of the same list spends credits to be told what you already knew. Re-run it when the list changes, or occasionally to pick up a new crawl. If you want to know when something changed, trigger on your side of the data rather than polling ours.
Build a target list from a technology
Trigger: manual, or whenever your ICP changes. Step: StackScan → Technology → Start List Export. Then: wait, collect and push into wherever your outbound lives.
Exports run in the background because a large technology runs to millions of rows. The operation returns a report id immediately; poll it and download when it is ready. One flat credit regardless of size.
Two things worth knowing
Credits are charged by the API, not by n8n. A workflow that runs every minute against the same domain will spend real credits every minute. If you are polling, cache the result in your own store, or use the fresh option only when you actually need to bypass our cache.
A full URL is fine. The domain fields accept https://example.com/pricing, not just example.com, so you usually do not need a cleanup step before the lookup.