CareerJunction Jobs Scraper avatar

CareerJunction Jobs Scraper

Pricing

from $3.00 / 1,000 results

Go to Apify Store
CareerJunction Jobs Scraper

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

Crawler Bros

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

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.com target 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) and byUrls (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 ID
  • title, companyName, companyUrl, companyLogoUrl (permanent URL — see note below), companyLogoUrlOriginal (CareerJunction's original time-limited link, when rehosting succeeded)
  • location, country, countryCode
  • industry — employer's industry classification
  • positionText — employment type + seniority (e.g. "Permanent Senior position")
  • employmentType, seniorityLevel, isEmploymentEquity — parsed from positionText (only when the label matches a known pattern)
  • salaryText, salaryMin, salaryMax, salaryCurrency, salaryPeriod (only when disclosed)
  • descriptionHtml, descriptionText
  • datePosted, validThrough — ISO 8601 timestamps
  • postedText, expiresText, jobRef — original site-formatted text
  • sourceUrl — canonical listing URL
  • recordType: "job", scrapedAt

Input

FieldTypeDefaultDescription
modeselectsearchsearch / byUrls
keywordsstringdeveloperFree-text search query (mode=search). Leave empty to browse a whole category or the latest listings.
categoryselectOne of 26 CareerJunction job categories
sortByselectrelevancerelevance / newest
regionselectOne of 27 CareerJunction provinces/regions (server-side filter, e.g. westernCape, gauteng, workFromHome)
locationstringKeep only jobs whose location text contains this (e.g. Sandton) — client-side substring match for a specific city/suburb not covered by region
employmentTypesarray (enum)Keep only these employment type(s): Permanent / Contract / Temporary / Casual / Part Time / Internship / Learnership
seniorityLevelsarray (enum)Keep only these seniority level(s): Junior / Intermediate / Senior / Management / Specialist / Executive
employmentEquityOnlybooleanfalseOnly keep jobs explicitly tagged as an Employment Equity (EE) position
minSalaryintegerDrop jobs with disclosed salary below this (ZAR). Undisclosed-salary jobs always pass.
postedWithinDaysintegerKeep only jobs posted within this many days
fetchFullDetailsbooleantrueVisit each job's detail page for full description/salary/employer/dates
jobUrlsarrayCareerJunction job listing URLs (mode=byUrls)
maxItemsinteger30Hard 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 postedWithinDays for 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.