Visidarbi.lv Scraper — Latvia Job Listings
Pricing
from $1.49 / 1,000 result items
Visidarbi.lv Scraper — Latvia Job Listings
Under maintenanceScrapes job listings from Visidarbi.lv, Latvia's largest job portal and aggregator. Supports keyword and location filters, pagination, full description fetching, and cross-run repost detection.
Pricing
from $1.49 / 1,000 result items
Rating
0.0
(0)
Developer
Unfenced Group
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Visidarbi.lv Scraper

Scrape job listings from Visidarbi.lv — Latvia's largest job aggregator with 8,000–12,000 active listings collected daily from all major Latvian job portals. Filter by keyword and location. No API key required. HTTP-only — fast and cost-efficient.
Why this scraper?
🔄 Repost detection keeps your data clean
Job aggregators are especially prone to duplicate listings — the same vacancy appears from multiple source portals simultaneously. This scraper tracks jobs across runs using a 90-day index. The isRepost field flags duplicates, originalPublishDate shows when the vacancy first appeared, and originalUrl links to the first occurrence. Set skipReposts: true to filter them out entirely.
💰 Structured salary data — monthly and hourly
Visidarbi.lv aggregates salary information from all source portals in a consistent format. The scraper returns salaryMin, salaryMax, salaryCurrency (EUR), and salaryPeriod (MONTH or HOUR) as structured numeric fields — no regex parsing needed in your pipeline. Raw salary text (e.g. "1 200 - 1 800 (gross)") is also preserved in salaryText.
📄 Three description formats
When fetching the full job description, each listing is returned in three formats simultaneously:
| Field | Format | Use case |
|---|---|---|
descriptionHtml | Raw HTML | Display in web apps |
descriptionText | Plain text | Full-text search, keyword extraction |
descriptionMarkdown | Markdown | RAG pipelines, LLM agents |
🌍 Covers all of Latvia — including regional filters
Filter listings by any Latvian region or city: riga, daugavpils-and-region, vidzeme, zemgale, kurzeme, latgale, or use latvia to get nationwide results. International postings (Netherlands, Germany, Norway, Sweden) are available under abroad.
⏱️ Date filter removes stale listings automatically
Set daysOld to only retrieve vacancies posted within a specific window. Useful for daily feed pipelines — set daysOld: 1 and run on a schedule to get only fresh postings each day.
🔗 Custom start URLs for targeted crawling
Bypass the standard filters and provide any Visidarbi.lv search or category URL directly via startUrls. Useful for bookmarked searches, specific employer pages, or category URLs not covered by the keyword/location inputs.
Input parameters
| Parameter | Type | Description | Default |
|---|---|---|---|
keyword | string | Job title or keyword, e.g. "programmētājs", "driver", "nurse" | "" |
location | string | Location slug, e.g. "riga", "latvia", "daugavpils-and-region", "abroad" | "latvia" |
maxItems | integer | Maximum number of results to return | 100 |
daysOld | integer | Only return listings posted within this many days. 0 = no limit | 0 |
skipReposts | boolean | Skip listings seen in previous runs (90-day cross-run deduplication) | false |
fetchDetails | boolean | Fetch the detail page for each listing to retrieve the full description. Increases run time | true |
startUrls | array | Custom Visidarbi.lv start URLs. Overrides keyword and location when set | [] |
proxyConfiguration | object | Proxy settings. Defaults to Apify AUTO proxy | AUTO |
Output schema
{"id": "69611efd11751","url": "https://www.visidarbi.lv/en/job-ad/programmers/69611efd11751","title": "PHP Developer","company": "Acme Tech SIA","location": "Riga","locationRegion": null,"salaryMin": 2500,"salaryMax": 3500,"salaryCurrency": "EUR","salaryPeriod": "MONTH","salaryText": "2 500 - 3 500 (gross)","publishDate": "3 hours ago","publishDateISO": "2026-04-24","deadline": "2026-05-15","externalSource": "cv.lv","contractType": "Full time","descriptionHtml": "<p>We are looking for an experienced PHP Developer...</p>","descriptionText": "We are looking for an experienced PHP Developer...","descriptionMarkdown": "We are looking for an experienced PHP Developer...","contentHash": "a3f8c2d1e4b56789","summary": "We are looking for an experienced PHP Developer to join our growing team in Riga. You will work on high-traffic web applications...","source": "visidarbi.lv","scrapedAt": "2026-04-24T10:15:32.000Z","isRepost": false,"originalPublishDate": null,"originalUrl": null}
Always present fields: id, url, title, company, location, salaryText, publishDate, publishDateISO, source, scrapedAt, isRepost, originalPublishDate, originalUrl, contentHash.
Populated when fetchDetails: true: descriptionHtml, descriptionText, descriptionMarkdown, summary, contractType, deadline, externalSource.
May be null: salaryMin, salaryMax, salaryCurrency, salaryPeriod (not all employers publish salary), locationRegion, deadline, externalSource, contractType.
Examples
Daily feed — all new Latvian jobs in the last 24 hours:
{"keyword": "","location": "latvia","maxItems": 500,"daysOld": 1,"skipReposts": true}
IT jobs in Riga:
{"keyword": "developer","location": "riga","maxItems": 100,"fetchDetails": true}
Driving and logistics — nationwide:
{"keyword": "driver","location": "latvia","maxItems": 200,"daysOld": 7,"skipReposts": true}
Custom URL — jobs abroad (Netherlands / Germany):
{"startUrls": [{ "url": "https://www.visidarbi.lv/en/job-ads/where:abroad" }],"maxItems": 100}
💰 Pricing
$1.49 per 1,000 results — you only pay for successfully retrieved job listings. Failed retries and filtered reposts are never charged.
| Results | Cost |
|---|---|
| 100 | ~$0.15 |
| 1,000 | ~$1.49 |
| 10,000 | ~$14.90 |
| 100,000 | ~$149.00 |
Flat-rate alternatives typically charge $29–$49/month regardless of usage. At 10,000 results/month, this scraper costs significantly less with no commitment.
Use the Max results cap in the input to control your spend exactly.
Performance
| Run | Time |
|---|---|
| 100 listings (with details) | ~2 min |
| 1,000 listings (with details) | ~15 min |
| 5,000 listings (with details) | ~60 min |
| 10,000 listings (list only) | ~20 min |
Set
fetchDetails: falseto skip the detail page fetch. This reduces run time by ~70% but omitsdescriptionHtml,descriptionText,descriptionMarkdown,summary, andcontractType.
Known limitations
- Description: Only available when
fetchDetails: true. Without it,descriptionHtml,descriptionText, anddescriptionMarkdownarenull. - Salary: Not all employers publish salary information —
salaryMin,salaryMax,salaryCurrency, andsalaryPeriodwill benullwhen unavailable. The rawsalaryTextis still captured when the value is displayed. - External source: Visidarbi.lv aggregates from multiple Latvian portals (cv.lv, nva.gov.lv, ss.com, workingday.lv, etc.). The
externalSourcefield identifies which portal the listing originates from, but the listing itself is hosted on Visidarbi.lv. - Apply URL: Not included — Visidarbi.lv routes applications through the originating portal. Use
urlto navigate to the listing and follow the apply button from there. - Languages: The scraper uses the English interface (
/en/). Listing content (title, description) is in the original language of the posting (Latvian, Russian, or English depending on the employer).
Technical details
- Source: Visidarbi.lv — Latvia's largest job aggregator, operated by Alma Career Latvia SIA (CV-Online Group). Aggregates from 10+ Latvian job portals.
- Method: HTTP-only with server-rendered HTML parsing. No browser required.
- Proxy: Apify AUTO proxy (rotated per request).
- Memory: 256 MB
- Repost storage: Named KeyValueStore
visidarbi-lv-job-dedup, 90-day TTL per job ID. - Retry: Automatic retry with exponential backoff on network errors and server-side rate limiting.
- Deduplication: Cross-run, 90-day window. Safe to run on a daily schedule without accumulating duplicates.
Additional services
Need a custom actor, additional filters, scheduled runs, or integration support? Send an email to info@unfencedgroup.nl — we build on request.
Built by unfenced-group · Issues? Open a ticket or send a message.