Robota.Ua Scraper avatar

Robota.Ua Scraper

Pricing

from $1.59 / 1,000 results

Go to Apify Store
Robota.Ua Scraper

Robota.Ua Scraper

Scrape robota.ua — one of Ukraine's largest job boards. Extracts titles, structured UAH salary, company profiles and page links, skill tags, employment clusters and GPS coordinates. Filter by city, category, schedule, salary and date. No contact-person data. No API key required.

Pricing

from $1.59 / 1,000 results

Rating

0.0

(0)

Developer

Unfenced Group

Unfenced Group

Maintained by Community

Actor stats

3

Bookmarked

11

Total users

4

Monthly active users

2 days ago

Last modified

Share

Robota.Ua Scraper

Extract job listings from robota.ua, one of Ukraine's largest job boards, in a clean, consistent structure ready for analysis, job boards, recruiting tools and market research. No API key required.


Why this scraper?

🎯 Built for Ukraine

A dedicated Ukrainian scraper, not a global tool with a country dropdown. Search, categories, locations and currency (UAH) are tuned for robota.ua.

📄 Complete job data

Job title, teaser and — with fetchDetails — the full description in HTML, plain text and Markdown, plus the external application URL when the employer uses one.

💶 Structured salary

Minimum and maximum pay in UAH, a fixed figure where one is posted, and the free-text salary note. Undisclosed salaries are returned as null so you can filter them out. Roughly a third of listings publish a salary.

🏢 Company data

Employer name, robota.ua company ID and a link to the company page. Agency listings are flagged, and verified employers are marked (with fetchDetails).

📍 Precise location

City, district and nearest metro station where published, plus exact latitude/longitude for mapping.

🔁 Change detection

Every record carries a stable content hash and a change status (NEW, UPDATED, UNCHANGED, REAPPEARED) so you can track new and changed vacancies across runs. Cross-run deduplication is on by default.


Input parameters

ParameterTypeDefaultDescription
searchQuerystring"developer"Keyword to search for. Leave empty to return all vacancies.
cityIdinteger(empty)robota.ua city ID (e.g. 1 = Kyiv, 2 = Dnipro, 4 = Odesa, 5 = Kharkiv). Empty = all cities.
scheduleIdinteger(empty)Employment schedule: 1 = full-time, 2 = part-time, 3 = remote, 4 = freelance, 5 = internship.
rubricIdsarray(empty)One or more category (rubric) IDs, e.g. ["1"] for IT/Computers. Empty = all categories.
salaryinteger(empty)Minimum monthly salary in UAH. Empty = any salary.
periodinteger(empty)Only vacancies published in the last N days (e.g. 1, 7, 30). Empty = any time.
languageinteger2Text language: 1 = Ukrainian, 2 = Russian.
maxResultsinteger5Maximum number of listings to scrape (max 1500). You pay per result — keep low for tests.
fetchDetailsbooleanfalseFetch the full description, employer website, tags, clusters, branch, seniority and agency flag per listing.
skipDedupbooleanfalseRe-scrape all listings, including ones seen in previous runs.

Output schema

Every field below is present on every record. Fields the source does not publish for a given job are returned as null rather than omitted.

Always present

FieldTypeDescription
jobIdintegerrobota.ua vacancy ID.
titlestringJob title.
urlstringDirect URL to the vacancy.
companyNamestringEmployer name.
companyIdinteger | nullrobota.ua company ID.
companyUrlstring | nullLink to the employer's company page on robota.ua.
isAgencybooleanWhether the poster is a recruitment agency. Resolved accurately with fetchDetails; false otherwise.
cityNamestringCity.
cityIdintegerrobota.ua city ID.
districtNamestring | nullCity district, when published (~18% of listings).
metroNamestring | nullNearest metro station, when published (~26% of listings).
latitudenumber | nullGPS latitude.
longitudenumber | nullGPS longitude.
salarynumber | nullFixed monthly salary in UAH, when a single figure is posted.
salaryFromnumber | nullLower salary bound in UAH.
salaryTonumber | nullUpper salary bound in UAH.
salaryMinnumber | nullAlias of salaryFrom.
salaryMaxnumber | nullAlias of salaryTo.
salaryCommentstring | nullFree-text salary note.
currencystringSalary currency — always UAH.
publishDatestringPublication date, YYYY-MM-DD.
publishDateISOstringPublication timestamp, ISO 8601.
isHotbooleanPremium/urgent listing flag.
publicationTypeintegerrobota.ua advertisement tier.
badgesarrayListing badge labels (perks/benefits).
shortDescriptionstringTeaser text from the search card.
applyUrlstring | nullExternal application form URL, when the employer uses one.
changeStatusstringNEW, UPDATED, UNCHANGED or REAPPEARED.
contentHashstringStable hash of core fields for change detection.
detailFetchedbooleanWhether detail fields were fetched for this record.

