Poland BZP Tenders Scraper: e-Zamówienia to Excel avatar

Poland BZP Tenders Scraper: e-Zamówienia to Excel

Pricing

from $2.00 / 1,000 results

Go to Apify Store
Poland BZP Tenders Scraper: e-Zamówienia to Excel

Poland BZP Tenders Scraper: e-Zamówienia to Excel

Polish national public tenders and award results from BZP on e-Zamówienia (official API). Filter by keyword, CPV, province, type, value. Winners and PLN contract values. GDPR-safe defaults.

Pricing

from $2.00 / 1,000 results

Rating

0.0

(0)

Developer

TenderFeed

TenderFeed

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

14 hours ago

Last modified

Security

Limited permissions

Share

Poland e-Zamówienia / BZP Public Tenders Scraper by TenderFeed

Search Polish public tenders and award results from the Biuletyn Zamówień Publicznych (BZP), Poland's official bulletin for national public procurement, published on the government's e-Zamówienia platform. Filter by keyword, CPV code, province (voivodeship), notice type, contract type, buyer, value (PLN) and deadline. Result notices include the winning contractor and the contract value. Clean, English-labelled JSON, CSV or Excel.

Built by TenderFeed (apify.com/tenderfeed) on the e-Zamówienia public notice board API (no API key, no login). BZP covers the below-EU-threshold market that never reaches TED: several hundred new contract notices per working day from municipalities (gminy), hospitals, schools and state agencies.

What can you do with it?

  • Daily Polish bid alerts by CPV and voivodeship (e.g. road works in mazowieckie).
  • Lead generation: buyer name, city, province and NIP tax ID in every row; the buyer's published email on request (includeBuyerContacts).
  • Win/loss and competitor analysis: TenderResultNotice rows with contractors and PLN contract values.
  • AI agents: use it as an MCP tool (Apify MCP server) to answer "Which Polish hospitals are buying medical equipment this week?"

Input example

{
"keywords": ["remont"],
"noticeTypes": ["ContractNotice", "TenderResultNotice"],
"contractTypes": ["Works"],
"provinces": ["PL14"],
"cpvCodes": ["45"],
"publishedFrom": "7 days",
"onlyOpen": true,
"maxResults": 0
}
  • noticeTypes: ContractNotice (calls for tenders, default), TenderResultNotice (results), SmallContractNotice, AgreementIntentionNotice, ContractPerformingNotice, NoticeUpdateNotice, CompetitionNotice.
  • provinces: PL02..PL32 (e.g. PL14 mazowieckie, PL12 małopolskie, PL24 śląskie).
  • A single keyword is searched server-side in the tender title (Polish works best: remont, oprogramowanie, dostawa).

Output example

Real row from a live run (2026-10-29, default input, description shortened):

{
"source": "pl-bzp",
"sourceId": "2026/BZP 00507107/01",
"ocid": "ocds-148610-28a28ecf-bf58-4c1b-b2ba-e2adefdc2140",
"url": "https://ezamowienia.gov.pl/mo-client-board/bzp/notice-details/id/08df3574-2846-e200-cfcf-e60001c05bd0",
"title": "Dostawa zabawek dla dzieci od pierwszego dnia życia, w formie miękkiej przytulanki do Zespołu Żłobków m.st Warszawy - II procedura",
"noticeType": "ContractNotice",
"status": "active",
"procedureType": "Basic procedure",
"contractType": "supplies",
"buyerName": "Zespół Żłobków m.st W-wy",
"buyerCountry": "PL",
"buyerCity": "Warszawa",
"cpvCodes": ["37520000", "39294100"],
"otherClassificationCodes": ["NUTS:PL911"],
"placeOfPerformance": "Warszawa, mazowieckie, PL",
"publishedAt": "2026-10-29T04:21:51.7907299Z",
"deadlineAt": "2026-11-06T08:00:00Z",
"estimatedValue": 181300.0,
"currency": "PLN",
"documentsUrl": "https://ezamowienia.gov.pl/mp-client/search/list/ocds-148610-28a28ecf-bf58-4c1b-b2ba-e2adefdc2140",
"bzpNumber": "2026/BZP 00507107",
"province": "mazowieckie",
"buyerNationalId": "5213598403",
"belowEuThreshold": true
}

