CareerJunction Jobs Scraper
Pricing
from $3.00 / 1,000 results
CareerJunction Jobs Scraper
Scrape live job listings from CareerJunction.co.za, South Africa's largest job board. Search by keyword and category, filter by location/salary/date, or fetch full job details from listing URLs. No login, no cookies, no paid proxy required.
Pricing
from $3.00 / 1,000 results
Rating
0.0
(0)
Developer
Crawler Bros
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Scrape live job listings from CareerJunction.co.za, South Africa's largest job board. Search by keyword, category, and province/region, filter by salary and posting date, or fetch full job details from listing URLs. No login, no cookies, no paid proxy required.
Note: the originally requested
fuzu.comtarget already has a dedicated actor in this catalog (Fuzu Jobs Scraper). To avoid a duplicate, this actor instead covers CareerJunction — South Africa's leading job board, giving broader coverage of the African job-market category.
What this actor does
- Two modes:
search(keyword + category browse) andbyUrls(direct listing fetch) - 26 job categories — IT, Finance, Sales, Medical & Health, Engineering, and more
- 27 provinces/regions — server-side filter (Gauteng, Western Cape, KwaZulu-Natal, Work From Home, International, and more)
- Filters: keyword, category, region (server-side), sort order, location text (client-side substring), employment type, seniority level, Employment Equity (EE) flag, minimum salary, posted-within-days
- Rich fields per job: full description (HTML + plain text), salary band (when disclosed), employer info, posting/expiry dates
- Empty fields are omitted — every record only contains data actually present on the listing
Output per job
jobId— CareerJunction's internal listing IDtitle,companyName,companyUrl,companyLogoUrl(permanent URL — see note below),companyLogoUrlOriginal(CareerJunction's original time-limited link, when rehosting succeeded)location,country,countryCodeindustry— employer's industry classificationpositionText— employment type + seniority (e.g. "Permanent Senior position")employmentType,seniorityLevel,isEmploymentEquity— parsed frompositionText(only when the label matches a known pattern)salaryText,salaryMin,salaryMax,salaryCurrency,salaryPeriod(only when disclosed)descriptionHtml,descriptionTextdatePosted,validThrough— ISO 8601 timestampspostedText,expiresText,jobRef— original site-formatted textsourceUrl— canonical listing URLrecordType: "job",scrapedAt
Input
| Field | Type | Default | Description |
|---|---|---|---|
mode | select | search | search / byUrls |
keywords | string | developer | Free-text search query (mode=search). Leave empty to browse a whole category or the latest listings. |
category | select | – | One of 26 CareerJunction job categories |
sortBy | select | relevance | relevance / newest |
region | select | – | One of 27 CareerJunction provinces/regions (server-side filter, e.g. westernCape, gauteng, workFromHome) |
location | string | – | Keep only jobs whose location text contains this (e.g. Sandton) — client-side substring match for a specific city/suburb not covered by region |
employmentTypes | array (enum) | – | Keep only these employment type(s): Permanent / Contract / Temporary / Casual / Part Time / Internship / Learnership |
seniorityLevels | array (enum) | – | Keep only these seniority level(s): Junior / Intermediate / Senior / Management / Specialist / Executive |
employmentEquityOnly | boolean | false | Only keep jobs explicitly tagged as an Employment Equity (EE) position |
minSalary | integer | – | Drop jobs with disclosed salary below this (ZAR). Undisclosed-salary jobs always pass. |
postedWithinDays | integer | – | Keep only jobs posted within this many days |
fetchFullDetails | boolean | true | Visit each job's detail page for full description/salary/employer/dates |
jobUrls | array | – | CareerJunction job listing URLs (mode=byUrls) |
maxItems | integer | 30 | Hard cap on emitted records (1–500) |
Example: IT jobs in Cape Town, newest first
{"mode": "search","keywords": "","category": "informationTechnology","region": "westernCape","sortBy": "newest","maxItems": 50}
Example: fetch specific listings
{"mode": "byUrls","jobUrls": ["https://www.careerjunction.co.za/digital-coordinator-job-2642426.aspx","https://www.careerjunction.co.za/senior-backend-developer-job-2642491.aspx"]}
Use cases
- Recruitment intelligence — track live South African vacancies by category/location
- Salary benchmarking — aggregate disclosed salary bands across roles
- Job-alert bots — poll
postedWithinDaysfor fresh listings - Labour-market research — analyze demand by industry/category over time
- Talent sourcing — bulk-collect employer contact / job data for outreach
FAQ
What's CareerJunction? South Africa's largest job board, spanning every province and 26 job categories, from entry-level to executive roles. See careerjunction.co.za.
Is a login or API key required? No — search and job-detail pages are fully public.
Why is salaryText sometimes missing? Many South African employers don't disclose salary; the actor never fabricates a value — the field (and its derived salaryMin/salaryMax/salaryPeriod) is simply omitted.
How do employmentTypes/seniorityLevels/employmentEquityOnly work?
CareerJunction encodes employment type + seniority (and, when applicable, an "EE" Employment Equity tag) into a single label on every listing, e.g. "Permanent Senior EE position". The actor parses this into structured employmentType/seniorityLevel/isEmploymentEquity fields and filters on them client-side, since these are not exposed as their own server-side query parameters. Listings whose label doesn't match a known pattern always pass through unfiltered rather than being silently dropped.
What's the difference between region and location? region is applied server-side — it's the exact same Location=<id> parameter CareerJunction's own search form sends for its 27 province/region options, so it's fast and always accurate. location is a client-side, case-insensitive substring match against each job's parsed location text (e.g. filtering "Sandton") — use it to narrow to a specific city/suburb not covered by the broader region list.
What does fetchFullDetails=false skip? With it off, the actor only uses fields visible on the search-results page (title, company, location, salary snippet, position text) and skips the extra per-job detail-page fetch — faster, but no full description.
Does this actor cover employer/company profile pages? No — CareerJunction's /companies/... pages are protected by a bot-challenge that blocks plain HTTP access. Job search and job detail pages are unaffected.
How fresh is the data? Real-time — every run hits CareerJunction's live search and detail pages directly.
Why does sourceUrl redirect to /not-found when I curl it directly? CareerJunction's job pages sit behind bot-detection that 302-redirects plain, non-browser HTTP clients (no real browser fingerprint/session) to /not-found, even with a browser User-Agent set. The URL itself is correct and always resolves to the live job posting when opened in an actual browser — this actor's own fetcher passes the bot check the same way a real browser would. This is the same class of protection as Canadian Tire's Akamai challenge, just applied by a different vendor.
Why is companyLogoUrl different from what CareerJunction shows? CareerJunction serves employer logos from a time-limited (presigned, ~24h) S3 link that would silently break shortly after your run. This actor downloads the logo once during the run and rehosts it in the dataset's own storage, so companyLogoUrl stays valid indefinitely. The original CareerJunction link (still valid for ~24h after the run) is kept in companyLogoUrlOriginal for traceability.