Poland Building Permits API: Construction Leads avatar

Poland Building Permits API: Construction Leads

Pricing

from $4.00 / 1,000 permit rows

Go to Apify Store
Poland Building Permits API: Construction Leads

Poland Building Permits API: Construction Leads

Get new Polish building permits (pozwolenia na budowę) issued to companies and public bodies from the official GUNB register: investor, authority, decision date, category and site in English. Construction leads by voivodeship, updated almost daily. No API key; JSON via API/MCP, $4 per 1,000 rows.

Pricing

from $4.00 / 1,000 permit rows

Rating

0.0

(0)

Developer

Japan Open Data

Japan Open Data

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

Get new Polish building permits (pozwolenia na budowę) issued to companies and public bodies — investor, authority, decision date, building category and site — from the official GUNB register. Pick a voivodeship (for example mazowieckie, Silesia or Warsaw) and get one clean English JSON row per permit decision, newest first.

Each row has the investor (company, cooperative, municipality, parish...), its legal form and a plain-English applicant type such as property developer or energy or utility, the issuing authority and decision number, the decision and filing dates, the building category of Polish building law (I–XXX) in English, the type of works, the project name, the site town, street and TERYT code, the building volume and the number of plots.

  • Official source, read fresh on every run: GUNB (Główny Urząd Nadzoru Budowlanego, Poland's General Office of Building Control) publishes its register of building-permit applications and decisions (Rejestr Wniosków, Decyzji i Zgłoszeń, RWDZ) as open data under CC0 1.0, one file per voivodeship, refreshed almost every day. About 2.8 million permits since 2016.
  • Construction leads, newest first: days (default 30) or dateFrom / dateTo select permits by decision date; the newest decisions come first.
  • Companies and public bodies only. Permits of private persons are never returned, civil partnerships (s.c.) and sole traders are left out, and names that read as a person's name are withheld; designers' names, plot numbers and the house numbers of sites are never output (see Privacy).
  • One required input: the voivodeship — Polish name, English name, capital city or TERYT code. Everything else has a default (last 30 days, 20 rows).
  • $4 per 1,000 permit rows, no subscription — about $1.80 for a month of company and public permits in Masovia (see pricing).
  • Built for pipelines and AI agents: flat camelCase fields, a status on every row, plain-English error rows that are free.

What can you do with Poland Building Permits API?

  • Building-materials makers and distributors, HVAC, solar, windows, lifts — list the developers, retailers and logistics firms that just got a permit in your region and contact them before the tender.
  • Subcontractors and construction firms — follow which developers, housing cooperatives and municipalities are building, where, and what (permitCategory, buildingCategories).
  • Commercial real estate, logistics and retail — new warehouses, factories, shops, offices and hotels (permitCategory: "commercial and industrial").
  • Energy and telecom — new networks, masts and wind-turbine structures, substations and PV plants (permitCategory: "infrastructure and energy", applicantTypes: ["energy or utility", "telecom"]).
  • Market research — the pipeline of company and public projects by voivodeship, month by month.
  • AI agents — answer "which companies got building permits in Masovia this month?" with one tool call and an official source.

How it compares

BazaPozwoleńBudowo.plThis Actor
DataGUNB registerGUNB register + tendersGUNB register (RWDZ), read from the official files on every run
LanguagePolishPolishEnglish labels and field names (names and project titles kept in Polish as published)
PricingFree search; PREMIUM (export, alerts) 79 zł/month99 zł/month (first 20 firms), then 149 zł/month$4 per 1,000 permit rows, no subscription
AccessWeb appWeb app, mapAPI, JSON, schedules, webhooks, Google Sheets, MCP
Rows returnedAll permitsAll permitsCompany and public-body investors only

Prices as published on bazapozwolen.pl and budowo.pl, checked on 2 October 2026. If you read Polish and only browse one region, BazaPozwoleń's free plan may be enough; this Actor is for English output, company and public-body investors only, and automated runs through the API, schedules or MCP.

How to use

  1. Click Try for free. The default input lists the 20 newest permits of companies and public bodies decided in the last 30 days in świętokrzyskie, in about 10-20 seconds.
  2. Put your Voivodeship (mazowieckie, Masovian, Warsaw or 14 all work).
  3. Optionally narrow it down: a town or TERYT code, a period, a permit category or exact building categories, applicant types, a minimum building volume.
  4. Raise Maximum rows to get every permit (świętokrzyskie: about 80 company and public permits a month; mazowieckie: about 450).

Run it every week

GUNB refreshes the voivodeship files almost every day (the sourceLastUpdated field shows when). Schedule this Actor weekly with {"voivodeship": "mazowieckie", "days": 7, "maxResults": 1000}, or connect a webhook, Google Sheets or your CRM.

Input

FieldTypeDefaultWhat it does
voivodeshiptext (required)"świętokrzyskie"One of the 16 voivodeships: Polish name ("mazowieckie", "slaskie"), English name ("Masovian", "Lesser Poland"), capital city ("Warsaw", "Kraków") or TERYT code ("14").
daysinteger30Permits decided in the last N days (1-366). Ignored when dateFrom is set.
dateFrom / dateTodateempty / todayA fixed period of decision dates, up to 366 days, from 2016-01-01.
communetextemptyA town as written in the register ("Kielce", "Warszawa") or a TERYT code: 7 digits for a commune (gmina), 4 for a county (powiat).
permitCategoryselectallhousing, commercial and industrial, public and social, infrastructure and energy, agricultural and small buildings, other.
buildingCategorieslist of textallExact categories I-XXX, e.g. ["XVII", "XVIII"]. Overrides permitCategory.
applicantTypeslist of textalle.g. ["property developer", "retailer"] (full list in the input form).
minVolumeM3integer0Minimum building volume (kubatura) in m³; permits without a volume are dropped when set.
maxResultsinteger20Maximum permit rows (charged). Newest decisions first.

Input examples

{ "voivodeship": "Masovian", "days": 7, "permitCategory": "commercial and industrial", "maxResults": 200 }
{ "voivodeship": "wielkopolskie", "dateFrom": "2026-01-01", "dateTo": "2026-06-30", "applicantTypes": ["property developer"], "buildingCategories": ["XIII"], "maxResults": 1000 }
{ "voivodeship": "Silesia", "commune": "Katowice", "days": 90, "maxResults": 100 }

Output

One row per permit decision (the register has one line per plot of land; they are merged by the GUNB number). Example (default input):

{
"status": "ok",
"permitNumber": "ST-SW-KW/WNIOSEK/5000/2026",
"authorityCaseNumber": "BI.6740.107.2026",
"decisionNumber": "104/2026",
"issuingAuthority": "Starosta Powiatu Kazimierza Wielka",
"issuingAuthorityAddress": "ul. T. Kościuszki 12, 28-500 Kazimierza Wielka",
"authorisationDate": "2026-09-25",
"filingDate": "2026-09-07",
"daysSinceDecision": 0,
"isAmendment": false,
"applicantName": "Gmina Skalbmierz",
"applicantType": "municipality or county",
"applicantLegalForm": "public body",
"projectNature": "new construction",
"buildingType": "other than a single-family house",
"buildingCategory": "XVIII",
"buildingCategoryLabel": "industrial and storage buildings (factories, warehouses, energy, railway buildings)",
"permitCategory": "commercial and industrial",
"projectName": "Budowa budynku magazynowego - magazynu ochrony ludności i obrony cywilnej",
"projectNameRedacted": false,
"cubicVolumeM3": 619,
"plotCount": 1,
"siteStreet": null,
"siteTown": "Skalbmierz",
"communeCode": "2603054",
"countyCode": "2603",
"voivodeshipCode": "26",
"voivodeship": "świętokrzyskie",
"region": "Holy Cross",
"sourceLastUpdated": "2026-09-25T21:35:31Z",
"sourceUrl": "https://dane.gov.pl/pl/dataset/3467",
"fetchedAt": "2026-09-25T23:11:44Z",
"attribution": "Source: GUNB (Główny Urząd Nadzoru Budowlanego), Rejestr Wniosków, Decyzji i Zgłoszeń (RWDZ), file updated 2026-09-25, via dane.gov.pl, CC0 1.0. Translated and reformatted; not affiliated with or endorsed by GUNB. Companies and public bodies only."
}

When nothing matches, or the input is wrong, you get one free row with status: "not_found" or "error" and an error sentence saying what to change.

Output fields

FieldMeaning
permitNumberGUNB register number of the application (unique key)
authorityCaseNumber, decisionNumberThe authority's case file number and decision number
issuingAuthority, issuingAuthorityAddressThe office that issued the decision (starosta, city president, voivode)
authorisationDate, filingDateDecision date and application date (YYYY-MM-DD)
daysSinceDecisionDays between the decision and the run
isAmendmentThe project name says it amends, transfers or revokes an earlier decision
applicantNameThe investor (company or public body), as written in the register
applicantTypePlain-English type: municipality or county, state body or agency, religious organisation, school or university, health or social care, housing cooperative or community, property developer, energy or utility, telecom, retailer, forestry or agriculture, non-profit, other company (from the name)
applicantLegalFormLegal form read from the name: sp. z o.o., S.A., sp.k., sp.j., sp.p., S.K.A., cooperative, foundation, association, foreign company, public body
projectNaturenew construction, extension, vertical extension, reconstruction, demolition, other works
buildingTypesingle-family house, or other than a single-family house
buildingCategory, buildingCategoryLabel, permitCategoryCategory I-XXX of Polish building law, its English label and its group
projectName, projectNameRedactedThe project title in Polish, with plot and house numbers removed; null and true when it looked like it named a person
cubicVolumeM3, plotCountBuilding volume when declared (about a third of permits); number of plots covered
siteStreet, siteTown, communeCode, countyCodeStreet (no house number), town and TERYT codes of the site
voivodeshipCode, voivodeship, regionTERYT code, Polish and English name
sourceLastUpdated, sourceUrl, fetchedAt, attributionWhen GUNB last updated the file, the dataset page, when the row was produced, and the credit line
status, errorok, not_found or error, and the reason with the fix

Each run also saves a RUN_SUMMARY record in its key-value store: permits in the period, how many belonged to private persons (not returned), how many were withheld by the name check and why, how many matched your filters and how many rows were returned.

How much does it cost?

Pay per event, with two charges and no subscription:

EventPriceWhen it is charged
Permit row (result-row)$0.004 per row ($4.00 per 1,000)Each row with status: "ok"
Run start (apify-actor-start)$0.002 per runOnce per run, including runs that return only a not_found or error row

not_found and error rows themselves are free, but the $0.002 run start is charged on every run, so a run with a typo in the input costs $0.002.

UseRowsCost
Default run (20 newest company permits in świętokrzyskie, last 30 days)20$0.082
Every company and public permit in one voivodeship for a month, run monthly (świętokrzyskie about 80, mazowieckie about 450)80-450about $0.32-$1.80 a month
Every company and public permit in mazowieckie for 12 months (one-off market overview)about 5,700about $23
Every company and public permit in Poland for a month (16 runs, one per voivodeship)about 3,000-4,000about $12-$16 a month
Input error or no matching permit0 (one free row)$0.002

On the Store this is shown as $4.00 / 1,000 permit rows.

For comparison, per month (Polish services built on the same GUNB register, prices checked on 2 October 2026; 1 zł ≈ $0.27):

Coverage, every monthBazaPozwoleńBudowo.plThis Actor
One voivodeshipFree to browse; 79 zł (about $21) with export and alerts99-149 zł (about $27-$40), all of Polandabout $0.32-$1.80
All of Poland79 zł (about $21)99-149 zł (about $27-$40)about $12-$16

Set Maximum cost per run in the run options to cap any run; the Actor stops when the cap is reached.

Use via API & MCP (AI agents)

REST API (synchronous, returns the rows):

curl -X POST "https://api.apify.com/v2/acts/japan-open-data~poland-building-permits/run-sync-get-dataset-items?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"voivodeship": "mazowieckie", "days": 7, "maxResults": 50}'

Python:

from apify_client import ApifyClient
client = ApifyClient("YOUR_TOKEN")
run = client.actor("japan-open-data/poland-building-permits").call(
run_input={"voivodeship": "Silesia", "permitCategory": "commercial and industrial", "maxResults": 100})
for row in client.dataset(run["defaultDatasetId"]).iterate_items():
if row["status"] == "ok":
print(row["authorisationDate"], row["applicantName"], row["siteTown"], row["buildingCategoryLabel"])

MCP: add the Apify MCP server (https://mcp.apify.com) to Claude, Cursor or any MCP client and enable the tool japan-open-data/poland-building-permits.

Recommended settings for agents:

  • To answer "which companies got building permits in
  • For all of Poland, run once per voivodeship (16 runs).
  • A city name such as "Warsaw" selects its voivodeship; add commune ("Warszawa") to keep only that town.
  • A permit is an authorisation, not a start of works. The bulk file does not state the outcome of each decision; isAmendment flags amendments and transfers.
  • Quote the source as in attribution ("GUNB, RWDZ", with sourceLastUpdated) and say that only company and public-body investors are included.

Summary for AI assistants: This tool lists Polish building-permit decisions whose investor is a company or public body in one voivodeship and period, from the official GUNB register (RWDZ, CC0), one flat English JSON row per permit with investor, legal form, applicant type, authority, decision date, building category I-XXX in English, type of works, project name, site town and TERYT code. Permits of private persons are excluded.

Privacy: companies and public bodies only

In the GUNB register the investor name is empty when the investor is a private person, but the site would still point to a home, so those permits are never returned. On top of that, this Actor:

  • returns a named investor only when the name itself shows a company or a public body (an allow-list): a legal form (sp. z o.o., S.A., sp.k., sp.j., sp.p., S.K.A., spółdzielnia, fundacja, stowarzyszenie, a foreign company form) or a public body (gmina, powiat, miasto, Skarb Państwa, a parish, a university, Lasy Państwowe, a housing community...). Sole traders (who carry no legal form) and civil partnerships (s.c., contracts between private persons named after them) are left out;
  • withholds names that read as a private person's name even with a legal form: a first name next to a surname in any grammatical case (Polish PESEL first-name and surname lists, CC0, so "Fundacja Anny Nowak" is withheld too), a surname followed by a first name, a representative named after reprezentowana przez / działający przez, initials followed by a surname, titles (dr, mgr, ks.), words such as pan, pani, właściciel, prowadzący działalność or reprezentant, and 11-digit numbers. For general, limited and professional partnerships (sp.j., sp.k., sp.p.), whose names must contain a partner's name, any first name withholds the row; a partner's surname alone can remain (for example "Kowalski i Wspólnicy sp.j."). Patron and street names ("im. Jana Pawła II", "pw. św. Józefa", "ul. Adama Mickiewicza") are kept. Across every permit in the 16 voivodeship files (2,849,175 permits, files of 30 September 2026), 779,627 have an investor name; about 608,000 pass, including a check that withholds some genuine companies named after their founder, on the safe side;
  • never outputs the designer's name and licence number, plot (działka) numbers or the house number of the site; plot and house numbers are also removed from project names, and a project name that looks like it names a person is replaced by null (projectNameRedacted: true). The investor name is kept as registered, so a housing community (wspólnota mieszkaniowa) named after its building can include that building's address.

Before release, every row this Actor could return was rebuilt from all 16 voivodeship files (every permit since 2016) and scanned with a broader, independent person-name detector; every hit outside patron, saint and street names was checked by hand (see tests/audit_output.py). The check still works from names, so a company name that contains a person's name in an unusual form could pass; report one on the Issues tab and it will be fixed.

FAQ

Can I get all of Poland?

Yes, one voivodeship per run: schedule 16 runs (or loop over the TERYT codes 02-32 through the API).

Can I use it to find construction leads in Poland?

Yes. Filter by permitCategory, buildingCategories or applicantTypes and schedule a weekly run with days: 7: each row names the company or public body behind a new project, the authority, the site town and the building category, before works start.

How fresh is the data?

GUNB refreshes the voivodeship files almost every day (sourceLastUpdated). Decisions reach the register when the authority records them, which can be days or weeks after the decision date, so a run for the last 7 days may miss decisions recorded later; overlapping periods catch them.

Does a permit mean the building will be built?

No. It is an authorisation; projects can start late, change or be abandoned. The bulk file does not say whether each decision granted or refused the permit.

Why is a permit I know missing?

The investor may be a private person, a sole trader or a civil partnership, the name may have been withheld by the name check, or the authority may not have recorded it yet. Construction notifications (zgłoszenia) are a different register and are not included.

Is this an official GUNB service?

No. It re-publishes GUNB open data (CC0 1.0), translated and reformatted. It is not affiliated with, or endorsed by, GUNB.

Troubleshooting

SymptomFix
error: not a Polish voivodeshipUse one of the 16 names or a TERYT code; run once per voivodeship
error: period too longUse at most 366 days per run
not_found with a communeCheck the spelling as written in the register, or use the 7-digit TERYT code
Few rowsRaise days, or remove applicantTypes / minVolumeM3
An error row about the GUNB fileThe GUNB server was busy or down; run again in a few minutes (the row is free)

Known limitations

  • One voivodeship per run and at most 366 days of decisions per run.
  • Company and public-body investors only (about a fifth of all permit decisions; most permits are for single houses of private persons).
  • No company number (KRS / NIP / REGON) in the register, so rows cannot be joined to company registers by ID; applicantType and applicantLegalForm are read from the name.
  • Investor names, project names and streets are kept in Polish as written by the authority, including typos and inconsistent spelling of the same company.
  • Building volume is declared for about a third of permits; the site street is empty for many rural sites.
  • The bulk file does not state whether a decision granted or refused the permit.

Data source and licence

Główny Urząd Nadzoru Budowlanego (GUNB), Rejestr Wniosków, Decyzji i Zgłoszeń (RWDZ) — "Wnioski i decyzje w sprawach budowlanych", one file per voivodeship, listed on dane.gov.pl (dataset 3467, https://dane.gov.pl/pl/dataset/3467) under CC0 1.0. Files downloaded from https://wyszukiwarka.gunb.gov.pl/pliki_pobranie/ (the CAPTCHA-protected search screen is not used). First-name and surname lists for the privacy check: Ministry of Digital Affairs, PESEL register statistics on dane.gov.pl (datasets 1501 and 1681, CC0 1.0). This Actor is not affiliated with GUNB.

More from Japan Open Data

Feedback

Found a wrong row, a label that reads oddly, a company withheld that should not be, or a name that should have been withheld? Open an issue on the Issues tab — it will be read.