Polish Company Registry Scraper
Pricing
from $1.00 / 1,000 company records
Polish Company Registry Scraper
Checks Polish companies by NIP or KRS number: VAT white list status, the bank accounts they published and the KRS court register extract. Add an invoice account to see whether it is on the supplier's white list entry on the day of the check.
Pricing
from $1.00 / 1,000 company records
Rating
0.0
(0)
Developer
deriverge s.r.o.
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
5 days ago
Last modified
Categories
Share
Each row is one Polish company from two government sources: the Ministry of Finance VAT white list (VAT status, REGON and the bank accounts the company published) and the National Court Register, KRS (legal form, seat, dates and insolvency or liquidation entries), with an EU VIES check on top. Enter NIP or KRS numbers and click Start; add an invoice account to test it against the white list. Sole proprietors come back without name, address or accounts, and their invoice accounts are not checked. It costs $2.00 per 1,000 company records on the Free plan ($1.00 on Business), and the $5 of monthly credit in Apify's Free plan covers about 2,500 company records. Each extra source adds $0.001.
Output fields
| Field | Description |
|---|---|
input, reference | The NIP, KRS or VAT number as entered, and your own row ID. |
matched, entityType | Whether the entity was found, and whether it is a legal_entity or a natural_person running a sole proprietorship. |
nip, krs, regon | Tax number (NIP), court register number with leading zeros (0000028860) and statistical number (REGON). |
name, address | Name and business address from the white list, or name and seat from the KRS, such as ORLEN SPÓŁKA AKCYJNA. |
legalForm | Legal form from the KRS in Polish, such as SPÓŁKA AKCYJNA. |
vatStatus, vatActive | White list status as the Ministry writes it, such as Czynny (active VAT payer), and true when the status is Czynny. |
vatRegisteredOn, vatRemovedOn | Date of VAT registration and date of removal from the VAT register, YYYY-MM-DD. |
publishedAccounts | The 26-digit account numbers (NRB) the company has on the white list. |
accountOnWhiteList | Whether the invoice account you supplied is on the white list for this NIP on the day of the run; null when you supplied none. |
hasVirtualAccounts | true when the white list says the company uses virtual accounts. |
companyActive | false once the entity has been removed from the KRS; null when the KRS was not read. |
krsRegisteredOn, krsRemovedOn | KRS entry and removal dates as the court register writes them, such as 19.07.2001. |
krsProceedings | Entries in section 6 of the KRS extract that concern liquidation, bankruptcy, restructuring or suspension. |
vatValidVies | Whether EU VIES confirms the VAT number; null when VIES was not asked or gave no answer. |
whiteListRequestId | Request identifier the white list returned for the search that covered this NIP, such as Xyhj4-98l4ga1. |
riskFlags | Plain-English warnings, such as an invoice account missing from the white list, most serious first. |
provenance | One entry per source consulted, with the exact URL, the time and whether it answered. |
How to check Polish companies in bulk
- In Companies to check, enter a JSON list of NIP numbers (
"5260250995"), VAT numbers with the PL prefix or KRS numbers ("0000028860"). A number starting with000is read as a KRS number, and any other ten digits that pass the NIP checksum as a NIP. Ten digits that fail the checksum count as a KRS number when they start with 0 and as a mistyped NIP otherwise. - To test an invoice, write the item as an object:
{"nip": "7740001454", "bankAccount": "17103015080000000503131100", "reference": "supplier-42"}. Spaces and a PL prefix in the account number are ignored. - Keep Read the National Court Register (KRS) and Confirm VAT numbers in EU VIES on for the full check. With both off, a row entered by NIP holds only what the white list says.
- Click Start. The Output tab shows one row per entry; download it as CSV, Excel or JSON, or call the actor through the API with the same input:
{"companies": ["5260250995","0000028860",{ "nip": "7740001454", "bankAccount": "17103015080000000503131100", "reference": "supplier-42" }],"includeKrs": true,"includeVies": true}
Example output
One row from a run on 29 September 2026. That run paired ORLEN's NIP with an account belonging to another company, so accountOnWhiteList is false and the first risk flag says so. publishedAccounts is cut to the first 3 of the 236 accounts in the full row. Since 30 September 2026 that flag also names the ZAW-NR notice described below.
{"reference": null,"input": "7740001454","matched": true,"entityType": "legal_entity","nip": "7740001454","krs": "0000028860","regon": "610188201","name": "ORLEN SPÓŁKA AKCYJNA","legalForm": "SPÓŁKA AKCYJNA","address": "CHEMIKÓW 7, 09-411 PŁOCK","vatStatus": "Czynny","vatActive": true,"vatRegisteredOn": "1993-07-05","vatRemovedOn": null,"vatValidVies": true,"publishedAccounts": ["37124031741111000028899332","38103015080000000500101024","85102010260000100203550571"],"accountOnWhiteList": false,"hasVirtualAccounts": true,"companyActive": true,"krsRegisteredOn": "19.07.2001","krsRemovedOn": null,"krsProceedings": [],"whiteListRequestId": "Xyhj4-98l4ga1","riskFlags": ["THE INVOICE ACCOUNT IS NOT ON THE VAT WHITE LIST. Payments above 15,000 PLN to it are not tax-deductible and you become jointly liable for the VAT."],"provenance": [{"source": "VAT white list (Ministry of Finance)","sourceUrl": "https://wl-api.mf.gov.pl/api/search/nips/5260250995,7740001454?date=2026-09-29","fetchedAt": "2026-09-29T05:30:15.930Z","ok": true},{"source": "National Court Register (KRS)","sourceUrl": "https://api-krs.ms.gov.pl/api/krs/OdpisAktualny/0000028860?rejestr=P&format=json","fetchedAt": "2026-09-29T05:30:31.063Z","ok": true},{"source": "VAT white list account check","sourceUrl": "https://wl-api.mf.gov.pl/api/check/nip/7740001454/bank-account/17103015080000000503131100?date=2026-09-29","fetchedAt": "2026-09-29T05:30:32.477Z","ok": true},{"source": "EU VIES","sourceUrl": "https://ec.europa.eu/taxation_customs/vies/rest-api/ms/PL/vat/7740001454","fetchedAt": "2026-09-29T05:30:33.829Z","ok": true}],"checkedAt": "2026-09-29T05:30:31.063Z"}
How much does it cost to check Polish companies?
| Free plan | Starter | Scale | Business | |
|---|---|---|---|---|
| 1,000 company records | $2.00 | $1.60 | $1.30 | $1.00 |
| Extra source, per 1,000 | $1.00 | $0.80 | $0.65 | $0.50 |
| Run fee, once per run | $0.001 | $0.0008 | $0.00065 | $0.0005 |
You pay for the events in the table and nothing else: compute time and proxies are included.
The register that finds the company, usually the white list, is part of the company record. The KRS extract read on top of it, the VIES answer and the invoice account check each count as one extra source. Checking 1,000 companies with a KRS extract and a VIES answer costs $2.00 for the records plus $2.00 for the extra sources on the Free plan, or $1.00 plus $1.00 on Business. The run fee is billed only once per run, with the first company that the white list or the KRS confirms. A NIP that fails its checksum and a number that is in neither register cost nothing.
Limits
- For a sole proprietorship (a NIP on the white list with a home address and no KRS number) the name, address and accounts are withheld, and neither the account check nor VIES is run. The VAT status and dates are still returned.
- REGON numbers are not accepted as input. Use the NIP or the KRS number.
- KRS extracts come from the register of entrepreneurs (rejestr P). The KRS number of an association or foundation that is only in the other KRS register is reported as not found.
- The white list is always asked about the current day. Past dates cannot be checked.
- The white list takes up to 30 NIPs per search, so longer lists go out in several searches. The account check returns no request identifier of its own.
- KRS dates keep the court register's DD.MM.YYYY format, while white list dates are YYYY-MM-DD.
The white list and the PLN 15,000 rule
Since 2020, when a payment for a transaction worth more than PLN 15,000 goes to an account that is not on the supplier's white list entry, the buyer cannot count it as a tax-deductible cost and can be held jointly liable for the supplier's VAT, unless it files a ZAW-NR notice with the tax office within 7 days of ordering the transfer. The white list is the Ministry of Finance register of VAT taxpayers, and it shows the accounts each of them reported. The actor asks it about every NIP as of the day of the run. With bankAccount it also runs the Ministry's own account check for that NIP and moves a warning to the top of riskFlags when the account is not there.
Re-checking suppliers on a schedule
Put a name in Watch name, or save the input as a task, and schedule the run. Each run compares every row with the previous run of the same name and stores the differences in the CHANGES record of the run, for example an account that left publishedAccounts, a VAT status that is no longer Czynny or a new section 6 entry. This comparison is included in the price of the run.
FAQ
Is it legal to scrape the Polish VAT white list and KRS?
Both are public registers: the Ministry of Finance and the Ministry of Justice publish them through open APIs so that anyone can check a business partner. The actor reads only the parts of the KRS extract that describe the entity and never the sections that list board members, proxies or shareholders, and it withholds the name and address of sole proprietors. You are responsible for how you use the data.
What if I only have a KRS number?
Enter it as it is, such as 0000028860, or as an object like {"krs": "0000028860"}. The actor reads the KRS extract first, takes the NIP from it and then asks the white list and VIES, so the row comes out as complete as one that started from the NIP.
Which day does the white list answer for?
The day of the run, the same date as in checkedAt. A later run can give a different answer if the supplier has changed its accounts in the meantime.
Related scrapers
Support
This actor is built and maintained by deriverge s.r.o., a software company based in the Czech Republic. If a run fails or a field you need is missing, please open an issue in the Issues tab or write to us at info@deriverge.com. We respond in English and Czech. Runs can be scheduled in Apify Console or started from the API tab, which has examples for Python, JavaScript and cURL and works with Make, Zapier, n8n and the Apify MCP server. If the actor saves you time, a short review helps other people find it.