UK Jobs Aggregator avatar

UK Jobs Aggregator

Pricing

from $1.00 / 1,000 results

Go to Apify Store
UK Jobs Aggregator

UK Jobs Aggregator

Aggregate UK and EU job listings from RemoteOK, Arbeitnow, Reed.co.uk, and Adzuna (optional API key for extra countries). Filter by role, location, country, employment type, date posted, and salary. Enriched output with structured salary plus company logo, website, size, and socials.

Pricing

from $1.00 / 1,000 results

Rating

5.0

(21)

Developer

Crawler Bros

Crawler Bros

Maintained by Community

Actor stats

21

Bookmarked

2

Total users

1

Monthly active users

7 days ago

Last modified

Share

Search jobs across multiple boards in one call. Aggregates from RemoteOK, Arbeitnow (Germany / EU), Reed.co.uk (UK), and optionally Adzuna (any country with a free API key). HTTP-only — no proxy, no browser, no login.

What it does

You provide a job role keyword and a country; the actor queries every applicable source in parallel, normalises every posting to a single shape, optionally drops cross-board duplicates, and emits one record per unique job.

Active sources by country:

SourceTypeUKDERemote
RemoteOKPublic JSON APIalwaysalwaysalways
ArbeitnowPublic JSON APIalwaysalwaysalways
Reed.co.ukHTML scrape (card DOM)
AdzunaOptional API key✅ (with key)✅ (with key)✅ (with key)

Sources NOT included (require residential proxy or auth that conflicts with the HTTP-only design):

  • GOV.UK Find a Job — DWP's WAF blocks datacenter IPs with a generic error page. Re-enable would need a residential proxy.
  • Indeed (any region) — heavy anti-bot, blocks datacenter IPs.
  • TotalJobs / CV-Library / CWJobs — anti-bot.
  • USAJobs — requires a free dev API key (not currently exposed as input). For US coverage, supply Adzuna keys.

Input

FieldTypeDefaultDescription
jobRolestring (required)software engineerFree-text role keyword.
locationstringLondonCity / region. UK boards use it; remote-only sources ignore it.
countryenum: UK / DE / RemoteUKDetermines country-specific boards. RemoteOK + Arbeitnow always run regardless.
maxResultsinteger50 (1–1000)Hard cap on records emitted across all sources.
minSalaryinteger (optional)Drop postings whose salary_max is below this threshold. Postings with no salary are kept.
jobTypeenum: All / Permanent / Contract / Temporary / PartTimeAllEmployment-type filter.
datePostedenum: Any / Today / LastThreeDays / LastWeek / LastTwoWeeksAnyRecency filter — drop postings older than the chosen window. Postings without a date_posted are kept.
removeDuplicatesbooleantrueCollapse duplicates across boards by (title, company, locality).
adzunaAppIdstring (Secret, optional)Adzuna app ID — sign up free at https://developer.adzuna.com/
adzunaAppKeystring (Secret, optional)Companion to adzunaAppId. Both required to enable Adzuna.

Example input

{
"jobRole": "software engineer",
"location": "London",
"country": "UK",
"maxResults": 100,
"minSalary": 40000,
"jobType": "Permanent",
"removeDuplicates": true
}

Output

One record per unique job. Empty fields are omitted (no nulls).

{
"title": "Junior Software Engineer",
"company": "TechCorp Ltd",
"location": "London, Greater London",
"salary_min": 30000,
"salary_max": 40000,
"salary_average": 35000,
"salary_currency": "GBP",
"salary_period": "year",
"employment_type": "FULL_TIME",
"description": "Build great products with a small distributed team.",
"url": "https://www.reed.co.uk/jobs/junior-software-engineer/12345",
"job_id": "12345",
"date_posted": "2024-12-15",
"isRemote": false,
"source": "reed.co.uk",
"country": "UK",
"companyLogo": "https://cdn.example.com/logos/techcorp.png",
"companyWebsite": "https://techcorp.example.com",
"companyDescription": "TechCorp builds developer tools used by 50,000+ teams.",
"companySize": "51-200",
"companySocialLinks": {"linkedin": "techcorp", "twitter": "techcorp"},
"scrapedAt": "2024-12-16T14:23:11+00:00"
}

Output fields

  • title — job title.
  • company — hiring company.
  • location — city / region as reported by the source (may include country).
  • salary_min / salary_max / salary_currency / salary_period — parsed pay range. salary_period is one of hour / day / week / month / year. Currency is GBP / USD / EUR / etc. All four are absent when the source doesn't publish salary.
  • salary_average — derived: mean of salary_min and salary_max when both are present. Useful for sorting/filtering across postings that report a range.
  • salary_raw — original salary string (GOV.UK only — others only ship structured salary).
  • employment_type — e.g. Permanent, Contract, Full Time. Source-specific casing preserved.
  • description — opening snippet of the job description (truncated at 2000 chars).
  • url — direct link to the posting.
  • job_id — source-specific stable ID.
  • date_posted — ISO date (YYYY-MM-DD) when the source published the listing.
  • isRemotetrue when the location string contains "remote" or the source flags the role as remote.
  • sourceremoteok.com, arbeitnow.com, reed.co.uk, findajob.dwp.gov.uk, or adzuna.com.
  • countryUK, DE, Remote, or whatever country code Adzuna was queried with.
  • Company enrichment (when source ships JSON-LD hiringOrganization): companyLogo, companyWebsite, companyDescription, companySize, companySocialLinks (flat dict of {platform: handle}). Fields are omitted per posting when the underlying source doesn't expose them.
  • scrapedAt — ISO-8601 timestamp.

FAQ

Does it need a proxy? No. All five sources are public and accessible from Apify's datacenter IPs without proxy.

Why only 3 country options? Indeed and TotalJobs aggressively block datacenter IPs without residential proxy — to keep this actor reliable and cheap, we restrict to sources that work directly. To cover the US, France, Australia, etc., supply Adzuna API keys (free 250 calls/month at developer.adzuna.com).

How does deduplication work? Records are grouped by (title, company, location's first comma-segment), all lowercased. The first occurrence wins. Disable with removeDuplicates: false if you'd rather see every source's listing.

RemoteOK shows 0 for unknown salary — does the actor filter those out? Yes. Both salary_min: 0 and salary_max: 0 are treated as "not provided" and the salary fields are omitted from the record entirely.

Can I filter by salary? Set minSalary to a number. Postings with a parsed salary_max below that threshold are dropped. Postings without salary information are kept (you can't filter on data that isn't there).

Why is description capped at 2000 characters? Aggregator boards typically only ship the first paragraph or two as a snippet anyway, and 2000 chars is plenty for screening. Combine the url field with a downstream actor for full-page descriptions.

Is the search exact-match? No — the role keyword is matched loosely (case-insensitive substring against title, tags, and description start). RemoteOK and Arbeitnow return wide result sets; the keyword filter lets you target your role within the firehose.