A result row from a live test (2026-10-29) carries for example "awardees": ["FLIZER Spółka z ograniczoną odpowiedzialnością"], "awardedValue": 176628.0, "estimatedValue": 153997.73. In a 3-day sample of 120 works result notices, 97 had a contractor and contract value.

Buyer contacts and GDPR (includeBuyerContacts)

BZP notices publish the buyer's email address (often a generic office mailbox, sometimes a named employee). By default (includeBuyerContacts: false) it is removed and the Actor returns organisation-level data only (buyer name, city, province, NIP, notice and procedure links). Set includeBuyerContacts: true to keep it, only if you have a lawful basis under the GDPR. In a live test (40 notices, 2026-10-29) contacts-on returned an email on 40/40 rows; contacts-off returned 0 while keeping buyerName on 40/40. BZP does not publish contact names or phones in a structured way.

Daily alerts ("only new" monitoring mode)

Turn on onlyNew, give the search a monitoringId (e.g. "pl-works-daily") and schedule the Actor daily. Each run returns, and charges for, only notices you have not received before.

Sample output (real run)

One row from a run on 6 November 2026 (core columns only; every row also has description, status, procedureType, documentsUrl and more). Contact values are masked here. Since schema 1.2 every row also carries the cross-source columns country, deadline, valueAmount, valueCurrency and cpvOrNaics next to the original ones (buyerCountry, deadlineAt, estimatedValue, currency, cpvCodes/naicsCodes), which are unchanged.

{
"title": "„Dostawa wraz z wdrożeniem i uruchomieniem oprogramowania oraz infrastruktury sprzętowej dla ZUK w Lubiszynie realizowanego w ramach „Cyb...",
"source": "pl-bzp",
"country": "PL",
"noticeType": "ContractNotice",
"publishedAt": "2026-11-06T07:42:11.6886795Z",
"deadline": "2026-11-17T11:00:00Z",
"buyerName": "GMINA LUBISZYN",
"valueAmount": null,
"valueCurrency": null,
"cpvOrNaics": "48820000, 30233000, 48730000, 72263000",
"setAside": null,
"url": "https://ezamowienia.gov.pl/mo-client-board/bzp/notice-details/id/08df3bd9-77fe-e479-c1c5-d5000193d37d",
"buyerContactName": null,
"buyerContactEmail": null,
"buyerContactPhone": null
}

Limits and notes

  • Data source: e-Zamówienia / BZP public notice search.
  • Access: No login or API key.
  • Delays and gaps: Notices are mostly in Polish; titles are not translated. Value is often missing in the notice index.
  • Contacts: No buyer contact persons are extracted.
  • Fields the portal does not publish stay null; nothing is guessed or filled in.

Pricing

Pay per result: $2.00 per 1,000 notices ($0.002 per row) plus Apify's small run-start fee. A daily alert with 20 new notices costs about $1.20 a month.

Notes and limits

  • Titles and descriptions are in Polish; procedure types are translated to English (procedureLegalBasis keeps the original legal basis).
  • estimatedValue is filled only when the buyer publishes it in the notice (about 15% of contract notices); result notices usually carry the contract value.
  • The e-Zamówienia API is sometimes slow or drops connections; the Actor retries automatically with backoff.
  • Above-EU-threshold Polish tenders are published on TED: use the TenderFeed EU TED Actor for those.

More TenderFeed sources

Same output schema across all sources, so you can merge results in one sheet or CRM:

FAQ

Is this legal? Yes. BZP notices are official public procurement publications read through the platform's public API. Personal data is excluded unless you set includeBuyerContacts: true.