TopJobs.lk Scraper avatar

TopJobs.lk Scraper

Pricing

from $2.00 / 1,000 results

Go to Apify Store
TopJobs.lk Scraper

TopJobs.lk Scraper

Search Sri Lanka's leading job board, TopJobs.lk, by keyword or category and pull full job details (location, closing date, job-type badges, description image, employer contact) -- no account or API key needed.

Pricing

from $2.00 / 1,000 results

Rating

0.0

(0)

Developer

Faisal Ahdan naufal

Faisal Ahdan naufal

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

8 days ago

Last modified

Categories

Share

Search Sri Lanka's leading job board, TopJobs.lk, by keyword or category and get back full job details — location, closing date, job-type badges, description image, and employer contact info.

Why use this actor

  • No account, login, or API key required
  • Search by free-text keyword or browse any of the site's 30 job categories
  • Every result can be hydrated into a full job record with one extra request per job
  • Automatic pagination up to the number of results you ask for
  • Also works the other way: give it specific job links and it fetches full detail for exactly those

How it works

Pick a mode:

  1. search (default) — searches job titles by keyword, or browses one category, and returns full job details for each match, with pagination handled automatically.
  2. detail — fetches full detail for one or more specific job URLs you already have.

You don't need to manage any browsers or automatic retries — just provide a keyword or a list of job links.

Important: on TopJobs.lk's own site, category browsing and keyword search are mutually exclusive — if you set functionalArea, keyword is ignored. Filter checkboxes (government, ngo, partTime, walkIn, foreign, internship) combine fine with keyword, just not with functionalArea.

Input

Keyword search (default mode):

{
"mode": "search",
"keyword": "accountant",
"maxResults": 50,
"fetchFullDetails": true,
"maxConcurrency": 4
}

Browse a category:

{
"mode": "search",
"functionalArea": "SDQ",
"maxResults": 50
}

Job detail by URL:

{
"mode": "detail",
"jobUrl": "https://topjobs.lk/employer/JobAdvertismentServlet?rid=0&ac=DEFZZZ&jc=0001541016&ec=DEFZZZ&pg=applicant/vacancybyfunctionalarea.jsp"
}
FieldTypeDescription
modestring"search" (default) or "detail".
keywordstringsearch mode — free-text search (e.g. "accountant", "software engineer"). Leave empty to list all currently open vacancies. Ignored if functionalArea is set.
functionalAreastringsearch mode — browse one of 30 job categories instead of a keyword search (e.g. SDQ = IT-Software, ACA = Accounting/Auditing/Finance). Overrides keyword when set.
government / ngo / partTime / walkIn / foreign / internshipbooleansearch mode — optional filter checkboxes, combine with keyword (not with functionalArea).
maxResultsintegersearch mode — max jobs to return, pagination followed automatically (1000/page). Default 50.
fetchFullDetailsbooleansearch mode — when on (default), each result includes full location/closing-date/job-type/description-image/contact data (one extra request per job). Turn off for a faster run that only needs title, employer, town, and dates.
jobUrl / jobUrlsstring / arraydetail mode — a job's full topjobs.lk detail URL (from this actor's own detailUrl search-result field, or copied from the site).
maxConcurrencyintegerHow many detail requests run in parallel. Default 4.
proxyConfigurationobjectApify Proxy settings. Residential is on by default.

Output

Search mode (fetchFullDetails: true, default) — real output:

{
"_input": "keyword:accountant",
"_source": "S1-detail-html",
"_scrapedAt": "2026-08-26T03:11:27Z",
"position": "Assistant Accountant / Senior Finance Executive / Finance Executive",
"employer": "Sentab Groups",
"location": "Piliyandala, Sri Lanka",
"jobRefNo": "1541016",
"closingDate": "08/09/2026",
"jobType": ["Full Time", "Permanent", "Onsite"],
"descriptionImageUrl": "https://topjobs.lk/logo/DEFZZZ/6044cKKKHH.png",
"companyLogoUrl": "https://topjobs.lk/logo/defzzz_small.gif",
"companyWebsite": null,
"companyEmail": "careers@sentab.lk",
"jobSpecCode": "0001541016",
"jsonLd": {
"@context": "http://schema.org/",
"@type": "JobPosting",
"description": "Please refer the full details of the job posting as given by the employer. </br>...",
"title": "Assistant Accountant / Senior Finance Executive / Finance Executive",
"validThrough": "2026-09-08T00:00:00+0530",
"datePosted": "2026-08-26",
"hiringOrganization": { "@type": "Organization", "name": "Sentab Groups" },
"jobLocation": [{ "@type": "Place", "address": { "@type": "PostalAddress", "addressLocality": "Piliyandala", "addressCountry": "LK", "addressRegion": "Western" } }]
},
"jc": "0001541016",
"ac": "DEFZZZ",
"ec": "DEFZZZ",
"detailUrl": "https://topjobs.lk/employer/JobAdvertismentServlet?rid=0&ac=DEFZZZ&jc=0001541016&ec=DEFZZZ&pg=applicant/vacancybyfunctionalarea.jsp"
}

Search mode (fetchFullDetails: false) — compact result, no extra request per job:

{
"_input": "keyword:sales",
"_source": "S1-search-html",
"_scrapedAt": "2026-08-26T03:11:30Z",
"jobRefNo": "1541173",
"position": "Sales Associate",
"employer": "L.K.Group Holdings Pvt Ltd",
"town": "Nugegoda",
"openingDate": "Wed Aug 26 2026",
"closingDate": "Wed Sep 09 2026",
"jc": "0001541173",
"ac": "DEFZZZ",
"ec": "DEFZZZ",
"detailUrl": "https://topjobs.lk/employer/JobAdvertismentServlet?rid=0&ac=DEFZZZ&jc=0001541173&ec=DEFZZZ&pg=applicant/vacancybyfunctionalarea.jsp"
}
FieldTypeDescription
positionstringJob title.
employerstringEmployer name — may read as "Company Name Withheld" when the employer chose to stay anonymous.
town / locationstringtown on compact search records, location (town + country) on full-detail records.
closingDate / openingDatestringApplication deadline / listing date, as displayed on site (format varies by record type).
jobTypearrayFull-detail records only — 0-3 dynamic badges, e.g. ["Full Time", "Permanent", "Onsite"] or ["Part Time"].
descriptionImageUrlstringFull-detail records only — see Known limits: TopJobs.lk publishes the actual job description as an image, not text.
companyEmail / companyWebsitestringFull-detail records only — employer's public contact info, when supplied.
jsonLdobjectFull-detail records only, and only present on roughly half of jobs (a site quirk) — the raw schema.org JobPosting block.
detailUrlstringCanonical job URL — feed this back into detail mode to re-fetch it directly.

A record with _error instead means that lookup couldn't complete (e.g. "_error": "not_found" for an expired/invalid job URL).

Known limits

  • No extractable plain-text job description. TopJobs.lk employers upload a designed ad graphic instead of filling in a text field — every job sampled during development had its actual requirements/responsibilities rendered as an image (descriptionImageUrl), not text. This is the site's real publishing model, not a gap in this actor.
  • Category browsing (functionalArea) and keyword can't be combined — a site-side limitation, confirmed live. Use one or the other; filter checkboxes work with keyword.
  • detail mode needs the full job URL, not just a reference number — there's no shorter job/<id> shortcut on the site itself. Always use this actor's own detailUrl output field, or copy the URL directly from TopJobs.lk.