CWjobs UK Tech Jobs Scraper [Only $1.5] (/w EMAILS) avatar

CWjobs UK Tech Jobs Scraper [Only $1.5] (/w EMAILS)

Pricing

from $1.50 / 1,000 results

Go to Apify Store
CWjobs UK Tech Jobs Scraper [Only $1.5] (/w EMAILS)

CWjobs UK Tech Jobs Scraper [Only $1.5] (/w EMAILS)

🇬🇧 [Only $1.5] Scrape every UK tech job on cwjobs.co.uk — JavaScript, DevOps, data, software engineering. Get parsed salary bands (£min–£max), employer names + logos, geo-coords (lat/lng), industries, posting dates. 14 fields per row from JobPosting JSON-LD. Auto-paginates. JSON + CSV.

Pricing

from $1.50 / 1,000 results

Rating

5.0

(2)

Developer

Muhamed Didovic

Muhamed Didovic

Maintained by Community

Actor stats

0

Bookmarked

31

Total users

3

Monthly active users

7 days ago

Last modified

Share

CWjobs UK Tech Jobs Scraper

Scrape UK tech / IT job postings from CWjobs.co.uk — JavaScript developer, DevOps engineer, data engineer, software architect, cybersecurity analyst. Every row carries title, employer + logo, location with lat/lng, structured salary band (min / max / currency / period — including contractor day-rates), datePosted, validThrough, employment type, industry, and a populated applyUrl when the role is direct-apply. One flat row per job from rich JobPosting JSON-LD plus structured salary metadata.

How CWjobs Scraper works

Why this actor

CWjobs.co.uk is the UK's dominant tech-vertical job board — IT, software engineering, DevOps, data, and cybersecurity roles. ~6,500 live London tech postings at any time, server-side scoped to the tech vertical so you get exactly what CWjobs.co.uk's web UI shows.

  • Tech-only result set — the actor's request is scoped to IT/tech roles (software, DevOps, data, cybersecurity, IT support) so you don't pay for irrelevant general-UK rows
  • Efficient JSON listing pagination at 50 items per page, with totalItems reported up-front so we know exactly when we've reached the end
  • Server-side filterspostedWithin (1 / 3 / 7 / 14 days), companyTypes (direct employer / agency), salary (minimum), and jobType (permanent / contract / temporary / part-time / work-from-home) all honoured server-side
  • Apify Residential GB for the per-job detail fetch — the only proxy pool that consistently returns 200 OK on UK job-board detail pages
  • JobPosting JSON-LD parsing — every row carries the full 14-field JSON-LD detail PLUS structured salary metadata. Tech contractor day-rates (£500–£900/day typical) and permanent annual salaries (£40k–£120k typical) are both captured cleanly with the structured period field
  • applyUrl populated when directApply: true (≈ 60–70 % of jobs) — the candidate-facing apply URL, not just the search-page URL
  • Defence in depth — built-in upstream-credential rotation safeguards keep runs flowing even during brief upstream auth hiccups
  • Mixed input — listing URLs auto-paginate + emit one row per detail; direct detail URLs scrape one row each

Use cases

  • Tech recruitment market intelligence — salary benchmarking for software, DevOps, data, and cybersecurity roles across UK regions
  • Sales prospecting for B2B SaaS — find tech companies hiring in your target verticals + locations, with employer details + Apify-extracted geo-coordinates
  • HR competitive analysis — compare your engineering / data salary bands against UK tech market signal
  • Contractor market analysis — day-rate trends for software contractors (salary.period === "day" filtering surfaces this cleanly)
  • ATS / job-aggregator integration — clean structured input for downstream pipelines
  • Geospatial analytics — every row carries location.lat + location.lng from JSON-LD PostalAddress.geo

Input

