Visidarbi.lv Scraper — Latvia Job Listings avatar

Visidarbi.lv Scraper — Latvia Job Listings

Pricing

from $1.19 / 1,000 result items

Go to Apify Store
Visidarbi.lv Scraper — Latvia Job Listings

Visidarbi.lv Scraper — Latvia Job Listings

Scrapes 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.19 / 1,000 result items

Rating

0.0

(0)

Developer

Unfenced Group

Unfenced Group

Maintained by Community

Actor stats

0

Bookmarked

5

Total users

2

Monthly active users

6 days ago

Last modified

Share

Visidarbi.lv Scraper

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. 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:

FieldFormatUse case
descriptionHtmlRaw HTMLDisplay in web apps
descriptionTextPlain textFull-text search, keyword extraction
descriptionMarkdownMarkdownRAG 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

ParameterTypeDescriptionDefault
keywordstringJob title or keyword, e.g. "programmētājs", "driver", "nurse"""
locationstringLocation slug, e.g. "riga", "latvia", "daugavpils-and-region", "abroad""latvia"
maxItemsintegerMaximum number of results to return100
daysOldintegerOnly return listings posted within this many days. 0 = no limit0
skipRepostsbooleanSkip listings seen in previous runs (90-day cross-run deduplication)false
fetchDetailsbooleanFetch the detail page for each listing to retrieve the full description. Increases run timetrue
startUrlsarrayCustom Visidarbi.lv start URLs. Overrides keyword and location when set[]
proxyConfigurationobjectProxy settings. Defaults to Apify AUTO proxyAUTO

Output schema

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

FieldTypeDescription
idstringUnique ID from the source.
urlstringDirect link to the listing.
titlestringTitle as published.
companystringHiring company name.
locationstringLocation as displayed.
locationRegionstringLocation region.
salaryMinnumberMinimum salary (null if not published).
salaryMaxnumberMaximum salary (null if not published).
salaryCurrencystringSalary currency.
salaryPeriodstringSalary period.
salaryTextstringSalary text.
publishDatestringPublish date.
publishDateISOstringPublish date iso.
deadlinestringDeadline.
externalSourcestringExternal source.
contractTypestringContract type.
descriptionHtmlstringFull description in HTML.
descriptionTextstringDescription text.
descriptionMarkdownstringDescription markdown.
contentHashstringStable hash of the content, used for repost and change detection.
summarystringSummary.
sourcestringSource.
scrapedAtstringTimestamp when this record was scraped.
isRepostbooleantrue when the listing is a repost of an earlier one (detected by content hash).
originalPublishDatestringOriginal publish date.
originalUrlstringOriginal url.
{
"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.

ResultsCost
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

RunTime
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: false to skip the detail page fetch. This reduces run time by ~70% but omits descriptionHtml, descriptionText, descriptionMarkdown, summary, and contractType.


Known limitations

  • Description: Only available when fetchDetails: true. Without it, descriptionHtml, descriptionText, and descriptionMarkdown are null.
  • Salary: Not all employers publish salary information — salaryMin, salaryMax, salaryCurrency, and salaryPeriod will be null when unavailable. The raw salaryText is 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 externalSource field 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 url to 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.
  • 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?.nl](mailto:info@unfencedgroup.nl) — we build on request.



Run it on a schedule

This actor is built for repeat use. Set it to run daily, weekly, or hourly, and the data keeps flowing without you touching it.

  • Schedule runs — open the actor, go to Schedules, and pick a cadence. Each run only charges you for the results it returns.
  • Connect it to your stack — push results straight to Google Sheets, Slack, a webhook, or your database using Apify Integrations. No glue code needed.
  • Pull results via API — every run writes a clean dataset you can fetch with one API call, ready for whatever you build on top of it.

Set it once and it runs on its own.


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