Work.ua Scraper — Ukraine Vacancies, Salary & Firms
Pricing
from $10.00 / 1,000 results
Work.ua Scraper — Ukraine Vacancies, Salary & Firms
Scrape vacancies from Work.ua, Ukraine's largest job board: title, employer with verified badge and type, location, advertised salary with a sortable numeric floor, hot and deferment flags and the ad link. Keyless. JSON, CSV or Excel.
Pricing
from $10.00 / 1,000 results
Rating
0.0
(0)
Developer
Logiover
Maintained by CommunityActor stats
0
Bookmarked
13
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Export vacancies from Work.ua, Ukraine's largest job board — employer, location, advertised salary and ad link — to JSON, CSV or Excel. Keyless, no login.
What does Work.ua Scraper do?
Work.ua serves plain server-rendered HTML with no JSON API behind it, so this Actor parses the listing cards directly and walks the pagination until your target is met. No API key, no account, no cookies.
The card layout is the reason most Work.ua scrapers ship dirty data: the employer name and the salary use the same CSS class, and the location line ends with either a city or a "8.8 km from center" distance chip. Pick "the first matching element" and every ad that advertises pay lands its salary in the company column. This Actor anchors on the icon inside each block — hryvnia for salary, company for employer — so the two never swap, and it splits the distance chip into its own field instead of passing it off as a city.
Salaries are written with thin-space separators (60 000 – 80 000 UAH). The Actor keeps the original label and derives a sortable numeric floor, so you can filter by pay without parsing strings yourself.
Who is it for?
- Recruitment agencies tracking who is hiring in Ukraine and at what rate.
- Salary researchers building pay benchmarks by role and city.
- B2B sales teams using hiring activity as a growth signal.
- Job boards and aggregators that need a Ukrainian feed.
- Relocation and remote-work platforms sourcing roles open to remote candidates.
Use cases
- Build a salary benchmark for drivers or developers across Kyiv, Lviv and Poltava.
- List every verified employer currently hiring in a category, with ad links.
- Track how many vacancies offer deferment, week over week.
- Filter to ads that publish pay and rank them by advertised floor.
- Feed a niche board with fresh Ukrainian listings.
Why use this Actor?
- Keyless — nothing to sign up for.
- 20 structured fields, with salary, employer and location cleanly separated.
- Sortable salary — original label plus a numeric floor.
- Verified-employer flag straight from Work.ua's own badge.
- Hot and deferment flags, useful signals in the current Ukrainian market.
- English or Ukrainian interface language.
What data can you extract?
| Field | Type | Description |
|---|---|---|
jobId | string | Work.ua vacancy ID |
title | string | Job title |
jobUrl | string | Public ad page |
employerName | string | Employer name |
employerType | string | Employer type, e.g. Agency |
employerVerified | boolean | Work.ua verified identity |
employerLogoUrl | string | Employer logo |
location | string | City or "Remote" |
isRemote | boolean | The ad is for remote work |
requirements | string | Experience and schedule line, e.g. "Experience more than 2 years · Standard schedule: 5/2" |
salaryLabel | string | Salary exactly as advertised |
salaryNote | string | Work.ua's own note, e.g. "Above average" |
salaryFrom | number | Numeric floor for sorting and filtering |
salaryTo | number | Upper end when the ad gives a range |
distanceFromCentre | string | Distance chip, when the ad shows one |
currency | string | UAH when a salary is present |
isHot | boolean | Marked as a hot vacancy |
hasDeferment | boolean | Employer offers deferment |
badges | string | All badges on the card |
postedLabel | string | Posting date as shown |
postedDate | string | Posting date as ISO YYYY-MM-DD |
descriptionSnippet | string | Opening lines of the ad text |
employerHidden | boolean | The employer chose to hide its name |
country | string | Ukraine |
source | string | Always work_ua |
scrapedAt | string | Run timestamp (ISO 8601) |
Example output
{"jobId": "8240196","title": "Водій категорії СЕ","jobUrl": "https://www.work.ua/en/jobs/8240196/","employerName": "Арія Транс","employerVerified": true,"location": "Kyiv","salaryLabel": "40 000 – 60 000 UAH","salaryNote": "Above average","salaryFrom": 40000,"distanceFromCentre": "8.8 km from center","currency": "UAH","hasDeferment": true,"country": "Ukraine","source": "work_ua"}
How to use it
- Enter a keyword, or leave it empty to walk the full listing.
- Optionally narrow by category slug, city ID or minimum salary.
- Switch on Only ads with a salary when you are building a pay benchmark.
- Set Maximum results and run, then export JSON, CSV or Excel.
Input example
{"query": "driver","withSalaryOnly": true,"maxResults": 1000}
Notes and limits
- Roughly 7 in 10 vacancies publish a salary. The rest leave
salaryLabel,salaryFromandcurrencyasnull— that is the ad, not a parsing gap. Use Only ads with a salary to drop them. distanceFromCentreappears only on ads that show a distance chip; it is deliberately kept out of thelocationcolumn.- Work.ua renders 14 cards per page; the Actor stops when a page returns fewer, meaning the listing is exhausted.
- Listing text is in Ukrainian even with the English interface, because employers write the ads.
- You are responsible for how you use employer data, including under GDPR.
FAQ
Do I need a Work.ua account? No. The listings are public and this Actor needs nothing from you.
Is the salary usable for sorting?
Yes. salaryFrom is a real number derived from the advertised range's lower bound.
Why is location sometimes "Remote"?
Because the employer listed the role as remote; Work.ua shows that in place of a city.
Does it fetch the full job description?
No. This Actor exports the listing cards, which is what makes bulk runs fast and cheap. Open jobUrl for the full text.
How am I charged? Pay per result — you pay for the vacancies delivered.
*Maintained: last verified 2026-09-01 — checked end-to-end against live run history (reliability, output fields and types, and time/memory budgets).
Related scrapers
Other Actors from the same collection:
Scheduling and integrations
Run this Actor on a schedule — hourly, daily or weekly — and have every run append to the same dataset, which is how you turn a one-off export into a time series. Results can be pushed straight into Google Sheets, Slack, Zapier, Make, Airtable or any Webhook.
How much Work.ua data can you extract in one run?
A single run returned 572 job ads in 524 seconds on the example input. That is roughly 65 job ads a minute. Widen the search — more queries, more pages, a broader location — and the same run goes deeper.
There is no hard ceiling built into this Actor. What bounds a run is the result limit you set, the breadth of the input you give it, and how much Work.ua itself publishes. Because billing is per result, a wider run costs proportionally more and a narrow one costs almost nothing — so it is worth starting small and scaling once the output looks right.
Work.ua scraping — frequently asked questions
Do I need a Work.ua API key, account or login?
No. This Actor reads publicly available pages and feeds, so there is nothing to register for and no credentials to manage.
How do I export Work.ua data to CSV, Excel, JSON or Google Sheets?
Open the Storage tab after a run and pick the format you want — CSV, Excel, JSON, XML or an HTML table. For Google Sheets, Airtable or a database, use the dataset URL or the Apify API so the sheet refreshes itself on every run.
Can I schedule this Work.ua scraper to run daily or hourly?
Yes. Use the Schedules tab and pick a cadence. Daily is enough for most tracking work; pick hourly only if the job ads you care about really do change that fast.
How many job ads can I get, and what does it cost?
See the volume section above for a measured figure. Billing is per result, so you pay for the rows you actually receive and a run that finds nothing costs nothing.
Is scraping Work.ua legal?
This Actor collects only information that Work.ua publishes publicly. It does not log in, does not defeat access controls and does not touch private data. You remain responsible for how you use the output, including under GDPR and similar rules where personal data is involved.
What happens if Work.ua blocks the run or changes its layout?
A refused exit IP is swapped for a fresh one within a quarter of a second and retried, and rate limiting is waited out rather than fought. If nothing gets through, the run fails with the reason instead of reporting success with zero rows — so an empty result always means "no matches", never "the source would not answer".
Can I use this with an AI agent, LangChain or an MCP client?
Yes. The Actor is callable over the Apify API and through Apify's MCP server, so an agent can run it and read the dataset back as a tool call.
Legal and compliance
This Actor collects publicly available information from Work.ua only. It does not log in, does not circumvent access controls, and collects no private data. You are responsible for using the output lawfully, including under GDPR and comparable regimes where the rows contain personal data, and for respecting Work.ua's terms where they apply to you.