The Forgeby crawler

If you found something beginning forgeby- in your access log, this page tells you exactly what it is, what it took, and how to stop it. If you would rather just block us, skip to how to stop us. One line stops all of it.

Who is running it

Two companies appear if you look this up, so here is the honest split rather than a single name that will not match what you find.

The address you sawNovalo Technologies AB holds the AWS account the crawler runs in, so a WHOIS or abuse lookup on 51.21.44.111 leads to Amazon and then to Novalo. Novalo is an AWS consulting partner and provides the infrastructure.
The crawler itselfZmart Com West AB (org.nr 559019-9161), trading as Forgeby, Sweden, operates it and decides what it does. For anything about the data it holds, Forgeby is the controller under the GDPR.

We build a business directory for technology consultancies. Write to privacy@forgeby.com about anything on this page and a human will answer. If you have already raised it with Amazon, it reaches us either way.

How to recognise it

Seven of our agents read websites, and every agent we run is named forgeby- something. That is deliberate, so that a single robots.txt line covers all of them and you never have to keep a list up to date. Anything not on this list is not us.

forgeby-ownsiteReads the pages where a company describes itself and its people: an about page, a team page, a contact page.
forgeby-techdetectReads your homepage once to record which web technologies it runs on.
forgeby-domainfindChecks whether a website belongs to a company we already hold a record for. One request, and it stops as soon as the answer is clear.
forgeby-domainfillThe same check, for companies outside the Nordics.
forgeby-chatdetectReads your homepage to record which chat or assistant widget it runs, and at most two further pages that your homepage links to.
forgeby-cloudsigReads your homepage once to record which cloud your public assets are served from.
forgeby-originThe same check, looking at where your site is hosted.

Nine more exist, for completeness, though none of them browses a website the way the seven above do. forgeby-verify makes a single request to a page we already hold a link to, purely to check that the link still resolves. forgeby-msdocs, forgeby-brreg, forgeby-stats, forgeby-registry-load, forgeby-estate and forgeby-ct, forgeby-awsdocs and forgeby-webfetch only ever call published APIs and open datasets: Microsoft's documentation, the Norwegian company register, the Nordic statistics offices, the Estonian, French and UK company registers, a public address-to-network mapping table and a public certificate-transparency log. They will not appear in your logs unless you are one of those. All of them answer to the same User-agent: forgeby line.

Full user agentMozilla/5.0 (compatible; forgeby-name/1.0; +https://forgeby.com/crawler.html)
Source address51.21.44.111, and only that address. Anything else claiming to be us is not us.
RequestsOne at a time per site, at least 1.5 seconds apart. That 1.5 seconds is a floor: if your robots.txt sets a longer Crawl-delay, we use yours.
Depthforgeby-ownsite reads your homepage plus at most four pages that your homepage links to; forgeby-chatdetect your homepage plus at most two. The rest read a single page. None of them constructs a URL: we follow only links you have published. This was not true of forgeby-chatdetect before 26 August 2026 — see “Changes we made on 26 August 2026” below.
If we miss twiceTwo failed requests in a row and the agent leaves your site alone for the rest of that run, whatever the reason for the failure.

What it reads, and why

Public pages where a company describes itself and its people: an about page, a team page, a contact page. We record the business contact details a company has chosen to publish about its own staff, so that a consultancy looking for the right person to speak to can find one. Everything we hold, and the legal basis for it, is set out in the privacy notice, including how any individual can object.

The notice is published in the languages the people in it read, because a notice somebody cannot read is not a notice: English · Svenska · Norsk · Dansk · Suomi · Français · Nederlands

What they do not do

  • They do not request URLs you have not linked. They do not guess paths.
  • They do not touch anything behind a login, and they never attempt a CAPTCHA.
  • They do not ignore robots.txt, and they obey Crawl-delay where you set one.
  • They do not fetch anything at all from a domain on our exclusion list, robots.txt or no robots.txt.
  • They do not collect consumer or private-individual data. Business roles only.
  • They do not resell your page content. We keep contact details, not your copy.

How to stop us

Any one of these works, and none of them needs to involve us.

One line in robots.txt stops every agent we run, now and in future:

User-agent: forgeby
Disallow: /

Because every agent is named forgeby- something, that prefix matches all of them, including any we add later. If you would rather stop just one, name it in full:

User-agent: forgeby-ownsite
Disallow: /

We re-read robots.txt on every visit, so a change takes effect immediately, and we treat a disallow as final rather than as something to work around. We obey Crawl-delay where you set one, and it can only slow us down, never speed us up.

You can also block 51.21.44.111 at your edge, or mail privacy@forgeby.com with your domain and we will add it to a permanent exclusion list that every agent checks before it requests anything. It covers your subdomains too. No reason required, and we do not ask for one.

Changes we made on 26 August 2026

On 26 August we were reported a second time. The cause was an agent this page never listed.

One of our own crawlers was not named forgeby- anything, so the opt-out rule above could not stop it. It identified itself as AlloyChatDetect/1.0, carried no link back to this page, did not request robots.txt at all, and asked for four guessed paths — /kontakt, /kundservice, /support and /contact — on sites that had none of them. If you blocked User-agent: forgeby and it still arrived, that is why. It was our defect and we are sorry.

Everything this page said was true of the crawlers it listed and untrue of that one. It ran on a separate part of our system that the changes of 4 and 5 August never reached, and we had not enumerated that part before describing our crawling as a whole. That is the real fault, and it is ours. We have stopped it; added the reporting sites to a permanent exclusion list; renamed every agent we run to forgeby- something, so the single rule above now genuinely covers all of them; and removed the guessed paths, so it follows only links your homepage publishes, at most two of them. The list above is no longer a description of some of what we run. It is all of it.

Changes we made on 4 and 5 August 2026

On 4 August we were reported for requesting a short list of guessed paths on sites that did not have them, which produced a burst of 404s and looked like scanning. That was our error, not a grey area. We removed path guessing entirely: the crawler now requests only URLs a site has itself linked. It also stops visiting a host after two consecutive failed requests, and the minimum gap between requests went from one second to 1.5.

On 5 August we found that the opt-out rule this page told you to write did not work. The rule was correct; our software was not reading it correctly, and only a blanket User-agent: * was actually stopping us. If you added a forgeby-ownsite rule before 5 August and wondered why we kept arriving, that is why. It was our defect and we are sorry. It is fixed, we have verified it against a real robots.txt, and the single User-agent: forgeby line above now genuinely stops all four agents.

Two other things changed the same day. Our other agents previously identified themselves with names that did not match this page and did not read robots.txt at all; all four now do both. And the permanent exclusion list described above is now a real list that every agent checks before every request, rather than a promise we would have had to keep by hand.

We are sorry for the noise in your logs.