CV.ee Scraper
Pricing
from $1.19 / 1,000 results
CV.ee Scraper
Scrape job listings from CV.ee (CV-Online Estonia). Returns structured data with salary, location, work type and apply URL. No API key required.
Pricing
from $1.19 / 1,000 results
Rating
0.0
(0)
Developer
Unfenced Group
Maintained by CommunityActor stats
2
Bookmarked
7
Total users
2
Monthly active users
6 days ago
Last modified
Categories
Share

Extract job listings from cv.ee at scale, in a clean, consistent structure ready for analysis, job boards, recruiting tools and market research. No API key required.
Why this scraper?
🎯 Built for Estonia
A dedicated Estonian scraper, not a global tool with a country dropdown. Search, locations and currency (EUR) are tuned for cv.ee.
📄 Complete job data
Full job title and description, direct listing URL and publish date for every record.
💶 Salary data
Salary information parsed from the listing where the employer publishes it, in EUR. Missing salaries are returned as null, never guessed.
🏢 Company details
Hiring company name plus the profile details the source publishes, such as logo and company page.
📍 Precise location
City, region and country plus latitude/longitude for mapping and radius analysis.
🔁 Repost & change detection
Every record carries isRepost and changeStatus, so daily feeds return genuinely new jobs instead of reposted duplicates.
Input parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
searchQuery | string | "developer" | Search or filter by keyword. |
maxResults | integer | 100 | Maximum number of results (0 = no limit). |
fetchDetails | boolean | false | ON: fetches full job description, salary, company info, and all details. OFF: returns basic listing info only (faster, lower cost). |
daysOld | integer | (empty) | Only return items published within the last N days. Leave blank for all. |
locale | string | (empty) | locale. |
startUrls | array | (empty) | Filter by startUrls. |
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.
| Field | Type | Description |
|---|---|---|
jobId | string | Unique listing ID from the source. |
title | string | Job title as published. |
company | string | Hiring company name. |
companyId | string | Company id. |
description | string | Full job description in plain text. |
descriptionMarkdown | string | Description markdown. |
descriptionHtml | string | Full job description in HTML. |
url | string | Direct link to the listing. |
applyUrl | string | Direct application link. |
location | string | — |
town | string | Town. |
county | string | County. |
country | string | Country of the position. |
workTypes | array | Work types. |
remoteWork | boolean | Remote work. |
remoteWorkType | string | Remote work type. |
salaryMin | number | Minimum salary (null if not published by the employer). |
salaryMax | number | Maximum salary (null if not published by the employer). |
salaryCurrency | string | Currency code of the salary. |
salaryPeriod | string | Pay period the salary refers to (e.g. year, month, hour). |
publishDate | string | Publish date. |
renewedDate | string | Renewed date. |
expirationDate | string | Expiration date. |
quickApply | boolean | Quick apply. |
categories | array | Categories. |
categoriesResolved | array | Categories resolved. |
languages | array | Languages. |
languagesResolved | array | Languages resolved. |
keywords | array | Keywords. |
scrapedAt | string | Timestamp when this record was scraped. |
changeStatus | string | NEW, CHANGED or UNCHANGED compared to the previous time this job was seen. |
contentHash | string | Stable hash of the listing content, used for repost and change detection. |
latitude | number | Latitude of the workplace. |
longitude | number | Longitude of the workplace. |
Example record
{"jobId": "1604761","title": "Java arhitekt","company": "Net Group OÜ","companyId": "10995","description": "","descriptionMarkdown": null,"descriptionHtml": null,"url": "https://cv.ee/en/vacancy/1604761","applyUrl": "https://careers.netgroup.com/jobs/7936465-java-arhitekt","location": "Tallinn","town": "Tallinn","county": "Harjumaa","country": "Estonia","workTypes": ["FULL_TIME"],"remoteWork": true,"remoteWorkType": "HYBRID","salaryMin": 5500,"salaryMax": 6250,"salaryCurrency": "EUR","salaryPeriod": "monthly","publishDate": "2026-07-02T11:00:01.073+00:00","renewedDate": "2026-07-02T11:00:01.073+00:00","expirationDate": "2026-07-25T23:59:59.999+00:00","quickApply": false,"categories": [10],"categoriesResolved": ["INFORMATION_TECHNOLOGY"],"languages": [],"languagesResolved": null,"keywords": ["arhitekt","java","architect","senior developer"],"scrapedAt": "2026-07-02T12:25:42.187Z","changeStatus": "NEW","contentHash": "1f283a10024a9277","latitude": 59.437242,"longitude": 24.7572693}
Examples
Search for müügijuht roles in Tallinn:
{"searchQuery": "müügijuht","maxResults": 100}
Only jobs from the last 3 days:
{"searchQuery": "müügijuht","maxResults": 100,"daysOld": 3}
Scrape a specific search URL:
{"startUrls": [{"url": "https://www.cv.ee/"}],"maxResults": 200}
Daily feed (run on a schedule):
{"searchQuery": "müügijuht","daysOld": 1,"maxResults": 500}
Schedule this input to run once a day in the Apify Scheduler — each run returns only jobs posted in the last 24 hours.
💰 Pricing
$1.49 per 1,000 results — you only pay for successfully retrieved listings. Failed retries are never charged.
| Results | Cost |
|---|---|
| 100 | ~$0.15 |
| 1,000 | ~$1.49 |
| 10,000 | ~$14.9 |
| 100,000 | ~$149 |
Flat-rate alternatives typically charge $29–$49/month regardless of usage.
Subscription tiers lower the rate further, down to $0.89 per 1,000 at the highest tier. Use the Max results cap in the input to control your spend exactly.
Performance
| Run size | Typical time |
|---|---|
| 100 results | under 1 minute |
| 1,000 results | 2–4 minutes |
| 10,000 results | 20–35 minutes |
Known limitations
- Salary is only returned when the employer publishes it — many listings carry
nullsalary fields. - Company details vary per listing; the scraper returns what the source publishes and never invents data.
- Very large result sets are bounded by the source's own paging limits.
- Listings can be removed by the source at any time, so a small share of URLs may expire shortly after scraping.
Technical details
- Source: cv.ee — Estonia job listings
- Coverage: everything the public search exposes, filterable via the input parameters above
- 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