FieldTypeRequiredNotes
startUrlsstring[]yesMix of listing URLs (https://www.cwjobs.co.uk/jobs/javascript, /jobs/devops/in-london, /jobs/in-remote) and direct detail URLs. Filters supported in the query string: ?postedWithin=1|3|7|14, ?companytypes=1|2, ?salary={int}, ?jobType=permanent|contract|temporary|partTime|workFromHome.
maxItemsintegernoMaximum job rows emitted per listing URL. Each row = one paid dataset item. Default 1000. Free-tier users have a hidden global ceiling of 100 rows.
maxConcurrencyintegernoParallel HTTP requests for detail-page fetches. Sweet spot 3–5 via Apify Residential GB. Default 4.
maxRequestRetriesintegernoPer-URL retry budget on proxy CONNECT failures, HTTP/2 stream resets, and network errors. Default 6.
proxyobjectnoApify Residential GB required for the detail-page fetch. Default is wired correctly — don't override unless you know what you're doing.

Example input

{
"startUrls": [
"https://www.cwjobs.co.uk/jobs/javascript/in-london",
"https://www.cwjobs.co.uk/jobs/devops/in-manchester",
"https://www.cwjobs.co.uk/jobs/in-remote?postedWithin=7&salary=60000"
],
"maxItems": 200,
"maxConcurrency": 4,
"proxy": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"], "apifyProxyCountry": "GB" }
}

Output schema

Every row has rowType: "job". 14 fields from JSON-LD + structured salary band (annual or day-rate for contractors) + lat/lng + applyUrl.

{
"rowType": "job",
"sourceSearchUrl": "https://www.cwjobs.co.uk/jobs/javascript/in-london",
"jobId": "107380088",
"jobUrl": "https://www.cwjobs.co.uk/job/product-consultant-ii-insurance/verisk-analytics-job107380088",
"sourceSite": "cwjobs.co.uk",
"title": "Product Consultant II (Insurance)",
// ── JobPosting JSON-LD ──
"description": "<p>Verisk Analytics is looking for a Product Consultant…</p>",
"datePosted": "2026-05-20T09:14:32.000Z",
"validThrough": "2026-06-30T09:14:32.000Z",
"employmentType": "CONTRACTOR",
"industry": "Insurance, Insurance-Information Technology",
"directApply": true,
"jobLocationType": "TELECOMMUTE",
"applicantLocationRequirements": ["United Kingdom"],
// ── Employer ──
"employer": {
"name": "Verisk Analytics",
"url": "https://www.cwjobs.co.uk/jobs/verisk-analytics?cmpId=…",
"logoUrl": "https://www.cwjobs.co.uk/CompanyLogos/…verisk.png"
},
// ── Location ──
"location": {
"text": "London, GB",
"locality": "London",
"region": "London",
"postalCode": null,
"country": "GB",
"lat": 51.50735,
"lng": -0.12776
},
// ── Salary (often DAY rates for contractors, ANNUAL for permanent) ──
"salary": {
"rawText": "£650 - £700 per day",
"min": 650,
"max": 700,
"currency": "GBP",
"period": "day"
},
// ── Apply flow ──
"applyUrl": "https://www.cwjobs.co.uk/job/product-consultant-ii-insurance/verisk-analytics-job107380088",
"applyType": "internal",
"scrapedAt": "2026-05-21T20:25:31.012Z"
}

Apply flow — what applyUrl and applyType mean

directApplyapplyTypeapplyUrlMeaning
true"internal"= jobUrlCWjobs hosts a one-click apply form on the job page itself.
false"external"nullExternal recruiter ATS (e.g. Greenhouse, Workday, the company's own careers portal). Open jobUrl in a browser and click Apply to be redirected.
missing"unknown"nullJSON-LD didn't surface the flag. Treat the same as "external".

Practical rule of thumb: ≈ 60–70 % of CWjobs listings are directApply: true.

Notes & limitations

  • Day-rates are common for contractor roles. UK tech contracting is rate-per-day (£500–£900/day typical for senior software engineering contracts). The structured salary.period: "day" field captures that — use it to separate contractor day-rates from permanent annual salaries in analysis.
  • employmentType fill is higher than average (≈ 80%) because UK tech has clearer permanent-vs-contract distinctions.
  • jobLocationType: "TELECOMMUTE" is common for tech roles (remote / hybrid working is mainstream in IT).
  • Apify Residential GB is mandatory for the per-job detail fetch.
  • No radius-based filter. Use a tighter where= location instead.
  • No maximum-salary filter. Only minimum (?salary=N).
  • CWjobs editorial mix is broader than pure software. Their definition of "tech" includes IT operations, industrial automation, analytics, insurance-tech, and adjacent engineering. Expect some "Instrument Control Automation Technician" or "Product Consultant" alongside the pure software roles.

FAQ

Which CWjobs URLs work? Two types: listing URLs (/jobs/javascript, /jobs/devops/in-london, /jobs/in-remote, /jobs/{company-slug}-jobs) which auto-paginate, and direct detail URLs (/job/{title-slug}/{org-slug}-job{id}) which scrape one row each.

Why is my salary £650 instead of £65,000? Tech contractor jobs are paid by day. The salary.period field is the source of truth: "day" = daily rate (contractor), "annum" = annual salary (permanent), "hour" = hourly (uncommon in tech, more usual in support roles). The min/max numbers are in the unit indicated by period. For a clean salary analysis, group by period first.

Are remote / hybrid jobs included? Yes. UK tech is heavily remote-friendly. Use ?jobType=workFromHome to filter to remote-only roles, or check the jobLocationType === "TELECOMMUTE" field on each row.

What does each dataset-item charge cover? One tech job row with all 14 JSON-LD fields plus the structured salary band (with period correctly identifying day-rate vs annual) and structured location (lat/lng). maxItems is per-listing-URL.

Support

  • Bugs / feature requests — open an issue on the GitHub repo
  • Custom exports / tailored fields — drop a note via the Apify Store contact form
  • Other actors — see my Apify Store profile

🤖 For AI Agents & LLM Apps

Compact reference for AI agents calling this actor via the Apify MCP server or the Apify API (actor: memo23/cwjobs-scraper).

Purpose: Extract UK tech / IT job postings from CWjobs.co.uk — one flat row per job from JobPosting JSON-LD plus a structured salary band (annual or contractor day-rate), lat/lng, and a populated applyUrl for direct-apply roles.

Minimal input:

{
"startUrls": ["https://www.cwjobs.co.uk/jobs/in-london"],
"maxItems": 25,
"maxConcurrency": 4,
"maxRequestRetries": 6,
"enrichEmails": false,
"qualifyByPayment": false,
"proxy": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"], "apifyProxyCountry": "GB" }
}

Output: one row per job — rowType, sourceSearchUrl, jobId, jobUrl, sourceSite, title, description, datePosted, validThrough, employmentType, industry, directApply, jobLocationType, applicantLocationRequirements, employer {name, url, logoUrl}, location {text, locality, region, postalCode, country, lat, lng}, salary {rawText, min, max, currency, period}, applyUrl, applyType, scrapedAt.

Behaviors an agent should know:

  • startUrls mixes listing URLs (auto-paginate) and direct detail URLs (one row each). Query filters honored server-side: ?postedWithin=1|3|7|14, ?companytypes=1|2, ?salary={int}, ?jobType=permanent|contract|temporary|partTime|workFromHome.
  • maxItems is per listing URL; default 1000. Free-tier users are capped at 100 total rows.
  • salary.period distinguishes contractor day-rates ("day") from permanent annual pay ("annum") — group by it before analysis.
  • Apify Residential GB is required for the per-job detail fetch; keep maxConcurrency at 3–5.
  • enrichEmails (opt-in) adds employer contact-email fields, billed per email found (never for misses); qualifyByPayment requires it and adds payment-stack fields at no extra charge.
  • Each job row is one paid dataset item (pay-per-result); see the Pricing tab on the actor page.

⚠️ Disclaimer

This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by CWjobs.co.uk or any of its parent / sister companies. All trademarks mentioned are the property of their respective owners.

The scraper extracts only publicly visible tech job postings from CWjobs.co.uk — no login, no CAPTCHA solving, no credential forgery. The actor uses a conservative concurrency cap (default 4 parallel requests) to avoid burdening CWjobs's infrastructure.

Users are responsible for:

  • Complying with CWjobs.co.uk's Terms of Service
  • Following UK GDPR + your jurisdiction's data-protection laws when storing or processing scraped postings
  • Not contacting candidates listed by employers in scraped postings
  • Not republishing scraped data in a way that competes commercially with CWjobs

SEO Keywords

cwjobs scraper, cwjobs.co.uk scraper, scrape cwjobs, uk tech jobs scraper, it jobs scraper uk, software engineer jobs scraper, javascript jobs scraper, devops jobs scraper, data engineer jobs scraper, cybersecurity jobs scraper, uk tech salary data, contractor day rate data uk, uk it recruitment data, tech recruitment scraper, uk tech market intelligence, uk it salary benchmark, software contractor rates uk, remote tech jobs scraper, london tech jobs, manchester tech jobs, edinburgh tech jobs, uk it employer data, b2b sales prospecting tech