Construction Tender Radar PL avatar

Construction Tender Radar PL

Pricing

$10.00 / 1,000 qualified construction notice delivereds

Go to Apify Store
Construction Tender Radar PL

Construction Tender Radar PL

Find Polish BZP construction tenders by CPV, buyer province and title. Export clean JSON/CSV with official notice links, published deadlines and changes against your previous snapshot. Bounded searches with transparent coverage and continuation cursors.

Pricing

$10.00 / 1,000 qualified construction notice delivereds

Rating

0.0

(0)

Developer

Daniel Michałek

Daniel Michałek

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

7 days ago

Last modified

Categories

Share

Find Polish public procurement notices matching construction CPV codes, publication dates, title terms and buyer regions. Get deduplicated notices with published deadlines, buyer organisations, official links and changes compared with a snapshot you supply.

Quick start

  1. Choose an inclusive publication date range of up to 31 days, or leave both dates empty to use the last 7 UTC days. Keep CPV prefix 45 for construction broadly, or enter narrower prefixes such as 453 for building installation work.
  2. Optionally add title terms or buyer province codes, then set your result and spending limits and start the run. Dates filter publication, not the submission deadline.
  3. Open the dataset or download the CSV. Check the coverage report before using the results. Save the SNAPSHOT output and supply it as previousSnapshots on a later run to see changes.

Input

{
"dateFrom": "2026-10-19",
"dateTo": "2026-10-20",
"cpvPrefixes": ["45"],
"titleTerms": [],
"provinceCodes": [],
"pageSize": 10,
"maxPages": 2,
"maxResults": 20,
"maxRetries": 1,
"maxRunTimeMs": 60000,
"previousSnapshots": []
}

These dates are a historical example; choose your own date range.

InputMeaning
dateFrom, dateToOptional inclusive publication dates, YYYY-MM-DD, interpreted as full UTC days. When both are omitted, the last 7 UTC days ending today are used; a single omitted endpoint is derived from the other one.
cpvPrefixesOne or more 2–8 digit prefixes beginning 45. Any matching main or secondary CPV can qualify.
titleTermsOptional case-insensitive literal terms. A title matching any term qualifies. Attachments are not searched.
provinceCodesOptional source buyer province codes, such as PL14. This is the buyer's location, not necessarily the place of works.
maxResults, maxPages, pageSizeBounds on returned notices, requested pages and records per source page.
maxRunTimeMsTotal source time allowance, including request spacing, retries and backoff. Set the Actor timeout high enough for this allowance and output storage.
previousSnapshotsThe prior SNAPSHOT array. Compared fields are title, CPV, deadline, buyer name, city and province.
searchAfterOptional report.nextSearchAfter cursor from a capped result. Keep the same dates and filters when continuing.

The input form documents all options, including per-request timeout and retries. Unknown fields, invalid dates and duplicate snapshot keys are rejected.

Results

The default dataset contains one row per retained BZP notice. When multiple versions of the same base notice number are observed, the newest is kept. Separate notices from one procurement procedure remain separate.

Output fieldMeaning
noticeKey, noticeNumberBase notice identity and published version number.
title, cpvCodesSource title and normalized construction classification codes.
publicationDate, deadlineSource publication time and submission deadline; an absent deadline remains null.
buyerName, buyerCity, buyerProvinceBuyer organisation and its location.
noticeUrlOfficial BZP notice detail link.
sourceUrl, sourceRecordId, observedAtSource request, exact record identifier and observation time.
changeType, changedFieldsnew, changed or unchanged against your supplied snapshot, with fields that differ.

new means absent from your baseline, not necessarily newly published. Missing baseline notices are never labelled removed.

The run also produces:

  • OUTPUT: actual run status (success, partial, empty or failed), query scope, completeness, stop reason, continuation cursor and structured source errors. In pay-per-event mode it includes the named charged count and any spending-limit stop.
  • SNAPSHOT: normalized fields to use for the next comparison.
  • TENDERS: a UTF-8 CSV download. Array values use |; cells that could be interpreted as spreadsheet formulas are escaped.

Pricing

When pay-per-event pricing is enabled, one notice-returned event represents one distinct matching notice delivered to the dataset. See the Pricing tab for the configured rate. At $0.01 per notice, four delivered notices cost $0.04 in notice events.

There is no notice event for an empty feed, a rejected or duplicate record, or a source error without a delivered notice. If useful notices are collected before a later source failure, those delivered notices may be charged and the report shows partial coverage. The spending limit can stop retrieval or delivery. Separate runs can return and charge for the same notice again; a supplied snapshot adds comparison, not a lifetime deduplication entitlement.

The official BZP API is free. The service fee covers retrieval, filtering, normalization and comparison.

Coverage and limits

This Actor covers structured Polish BZP ContractNotice records matching construction CPVs. A secondary construction CPV can qualify a notice; a match does not establish its legal contract type. It does not inspect attachments, lots, qualification conditions or separate amendment/cancellation notices. Verify requirements and deadlines through the official link before acting.

Results are bounded by your query and limits. report.complete means an empty or short final page was observed without invalid records; it does not guarantee complete national coverage or all changes to a tender. Caps and source problems remain visible. Do not replace a complete historical baseline with a partial snapshot without accounting for its scope.

Maximums are 31 calendar days, 20 pages, 100 records per page, 1,000 returned notices, 1,000 prior snapshots and 1 MiB of input. Source time is configurable from 1 to 600 seconds. The official limit is 30 requests per minute per IP; requests are spaced at least 2.1 seconds apart, including retries. HTTP 403 stops retrieval. Coordinate simultaneous runs sharing an IP.

An interrupted run checks persisted output before resuming. If a delivery or charge cannot be confirmed, it stops with a reconciliation error instead of blindly appending or charging again. Use fresh default storage for a new run.

Source and attribution

Source: Urząd Zamówień Publicznych / e-Zamówienia / Biuletyn Zamówień Publicznych. The official integration guidance and platform rules describe free filtered reading of published notices. The API traffic limit applies.

Outputs preserve source links, publication and observation dates, attribution and the transformation description. No account login, attachment collection or personal-contact extraction is required. Source titles and buyer names can contain incidental personal information; assess onward publication accordingly. This service does not grant permission to republish attachments or an unrestricted copy of the source database.