Czech public tenders (zakazky.gov.cz / NEN)
Pricing
from $2.00 / 1,000 tender returneds
Czech public tenders (zakazky.gov.cz / NEN)
Structured Czech public tender notices from the official open data of the Registr veřejných zakázek (VVZ, NEN, Tender arena, TENDERMARKET), with keyword, CPV, date and incremental filters.
Pricing
from $2.00 / 1,000 tender returneds
Rating
0.0
(0)
Developer
Lukáš Březina
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Structured Czech public procurement notices as clean JSON. One dataset item per tender: title, contracting authority with ICO, CPV codes, estimated value, procedure type, status, publication date, bid deadline, place of performance, description, winners with contract prices, and document metadata.
The data comes from the official machine readable channels of the Czech Ministry of Regional Development (MMR), not from scraping web pages:
- Bulk mode (default): the open data of the Registr verejnych zakazek, published monthly at isvz.nipez.cz. It is the central register behind zakazky.gov.cz and aggregates the Vestnik verejnych zakazek (VVZ), the national tool NEN, Tender arena and TENDERMARKET, which together cover essentially the whole Czech public procurement market including below threshold contracts.
- Profiles mode: the standard XML export that every certified Czech procurement tool must serve for each contracting authority profile (decree 345/2023 Sb.). Use it to get same day data for specific authorities you care about.
What you get
Sample item (shortened):
{"id": "RVZ2400000649","title": "ZZS ZK - injekcni a infuzni technika 2024","contractingAuthority": {"name": "Zdravotnicka zachranna sluzba Zlinskeho kraje","ico": "62182137","nuts": "CZ072","address": "Peroutkovo nabrezi 434, Zlin 76001","profileUrl": "https://nen.nipez.cz/profil/ZZSZK"},"cpvCodes": ["33141310"],"kind": "Dodavky","regime": "Podlimitni","estimatedValueCzk": null,"procedureType": "Zjednodusene podlimitni rizeni","status": "Dokoncen/Zadan","publicationDate": "2024-02-13T15:52:04","bidDeadline": "2024-03-11T13:00:00","updatedAt": "2026-07-08T17:50:19","url": "https://nen.nipez.cz/Zadavaci_postup/N006-24-V00003893","aggregatorUrl": "https://zakazky.gov.cz/verejne-zakazky/detail-zakazky/RVZ2400000649","vvzNumbers": ["Z2024-021134"],"sourceSystem": "Narodni elektronicky nastroj","placeOfPerformanceNuts": ["CZ072"],"description": "Predmetem verejne zakazky je uzavreni ramcove smlouvy...","partsCount": 1,"parts": [{ "id": "RVZ2400000649/001", "status": "Dokoncen/Zadan", "bidDeadline": "2024-03-11T13:00:00" }],"winners": [{ "name": "Perfect Distribution a.s.", "ico": "47675934", "contractPriceNoVat": null }],"documents": [{ "documentId": "4e3f630f-...", "name": "priloha3-ramcova smlouva.docx", "type": "Vysvetleni zadavaci dokumentace", "createdAt": "2024-02-22T14:58:29" }]}
All timestamps are Europe/Prague local time in the format YYYY-MM-DDTHH:MM:SS.
Inputs
| Field | Meaning |
|---|---|
mode | bulk (whole market, monthly open data) or profiles (fresh data for chosen authorities) |
publishedSince | Only tenders whose procedure started on or after this date (YYYY-MM-DD) |
keyword | Case and diacritics insensitive substring over title, description and authority name |
cpvPrefix | CPV code prefix, for example 45 construction, 72 IT services |
maxItems | Maximum number of tenders to return |
newerThan | Incremental mode, see below |
categories | Bulk mode: VZ (default), DNS, SON, SK, RVP |
profileUrls | Profiles mode: authority profile URLs, for example https://nen.nipez.cz/profil/CzechInvest |
Incremental mode
Every item carries updatedAt, the official timestamp of its last change in the register. To get only what changed since your last run:
- Run the Actor. After it finishes, read the
maxUpdatedAtvalue from theLAST_RUN_INFOrecord in the run's key-value store (also printed in the log). - Pass that value as
newerThanin the next run. Only tenders withupdatedAtstrictly newer are returned.
Tenders are deduplicated by their NIPEZ id and you always get the newest published version of each tender.
Data freshness and limits
- Bulk open data for a month is published around the 5th day of the following month. It is the complete official record, but do not expect it to contain yesterday's tender. For same day data on specific authorities, use profiles mode.
- Bulk open data starts in February 2024. One run reads at most 14 months.
- Profiles mode covers a window of at most the last 366 days per the decree, and the Actor waits 10 seconds between requests to nen.nipez.cz, as its robots.txt requests. Expect roughly one authority profile per 10 to 15 seconds.
documentsentries from the bulk source often carry an internaldocumentIdinstead of a direct URL; the tender'surloraggregatorUrlpage links the actual files. Profiles mode returns direct document URLs.- The Actor identifies itself with a descriptive User-Agent, uses only interfaces designated by MMR for machine processing, and does not output personal data about individuals beyond what the public notice itself contains (authority and company names as published).
Caching
Bulk mode caches each month's normalized records in a named key-value store that persists across runs (see NOTES.md "Cache design"). The first run that needs a given month downloads and parses the archive as before; every later run for that month reuses the cache and never re-downloads. A month still being published (the current month, and briefly after it closes, to allow for corrections) is re-checked periodically rather than cached forever; closed past months are cached permanently.
Running on the Apify platform
- The Czech government data infrastructure rejects connections from datacenter IP ranges, so the Actor uses Czech residential proxies through Apify Proxy by default when it runs on the platform. Leave the proxy setting as it is unless you know what you are doing. Local runs from a regular connection work without a proxy.
- Memory: on a cache hit, well under 200 MB and a few seconds. On a cache miss (the archive must be downloaded and normalized), the Actor streams the raw JSON and flushes normalized records to the cache in ~4 MB chunks as it goes rather than holding a whole month in memory, but a full VZ month is 20-35k tenders and measured peak RSS was about 1 GB (see NOTES.md "Memory: real numbers"). Default run memory is 2048 MB for headroom; do not lower it below 1536 MB.
- A bulk run downloads about 63 MB per monthly file it needs, only on a cache miss (verified on the platform: USD 0.51 for a miss, USD 0.001 for a hit on the same input — see NOTES.md). Downloads resume automatically if a proxy connection drops mid transfer.
Typical uses
- Tender alerts for a sales team: run daily in profiles mode over the authorities in your segment, or monthly in bulk mode with
keywordorcpvPrefixfilters. - Market analysis: pull whole months of awarded contracts with winners and contract prices.
- Enrichment: match
winners[].icoandcontractingAuthority.icoagainst your CRM.