Pricing
from $1.19 / 1,000 results
NVA Latvia Job Scraper
Scrape all active job listings from the Latvian State Employment Agency (NVA) public vacancy portal. Structured JSON with salary, skills, and descriptions.
Pricing
from $1.19 / 1,000 results
Rating
0.0
(0)
Developer
Actor stats
1
Bookmarked
3
Total users
2
Monthly active users
2 days ago
Last modified
Categories
Share
Scrape all active job listings from the Latvian State Employment Agency (NVA) public vacancy portal — structured JSON output including job descriptions, salary ranges, work conditions, and ESCO skills. No API key required.
Why this scraper?
📋 Complete vacancy data
Every active listing from the official Latvian government job portal, including full job descriptions, required qualifications, and salary information.
💶 Salary extraction
Salary range parsed into structured salaryMin / salaryMax fields (EUR) with automatic period detection (monthly or hourly).
🎯 ESCO skill tags
Captures structured ESCO competency links attached to each vacancy — useful for labour market analysis and skills-gap research.
🔁 Repost detection
Cross-run deduplication (90-day memory) via skipReposts — run daily to get only genuinely new listings.
🗓️ Date filtering
Filter by daysOld to limit results to recently published vacancies. Combine with skipReposts: true for a daily incremental feed.
🔗 Direct URL mode
Pass specific vacancy URLs via startUrls to scrape individual listings on demand.
Input parameters
Filters
| Parameter | Type | Default | Description |
|---|---|---|---|
keyword | string | — | Search across job title, location, company and other text fields. Example: "programmētājs" or "Rīga" |
minSalary | integer | — | Only return vacancies with a gross salary at or above this amount (EUR) |
workload | string | — | "pilna" for full-time only, "nepilna" for part-time only |
remoteOnly | boolean | false | Only return fully remote vacancies |
partialRemoteOnly | boolean | false | Only return vacancies with partial remote option |
Behaviour
| Parameter | Type | Default | Description |
|---|---|---|---|
maxResults | integer | 9999 | Maximum number of vacancies to return |
fetchDetails | boolean | true | Fetch full vacancy detail (description, work conditions, skills, education) |
skipReposts | boolean | false | Skip vacancies already seen in previous runs (90-day memory) |
daysOld | integer | — | Only return vacancies published within this many days |
startUrls | array | [] | Specific NVA vacancy URLs to scrape directly — overrides all filters |
Output schema
Always present
| Field | Type | Description |
|---|---|---|
id | string | Unique NVA vacancy ID |
url | string | Public URL to the vacancy on cvvp.nva.gov.lv |
title | string | Job title / profession name (in Latvian) |
company | string | Employer name |
location | string | Work location address |
vacancyNumber | string|null | NVA vacancy reference number (e.g. "260424-146") |
salaryText | string|null | Raw salary string as published (e.g. "900-1450") |
salaryMin | number|null | Minimum salary (null if not published) |
salaryMax | number|null | Maximum salary (null if single value or not published) |
salaryCurrency | string | Always "EUR" |
salaryPeriod | string|null | "MONTH" for monthly, "HOUR" for hourly rates |
validUntil | string|null | Application deadline (YYYY-MM-DD) |
publishDate | string|null | Publication date (YYYY-MM-DD) |
publishDateISO | string|null | Publication timestamp in ISO 8601 format |
isRepost | boolean | Whether this vacancy was seen in a previous run |
originalPublishDate | string|null | First-seen publish date if repost |
originalUrl | string|null | Original URL if repost |
contentHash | string | 16-char MD5 fingerprint for change detection |
source | string | Always "cvvp.nva.gov.lv" |
scrapedAt | string | ISO timestamp of when this record was scraped |
With fetchDetails: true
| Field | Type | Description |
|---|---|---|
descriptionHtml | string|null | Full job description as HTML (base64 images stripped) |
descriptionText | string|null | Plain text version of the job description |
descriptionMarkdown | string|null | Markdown version of the job description |
summary | string|null | First 200 characters of the description (plain text) |
jobArea | string|null | Industry / occupation area (e.g. "Tirdzniecība / Mārketings") |
contractType | string|null | Contract type (e.g. "Darbinieka amats uz nenoteiktu laiku") |
workSchedule | string|null | Work schedule (e.g. "Maiņu darbs") |
workload | string|null | Full-time or part-time (e.g. "Viena vesela slodze") |
vacancyCount | integer|null | Number of open positions |
startDate | string|null | Planned start date if specified |
isRemote | boolean|null | Whether fully remote work is possible |
isPartialRemote | boolean|null | Whether partial remote work is possible |
isSeasonal | boolean|null | Whether this is a seasonal position |
hasTravelRequired | boolean|null | Whether business travel is required |
hasAccommodation | boolean|null | Whether accommodation is provided |
educationLevel | string|null | Required education level (null if not specified) |
educationField | string|null | Required education field (null if not specified) |
languageRequirements | array | Language requirements (empty array if none specified) |
computerSkills | array | Computer skill requirements (empty array if none) |
escoSkills | array | ESCO competency objects: {name, uri} (empty if none) |
driverLicenseCategories | string|null | Required driving licence categories (null if none) |
tractorLicenseCategories | string|null | Required tractor/special vehicle licence categories (null if none) |
certifications | string|null | Required certifications (null if none) |
additionalRequirements | string|null | Additional requirements text (null if none) |
salaryPaymentMethod | string|null | Salary payment method/type (null if not specified) |
stateLanguageLevel | string|null | Required Latvian state language level (e.g. "Augstākā līmeņa 2.pakāpe (C2)") |
status | string|null | Vacancy status from the portal (e.g. "AKTUALA") |
Example record
{"id":"448829929","url":"https://cvvp.nva.gov.lv/#/pub/vakances/448829929","title":"MAZUMTIRDZNIECĪBAS VEIKALA PĀRDEVĒJS","company":"\"FIRMA MADARA 89\" SIA","location":"LATVIJA, Selgas iela 1B, Roja, Rojas pag., Talsu nov.","vacancyNumber":"260424-146","salaryText":"900","salaryMin":900,"salaryMax":null,"salaryCurrency":"EUR","salaryPeriod":"MONTH","validUntil":"2026-05-08","publishDate":"2026-04-24","publishDateISO":"2026-04-24T14:47:57.090Z","descriptionHtml":"<p><b>Galvenie darba pienākumi:</b></p><ul><li>Pārtikas un nepārtikas preču tirdzniecība</li></ul>","descriptionText":"Galvenie darba pienākumi: Pārtikas un nepārtikas preču tirdzniecība...","descriptionMarkdown":"**Galvenie darba pienākumi:**\n\n- Pārtikas un nepārtikas preču tirdzniecība","summary":"Galvenie darba pienākumi: Pārtikas un nepārtikas preču tirdzniecība; Pircēju apkalpošana pie kases; Preču pieņemšana, pasūtīšana...","jobArea":"Tirdzniecība / Mārketings","contractType":"Darbinieka amats uz nenoteiktu laiku","workSchedule":"Maiņu darbs","workload":"Viena vesela slodze","vacancyCount":1,"startDate":null,"isRemote":null,"isPartialRemote":null,"isSeasonal":null,"hasTravelRequired":null,"hasAccommodation":null,"educationLevel":null,"educationField":null,"languageRequirements":[],"computerSkills":[],"escoSkills":[],"driverLicenseCategories":null,"tractorLicenseCategories":null,"certifications":null,"additionalRequirements":null,"salaryPaymentMethod":null,"stateLanguageLevel":null,"status":"AKTUALA","isRepost":false,"originalPublishDate":null,"originalUrl":null,"contentHash":"a3f8c1d2e4b9f7a1","source":"cvvp.nva.gov.lv","scrapedAt":"2026-04-24T17:30:00.000Z"}
Examples
Search by keyword:
{"keyword":"programmētājs","fetchDetails":true}
Remote jobs with salary above 2000 EUR:
{"minSalary":2000,"remoteOnly":true,"fetchDetails":true}
Full-time jobs in Rīga, new in the last 7 days:
{"keyword":"Rīga","workload":"pilna","daysOld":7,"fetchDetails":true}
Fetch all active NVA vacancies with full details:
{"fetchDetails":true,"maxResults":9999}
Daily incremental feed — new listings only:
{"fetchDetails":true,"daysOld":1,"skipReposts":true}
Direct URL — scrape a specific vacancy:
{"startUrls":[{"url":"https://cvvp.nva.gov.lv/#/pub/vakances/448829929"}],"fetchDetails":true}
💰 Pricing
$1.49 per 1,000 results — you only pay for successfully retrieved listings. Failed retries and filtered reposts are never charged.
| Results | Cost |
|---|---|
| 100 | ~$0.15 |
| 1,000 | ~$1.49 |
| 10,000 | ~$14.90 |
Flat-rate alternatives typically charge $29–$49/month regardless of usage.
Use the Max results cap in the input to control your spend exactly.
Performance
| Run type | Approx. time | Memory |
|---|---|---|
| Full feed, fetchDetails: true (~100 listings) | 30–90 seconds | 512 MB |
| Full feed, fetchDetails: false | 5–15 seconds | 512 MB |
| startUrls (1 listing) | 3–8 seconds | 512 MB |
Known limitations
- The NVA public vacancy portal (
cvvp.nva.gov.lv) typically lists 50–200 active vacancies at any time — this is a curated government portal, not a commercial aggregator. - Job descriptions are published in Latvian. No translation is performed.
- Salary data is published at the employer's discretion;
salaryMinandsalaryMaxmay be null for listings without salary information. - Contact person name, phone, and email are excluded from output in compliance with GDPR / AVG personal data policy.
educationLevel,educationField, and language requirements are null for many listings.
Technical details
- Source: cvvp.nva.gov.lv — Latvian State Employment Agency public vacancy portal (NVA CVVP)
- Memory: 512 MB
- Repost storage: KeyValueStore
nva-lv-scraper-job-dedup, 90-day TTL - Retry: Automatic retry on network errors, exponential backoff, 3 attempts per request
Additional services
Need a custom actor, additional filters, scheduled runs, or integration support?.nl](mailto:info@unfencedgroup.nl) — we build on request.
Related scrapers
Other scrapers in our Jobs — Baltics collection:
- CV.lv Job Scraper
- CVMarket.lv Scraper
- Prakse.lv Scraper
- Visidarbi.lv Scraper — Latvia Job Listings
- CV.ee Scraper
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
