Finding new customers

Watch for hiring signals in n8n, and the free UK sources that beat job boards

A company that has started hiring has budget and a problem. This watches for that, using a free jobs API and a UK source most sales tooling ignores entirely.

Build time
An afternoon
Difficulty
Intermediate
Template
8 nodes

What you need before you start

  • An n8n instance.
  • A free Adzuna developer account, which gives you an app ID and a key.
  • Optionally, the Companies House API key from the first guide in this category.
  • A list of the sectors or job titles that mean something in your business.

Two businesses in your area do the same thing, the same size, the same age. One of them advertised for an office administrator on Monday.

That one is worth a phone call this week. The other one is worth a phone call at some point.

That difference is the whole of what this build does. It is a small job, an afternoon, and it changes prospecting from working through a list in alphabetical order to working through it in order of who has something happening.

What counts as a signal

A job advert is the obvious one and the strongest of the free options, because it is dated and it describes a problem in the company’s own words. “Looking for someone to handle incoming enquiries and quotes” is not a hint. It is a business telling you what it cannot keep up with.

There is a second UK source almost nobody in sales tooling touches, and it is free: Companies House filing history. A first set of accounts, a new director appointed, a change of registered office. Each of those is a dated event on a public record with an API in front of it, and none of the American sales platforms watch it because it does not exist outside the UK.

Both go into the same sheet. The build below does jobs first, because it fires more often, and adds filings as a second branch once the first one is working.

Getting set up with Adzuna

Register at Adzuna’s developer portal. You get an app_id and an app_key immediately, and the free tier runs to around a thousand calls a month. One search a day across five terms uses about 150, so you have room.

The endpoint you want:

GET https://api.adzuna.com/v1/api/jobs/gb/search/1
  ?app_id=YOUR_ID
  &app_key=YOUR_KEY
  &what=office%20administrator
  &where=bristol
  &distance=25
  &max_days_old=7
  &results_per_page=50

max_days_old=7 is the parameter that matters most. Without it you re-read the same three-month-old adverts every morning and your deduplication step does all the work for nothing.

A note on Indeed, because half the tutorials online still say to use it: its public API closed to new applicants years ago. If a guide tells you to sign up for an Indeed publisher key, that guide has not been rewritten since about 2019.

The build, eight nodes

1. Schedule Trigger. Daily, early. Six in the morning is fine and nothing here is urgent.

2. Code node, called Searches. Your search terms and areas, as a list. Keeping them here instead of in the URL means adding a sixth term later is one line rather than a new branch:

const terms = ['office administrator', 'operations manager', 'customer service'];
const areas = ['bristol', 'bath'];
return terms.flatMap((what) => areas.map((where) => ({ json: { what, where } })));

3. HTTP Request, called Adzuna. The URL above, with {{ $json.what }} and {{ $json.where }} dropped in. Add a Wait node before it, or set the node’s batching, if you widen the search list a lot.

4. Split Out. Field results. One item per advert.

5. Filter. This is the node that decides whether the whole thing is useful or a daily nuisance, and it wants ten minutes of attention.

Exclude recruitment agencies, or your sheet becomes a list of recruiters. The company.display_name field usually gives them away: anything containing recruit, resourcing, staffing, talent or personnel is almost always an agency rather than the employer. Exclude adverts whose description mentions “on behalf of our client” for the same reason.

You will get this wrong the first time and catch a real business called something like Talent Joinery. Read the first week’s output rather than trusting it.

6. Set node, called Shape. Company, job title, location, date posted, the advert URL, and a signal column saying hiring. That last column is what lets the Companies House branch write into the same sheet later without you needing a second one.

7. Remove Duplicates. Compare on the advert id, keep across executions. Same discipline as every other build in this category: a rerun should only ever add what is new.

8. Google Sheets, Append. Or Slack, if you would rather it arrived as a message. A message is better if you will act the same day and worse if you will not, because an unread channel is a sheet with extra steps.

Adding the filings branch

Once the jobs half is running, the second source is about twenty minutes of work.

Companies House exposes a filing history per company:

GET https://api.company-information.service.gov.uk/company/{number}/filing-history

Same Basic Auth as the first guide in this category, key as the username, password blank. Run it over the companies already on your prospect list, keep anything filed in the last fortnight, and write it into the same sheet with signal set to the filing type.

Two of those filing types are worth more than the rest. AP01, a director appointed, means the shape of the business just changed. A first set of accounts, filed roughly twenty-one months after incorporation, means a company that was an idea when you last looked has now been trading long enough to have problems.

Neither is a reason to sell. Both are reasons to look.

The thing a trigger cannot tell you

It fired. That is all it knows.

A business advertising for an administrator might be growing, might be replacing someone who left on bad terms, might be doing it because the owner’s daughter is going travelling. The advert cannot tell you which, and neither can any tool built on top of it.

So the output of this belongs in front of a person who reads it and decides, not in front of a mail merge. The value is not that it found the company. It is that it found the company this week, and gave you a first line that is about them rather than about you.

That first line writes itself, incidentally. “Saw you are looking for someone to handle enquiries” is a better opening than anything a template will produce, and it is true, which most openings are not.

What to expect in week one

Too much. Widen nothing, narrow the filter, and read everything for the first five days.

The signal you are looking for is not volume. It is whether you can look at any given row and say what you would actually say to them. If you cannot, the search terms are too broad, and cutting one of them is worth more than adding three.

Published 28 August 2026. Written by the people who run this sort of thing for clients, on n8n, including our own lead pipeline.

Next in finding new customers: The review-signal watcher. Or go back to all 4 in this category.

Questions about this build

What is a buying signal in sales?

Anything public that says a business has just changed in a way that creates the problem you fix. A new job advert, a new office, a first set of accounts filed, a director appointed, a funding round. The signal itself proves nothing about need. What it does is tell you that this week is a better week to get in touch than a random one, which over a few hundred prospects is the whole difference between prospecting and pestering.

Is there a free UK jobs API?

Adzuna publishes one and its free tier runs to roughly 1,000 calls a month, which is about 33 a day. That is more than enough for a daily search across a handful of terms and areas, and it covers the UK well. Beyond that you are into negotiated pricing. Reed also publishes an API. Indeed closed its public API to new users some years ago, so guides recommending it are out of date.

Is hiring a better signal than company size?

It is a better signal than almost anything else you can get for free, because it is dated. Size tells you what a company is. A job advert posted last Tuesday tells you what it is doing, and it names the problem in the company's own words, which is a far better opening than anything you would have guessed.

How often should the watcher run?

Daily, early. A job advert is worth most in its first week, and the free tier easily covers one run a day across several searches. Running it hourly burns your quota for signals that were not going to change.

Can I use this to approach candidates rather than companies?

You can technically, and you should think hard before doing it. Job adverts often carry a named person's contact details, which makes them personal data under UK GDPR, and a named individual at a small firm is likely an individual subscriber under PECR, so marketing email needs consent. Watching the company is the safe version and the more useful one.

The next step

Stop losing leads.Let's fix it this week.

Tell us what keeps slipping and we'll scope something around it. You'll be talking to Max, who runs the work, not a sales team. Most clients are live within 48–72 hours of that first conversation.

30-day rolling retainers. No lock-in. Cancel anytime.