npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

n8n-nodes-firmendata

v0.2.0

Published

n8n node for firmendata — German company data: register profiles, financials, shareholders and UBO

Readme

n8n-nodes-firmendata

An n8n community node for firmendata — data on 2.4 million German companies from the Unternehmensregister and Handelsregister: register profiles, parsed annual financial statements, shareholder cap tables, UBO chains and register history.

npm License: MIT

Installation · Operations · Credentials · Compatibility · Resources

Installation

Follow the community nodes installation guide and enter n8n-nodes-firmendata as the npm package name.

Operations

Company

| Operation | What it returns | |---|---| | Autocomplete | Company-name suggestions for a fragment. Costs no credits. | | Search | The commercial register, across 30 filters — legal form, legal status, register court, federal state, city, industry, revenue, balance-sheet total, employees, founding date, public-procurement role and more, with dropdowns wherever the API has a fixed set of values. Cursor-paginated. | | Get | Full profile for one company | | Get Financials | Multi-year financial statements, parsed into figures rather than PDFs | | Get Shareholders | Cap table from the most recent Gesellschafterliste (GmbH/UG) | | Get UBO | Ultimate beneficial owners, resolved through ownership chains | | Get History | Chronological register history |

Every operation after Autocomplete takes a Company ID (eu_id), which Search and Autocomplete return on each hit.

The node is also usable as an AI tool, so an agent can look companies up directly.

Typical flow

Search → iterate hits → Get UBO for each, for a KYC or onboarding check:

Search (Legal Status: Insolvent, Total Assets Min: 1000000)
  → Loop Over Items
    → FirmenData: Get UBO  (Company ID = {{ $json.eu_id }})

Filtering on company size? Use Total Assets, not Revenue. Small and medium-sized German companies file abridged accounts — a balance sheet, but no profit-and-loss statement and no headcount. So a revenue or employee filter silently narrows your results to the minority that publish a full P&L, while the balance-sheet total is available for every filing company.

Credentials

  1. Create an API key at firmendata.com → Account → API Keys. The free plan includes 100 credits.
  2. In n8n, add a FirmenData API credential and paste the key.
  3. Press Test — it calls the autocomplete endpoint, which costs no credits, so testing never spends your balance.

Operations are priced in credits per call; see the pricing page. Failed requests (4xx/5xx) are never charged.

Compatibility

Tested against n8n 1.x with n8nNodesApiVersion: 1. Requires Node.js 20.15+.

The package has no runtime dependencies — a requirement for n8n's verified community nodes, and the reason the node is written in declarative style: it describes its HTTP requests via routing and lets n8n's own request helper execute them, rather than shipping an HTTP client of its own.

Resources

Development

npm install
npm run dev       # starts n8n with this node loaded
npm run generate  # regenerate the search filters from contracts/openapi.v1.json
npm run lint      # enforces much of n8n's verification checklist
npm test          # the exact ESLint gate the submission scanner applies
npm run build

The Search operation's filters are generated, not hand-written: contracts/openapi.v1.json (the same contract the firmendata npm and PyPI SDKs generate their types from) is the input, and nodes/FirmenData/searchFilters.ts is the output. Names, descriptions, dropdown options and numeric bounds all come from the spec, so the node cannot drift from the API the way it did when this list was maintained by hand.

To pick up an API change: copy the new contract in and run npm run generate. Both npm test and npm run build re-run it with --check and fail if the committed file is stale.

License

MIT