CV.ee Scraper: Estonia Jobs with Salary avatar

CV.ee Scraper: Estonia Jobs with Salary

Pricing

from $1.20 / 1,000 results

Go to Apify Store
CV.ee Scraper: Estonia Jobs with Salary

CV.ee Scraper: Estonia Jobs with Salary

Scrape CV.ee (Estonia) job listings into clean JSON: title, company, town, EUR salary normalized to monthly, posting and expiry date, tags, full ad text where the board publishes it. Pay per result, no subscription.

Pricing

from $1.20 / 1,000 results

Rating

0.0

(0)

Developer

CEE Jobs

CEE Jobs

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

CV.ee Jobs Scraper — Estonia job listings with salary

Extract CV.ee job listings with salary, location and posting date for Estonia market research, recruiting and lead generation.

What you get

  • Every job on www.cv.ee that matches your keywords, as one structured row each: title, company, location, employment type, posting date and the canonical job URL.
  • The exact salary range the employer entered, in EUR — the only currency this board quotes — and the same range as gross EUR per month in salary.minEurMonth / salary.maxEurMonth. CV.ee publishes amounts rather than a printed label, so salary.raw is always null.
  • The ad text wherever the board hosts it, plus the expiry date, the work type and the board's own category and skill tags — all of it read off the search results themselves, so no run ever has to open a second page per job.
  • A stable id of the form cv-ee:<board job id>, so repeat runs deduplicate against your own database instead of against a row number.

Sample item

{
"id": "cv-ee:1641665",
"url": "https://www.cv.ee/et/vacancy/1641665",
"title": "Java Developer",
"company": "Playtech Estonia OÜ",
"companyUrl": "https://www.cv.ee/et/search/employer/2410",
"location": {
"raw": "Tartu",
"city": "Tartu",
"country": "EE"
},
"remote": true,
"employmentType": "FULL_TIME",
"salary": {
"min": 2970,
"max": null,
"currency": "EUR",
"period": "month",
"raw": null,
"minEurMonth": 2970,
"maxEurMonth": null
},
"postedAt": "2026-08-18",
"expiresAt": "2026-09-17",
"description": "Your influential mission. You will... Develop and maintain the automation fram…",
"tags": [
"INFORMATION_TECHNOLOGY",
"Java",
"spring"
],
"source": {
"board": "cv-ee",
"boardJobId": "1641665",
"scrapedAt": "2026-08-22T14:45:56.503Z"
}
}

description is the ad's own text, with e-mail addresses, phone numbers and "Kontakts:" lines stripped out — but only wherever the board hosts that text itself. A substantial minority of ads publish none of it in the search results and ship description: null rather than a truncated teaser. tags holds the board's own job category next to the skills the employer tagged the ad with, spelling and all.

remote has three states, and false is not the same answer as null. It is true when CV.ee marks the posting as fully remote work, false when the board marks it as hybrid or on-site, and null when the posting says nothing about it at all. Filter on remote === true for remote-only work, and do not read a missing flag as an office job.

postedAt is the board's publish date, which moves when an employer renews an ad — a renewed posting reads as freshly posted, and postedWithinDays will keep it. Use expiresAt to tell how much of the ad's run is left. Anything CV.ee did not publish is null, never missing.

Input

FieldTypeDefaultWhat it does
keywordsarray of strings[]One search per keyword (job title, skill, company). Empty runs the board's default listing.
locationstring""City or region, in the board's own language. location is matched client-side against the town name behind the listing's town id (the board publishes ids, not names); accents are optional, so "parnu" finds Pärnu.
maxItemsinteger100Hard stop after this many jobs. This is the cost dial.
postedWithinDaysinteger0Keep only jobs posted in the last N days. 0 disables the filter.
startUrlsarray[]Search URLs on www.cv.ee to crawl directly instead of building searches from keywords — the board's own https://www.cv.ee/api/v1/vacancy-search-service/search?limit=20&offset=0&…, with whatever filters you want on it.
extraobject{}Board-specific filters. This board takes no extra filters yet.
proxyConfigurationobjectApify proxyApify datacenter proxy groups only; residential groups and custom proxy URLs are rejected.

There is no includeDetails switch: the search results already carry the description, the expiry date and the exact salary, so there is no detail page worth opening and no second charge to opt into.

Pricing

$2 per 1,000 jobs. No subscription, and no second charge for descriptions — this actor never opens a detail page, so the job-detail event is never billed.

Limitations

Public listing data only — no recruiter names or e-mail addresses, no data behind a login. The crawler obeys www.cv.ee's robots.txt, including for URLs you pass in startUrls, and runs on datacenter proxies without any CAPTCHA or challenge circumvention: a challenge page is reported as an error, not retried through another browser. Apify datacenter proxy groups only; residential groups and custom proxy URLs are rejected before the run starts. Rows come from CV.ee's own public search API — the one the site's search page itself reads. A job filed under a town the board has not published a name for keeps its country and ships with a null city. www.cv.ee's robots.txt also carries Content-Signal: ai-train=no: this actor does not train anything on the rows it returns, and neither should what you build on them.