Visidarbi.lv Scraper — Latvia Job Listings avatar

Visidarbi.lv Scraper — Latvia Job Listings

Under maintenance

Pricing

from $1.49 / 1,000 result items

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

Visidarbi.lv Scraper — Latvia Job Listings

Under maintenance

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

Rating

0.0

(0)

Developer

Unfenced Group

Unfenced Group

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

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

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

{
"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.
  • 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.