With fetchDetails: true

FieldTypeDescription
descriptionstring | nullFull job description, plain text/Markdown.
descriptionHtmlstring | nullFull job description, HTML.
descriptionMarkdownstring | nullFull job description, Markdown.
contactUrlstring | nullEmployer's public website.
vacancyAddressstring | nullStreet address of the vacancy.
branchNamestring | nullIndustry / branch name.
branchIdinteger | nullIndustry / branch ID.
scheduleIdinteger | nullEmployment schedule ID.
profLevelIdinteger | nullSeniority level ID.
tagsarraySkill and keyword tags.
clustersarrayGrouped attributes (categoryvalues), e.g. language, employment type.
verifiedCompanyboolean | nullWhether robota.ua has verified the employer.

Example record

{
"jobId": 11244003,
"title": "Livelihood Officer",
"url": "https://robota.ua/ua/vacancy/11244003",
"companyName": "Polish Humanitarian Action",
"companyId": 3415203,
"companyUrl": "https://robota.ua/company3415203/vacancies",
"isAgency": false,
"cityName": "Kyiv",
"cityId": 1,
"districtName": "Holosiivskyi",
"metroName": "Universytet",
"latitude": 50.4459,
"longitude": 30.5142,
"salary": null,
"salaryFrom": 80000,
"salaryTo": 95000,
"salaryMin": 80000,
"salaryMax": 95000,
"salaryComment": null,
"currency": "UAH",
"publishDate": "2026-07-06",
"publishDateISO": "2026-07-06T04:01:00.15",
"isHot": true,
"publicationType": 1,
"badges": ["Additional days off"],
"shortDescription": "General information: Organization: Polish Humanitarian Action...",
"applyUrl": "https://system.erecruiter.pl/FormTemplates/Recruitment.aspx?...",
"changeStatus": "NEW",
"contentHash": "a1b2c3d4e5f6a7b8",
"detailFetched": true,
"description": "General information...",
"descriptionHtml": "<p>General information...</p>",
"descriptionMarkdown": "General information...",
"contactUrl": "http://www.pah.org.pl/",
"vacancyAddress": "vul. Bohdana Khmelnytskoho",
"branchName": "NGO / Non-profit",
"branchId": 37,
"scheduleId": 1,
"profLevelId": 3,
"tags": ["Social project manager"],
"clusters": [{ "category": "Language", "values": ["English"] }],
"verifiedCompany": true
}

Examples

1. Keyword search in a city

{ "searchQuery": "developer", "cityId": 1, "maxResults": 50 }

2. Remote vacancies posted in the last 7 days

{ "scheduleId": 3, "period": 7, "maxResults": 100 }

3. Full detail for a category above a salary floor

{ "rubricIds": ["1"], "salary": 40000, "fetchDetails": true, "maxResults": 100 }

4. Daily incremental feed (only new/changed jobs)

{ "searchQuery": "accountant", "period": 1, "maxResults": 200 }

💰 Pricing

$1.99 per 1,000 results — you only pay for successfully retrieved listings. Failed retries are never charged.

ResultsCost
100~$0.20
1,000~$1.99
10,000~$19.90
100,000~$199

Flat-rate alternatives typically charge $29–$49/month regardless of usage.

Subscription tiers lower the rate further, down to $1.19 per 1,000 at the highest tier. Use the Max results cap in the input to control your spend exactly.


Performance

Run sizeTypical time
100 resultsunder 1 minute
1,000 results2–4 minutes
10,000 results20–35 minutes

Enabling fetchDetails adds one request per listing, so detailed runs take longer.


Known limitations

  • Salary is often absent. Around two-thirds of listings do not publish a salary; those fields are null.
  • District and metro are sparse. Only listings in metro cities carry metroName, and only some carry districtName.
  • Detail fields require fetchDetails. Description, tags, clusters, branch, seniority, employer website and the verified/agency flags are only populated when fetchDetails is on.
  • Source cap. robota.ua's search returns at most 1,500 results per query; narrow with filters to go deeper.

Technical details

  • Source: robota.ua — Ukraine job listings
  • Coverage: nationwide, filterable by city, category, schedule, salary and recency
  • Privacy: no contact-person data is collected — recruiter names, phones and photos are never returned
  • Retry: automatic retry on network errors with exponential backoff

Need a custom scraper?

Unfenced Group builds Apify actors for any website — for free.

If the site you need isn't in our portfolio yet, just ask. We scope, build, and publish it at no cost to you. You only pay for results — we absorb the compute and proxy costs ourselves. Same pay-per-result pricing, same quality, same standards as every actor in this portfolio.

Get in touch: www.unfencedgroup.nl