# Poland Tax Office Auctions Scraper - eLicytacje KAS (`regdata/poland-elicytacje-auction-scraper`) Actor

Every sale Polish tax offices publish on eLicytacje KAS: cars, flats, houses, land, machinery and company shares with the starting price, the valuation and the discount between them, the deposit, the location, VIN and land-registry number, and sold prices.

- **URL**: https://apify.com/regdata/poland-elicytacje-auction-scraper.md
- **Developed by:** [getregdata](https://apify.com/regdata) (community)
- **Categories:**
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.50 / 1,000 sale announcements

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Poland Tax Office Auctions Scraper - eLicytacje KAS

Every sale Polish tax offices publish on **eLicytacje KAS**, the Ministry of Finance portal, as
structured JSON: cars, vans, machinery, electronics, goods, flats, houses, land, commercial units
and property rights. For each one you get the **starting price**, the **valuation** and the
discount between them, the **status and final price**, the deposit, the item's address, the tax
office and its contact, **vehicle data with VIN and mileage**, the **land-registry (KW) number**
for real estate, photos and the notice PDFs.

Since 1 July 2026 eLicytacje KAS is the only place Polish tax offices publish their enforcement and
liquidation sales - it replaced the separate regional pages. One actor now covers the whole country.

No account, no API key, nothing to configure.

***

### What do I get for one sale?

| | |
|---|---|
| **Identity** | Announcement ID and number, public URL, title |
| **The sale** | Section, category and subcategory, sale type (auction, fixed-price sale, tender, valuation notice), online or at the office, auction round |
| **Status** | Upcoming, live, sold, unsold, cancelled - with the **final price** on sold items and the highest bid on live auctions |
| **Money** | Starting price, valuation, **derived discount %**, VAT rate, deposit amount, due date, bank account and transfer title |
| **Timing** | Publication, sale start and sale end |
| **Where** | Voivodeship, city, street, postcode |
| **Who sells** | Tax office and its address, the officer named for the sale, phone, the office's mailbox |
| **Vehicles** | Make, model, year, **VIN**, registration, **mileage**, fuel, engine, gearbox, body, colour, condition |
| **Real estate** | **Land-registry (KW) numbers**, land-registry court, plots, land area, usable area, rooms, floor, ownership |
| **Everything else** | Every item parameter the portal lists, verbatim, plus photos and the notice PDFs |

A passenger car on a fixed-price sale (officer contact omitted here):

```json
{
  "announcementNo": "3967.26",
  "url": "https://elicytacje.mf.gov.pl/auction/announcements/b2fed7c6-297b-4fac-84a1-32aad6dee8a4",
  "title": "Opel Astra GTC 2009 1.6B 115KM",
  "section": "movables",
  "category": "vehicles",
  "subcategoryName": "Osobowe",
  "saleKind": "freeHandSale",
  "isElectronic": true,
  "status": "upcoming",
  "proceedingType": "liquidation",
  "startingPrice": 2500,
  "estimatedValue": 9900,
  "discountPct": 74.7,
  "saleStartAt": "2026-09-18T08:00:00Z",
  "saleEndAt": "2026-10-19T08:00:00Z",
  "voivodeship": "lubelskie",
  "city": "Lublin",
  "authorityName": "Pierwszy Urząd Skarbowy w Lublinie",
  "make": "Opel",
  "model": "Astra",
  "productionYear": 2009,
  "vin": "W0L0AHL0885098049",
  "mileageKm": 228754,
  "fuelType": "benzyna",
  "engineCapacityCm3": 1598,
  "gearbox": "manualna",
  "photoUrls": ["https://elicytacje.mf.gov.pl/auction/api/v1/items/pictures/02b0eaaa-.../thumbnail", "..."],
  "documents": [{ "filename": "3967.26.Ogłoszenie_o_elektronicznej_sprzedaży_z_wolnej_ręki.pdf", "url": "https://elicytacje.mf.gov.pl/..." }],
  "detailFetched": true
}
```

A plot of land at its first auction:

```json
{
  "title": "Nieruchomość gruntowa położona w miejscowości Wojsławice, gm. Wojsławice",
  "category": "land",
  "saleKind": "auction",
  "status": "upcoming",
  "round": 1,
  "startingPrice": 60225,
  "estimatedValue": 80300,
  "discountPct": 25,
  "depositAmount": 8030,
  "depositDueDate": "2026-12-07",
  "saleStartAt": "2026-12-09T09:00:00Z",
  "voivodeship": "lubelskie",
  "city": "Wojsławice",
  "landRegistryNumbers": ["ZA1K/00042475/0"],
  "plots": "2250 o pow. 0,9082 ha",
  "authorityName": "Urząd Skarbowy w Chełmie"
}
```

### What is on the portal?

A full sweep on 13 September 2026 returned **1,951 announcements from 308 tax offices in all 16
voivodeships**, with starting prices adding up to about 118.7 million PLN:

| | |
|---|---|
| Vehicles | 1,163 - 918 of them passenger cars |
| Land, houses, flats, commercial units, garages | 361 |
| Machinery, electronics, clothing, jewellery and other goods | 425 |
| Property rights | 2 |

By type: 1,513 auctions, 266 fixed-price (free-hand) sales, 169 real-estate valuation notices and 3
tenders. 837 announcements were published in August and more than 1,000 in the first eleven days of
September, so the volume is still climbing as offices move onto the portal.

### What is `discountPct` and why sort on it?

Tax offices publish a **valuation** and a **starting price**. A first auction usually opens at
three quarters of the valuation - the median discount in the sweep was exactly 25% - and a second
auction or a fixed-price sale often opens far lower. One row in ten sat at 73.6% or more below its
valuation.

`discountPct = (valuation - starting price) / valuation`, computed for you. If a starting price
ever exceeds the valuation, the row comes through with a negative discount and `priceAnomaly: true`
rather than being clamped.

### How do I get cars in one region?

```json
{
  "categories": ["vehicles"],
  "locations": ["mazowieckie"],
  "maxStartingPrice": 20000,
  "includeDetails": true
}
```

`locations` takes a city or a voivodeship exactly as the portal writes them - `Warszawa`,
`Kraków`, `mazowieckie`, `śląskie` - and several at once are merged without duplicates. Turn on
**Include full details** for make, model, VIN and mileage: every one of the 918 passenger cars in the
sweep carried a VIN and a mileage reading.

### Can I see what things actually sold for?

Yes. Set `statuses` to `["sold"]` and every sold item comes with its `finalPrice` next to the
starting price and the valuation. The portal keeps finished sales, so this is a realised-price
history for Polish tax auctions from 1 July 2026 onwards - 178 sold items carried a final price in
the September sweep, and the history grows with every sale. `unsold` gives you the lots that found no
buyer, which usually come back at a lower price.

### How do I get a daily alert feed?

Turn on **Only new or changed since the last run** and schedule the actor daily. The first run
exports everything that matches and sets the baseline; after that each run exports only what is new
or whose status changed - an upcoming auction that went live, a live one that sold. Every exported
row says which in `change`. Runs with the same filter share their memory automatically; give a
**Monitor name** to keep several independent feeds.

### What about real estate?

Every real-estate announcement is exported with its valuation, starting price, deposit and address,
and the **land-registry (KW) numbers** are pulled out of the portal's text into `landRegistryNumbers`

- 342 of 361 real-estate announcements carried at least one. Feed them straight into the
  [EKW land-registry actor](https://apify.com/regdata/ekw-ksiegi-wieczyste-scraper) to see the
  ownership, mortgages and restrictions of the property before you bid.

Set `saleKinds` to `["valuationNotice"]` for the earliest signal of all: the notice a tax office
publishes when it values a property, which comes **before** the auction is announced.

### Will every sale be in my results?

Every search is checked against the portal's own count of matching announcements. A complete run
says **"Reconciled against the portal's own count of N"**; a run that could not account for every
announcement says **"Partial:"** with the exact shortfall instead of looking clean. The September
full sweep reconciled at 1,951 of 1,951, details included.

Hitting `maxResults` is stated in the status message, and so is anything your own sale-type or date
filter excluded, so a short result is never mistaken for a quiet portal.

### How much does it cost?

Pay per announcement exported. Nothing else is charged.

- **Full details cost the same.** Include full details only makes the run take longer - a
  nationwide sweep with details takes about eight minutes, without details a few seconds.
- **Failed retrievals are not billed.** A row is only exported once the portal has returned it.
- **Duplicates are not billed.** An announcement matched by two of your locations or categories is
  exported, and charged, once.
- **An empty result costs nothing** beyond the run start.

### What personal data does it export?

Only what the portal's own announcement page shows about a sale: the tax office, the officer named
for it, the phone number and the office's shared mailbox - public officials acting in their official
capacity. It does **not** export anything identifying the owner or debtor of the goods being sold.

### Is this legal?

eLicytacje KAS is the official portal on which Polish tax offices publish their sales under the
Act on Administrative Enforcement Proceedings, so that the public can find and bid on them. Its
terms of use state that access is free and that browsing requires no login. This actor reads only
the public announcements - it does not log in, bid or join a sale, and it cannot.

You remain responsible for what you do with the data downstream, so use it for legitimate purposes.

### How do I use it from code?

```bash
apify call YOUR_USERNAME/poland-elicytacje-auction-scraper \
  --input '{"categories":["vehicles"],"locations":["Warszawa"],"includeDetails":true,"maxResults":200}'
```

```javascript
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('YOUR_USERNAME/poland-elicytacje-auction-scraper').call({
    sections: ['realEstate'],
    includeDetails: true,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
const bargains = items.filter((i) => i.discountPct >= 30);
console.log(bargains.map((i) => [i.title, i.startingPrice, i.estimatedValue, i.landRegistryNumbers, i.url]));
```

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("YOUR_USERNAME/poland-elicytacje-auction-scraper").call(
    run_input={"statuses": ["sold"], "categories": ["vehicles"], "includeDetails": True}
)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item["make"], item["model"], item["productionYear"], item["startingPrice"], item["finalPrice"])
```

Works with **n8n**, **Make**, **Zapier** and any HTTP client through the standard Apify API, and
with AI agents over MCP.

### Input reference

| Field | Type | Default | Description |
|---|---|---|---|
| `sections` | array | all | `movables`, `realEstate`, `propertyRights` |
| `categories` | array | all | e.g. `vehicles`, `machinery`, `electronics`, `flats`, `houses`, `land`, `commercial`, `llcShares` - 25 in total, listed in the input form |
| `keywords` | string | - | Search in titles, e.g. `Toyota`, `ciągnik`, `działka budowlana` (at least 3 characters) |
| `locations` | array | whole country | City or voivodeship, e.g. `Warszawa`, `lubelskie` |
| `statuses` | array | `["upcoming","live"]` | `upcoming`, `live`, `sold`, `unsold`, `cancelled`, `closed`, `voided` |
| `saleKinds` | array | all | `auction`, `freeHandSale`, `tender`, `valuationNotice` |
| `minStartingPrice` / `maxStartingPrice` | integer | - | Starting price bounds in PLN |
| `minEstimatedValue` / `maxEstimatedValue` | integer | - | Valuation bounds in PLN |
| `onlyWithDeposit` | boolean | `false` | Only sales that require a deposit |
| `publishedFrom` | string | - | Only announcements published on or after `YYYY-MM-DD` |
| `maxResults` | integer | 1000 | Maximum announcements to export, newest first |
| `includeDetails` | boolean | `false` | Valuation, deposit, address, office contact, vehicle and real-estate data, photos, PDFs |
| `onlyNewOrChanged` | boolean | `false` | Monitoring mode - only new or changed since the last run |
| `monitorId` | string | - | Name for an independent monitoring feed |

### In what language is the data?

Polish, as the portal holds it - titles, descriptions, category names, parameter values. That is the
authoritative form, so it is returned rather than a guess at a translation. Field names, keys such
as `section`, `saleKind` and `status`, and the status messages are English.

### Limitations

- **History starts on 1 July 2026**, when the portal opened. Sales published before that on the old
  regional pages are not on it, and not here.
- **Sales held at the tax office** (rather than online) carry the same announcement data, but no live
  bids - `isElectronic: false` marks them.
- **Land area and plots are free text** as the office typed them; `usableAreaM2` is filled only when
  the portal holds a plain number.
- **Valuation notices have no price yet** - the valuation is what they announce.

### Related actors

Part of a suite of official government registry actors - **no public API to build or maintain**, pay per result, nothing to configure.

| Country | Actors |
|---|---|
| Poland | **eLicytacje KAS (this actor)** · [BDO](https://apify.com/regdata/bdo-waste-registry-scraper) · [CRBR](https://apify.com/regdata/crbr-beneficial-owners-scraper) · [KRS (financials)](https://apify.com/regdata/poland-krs-financial-scraper) · [EKW](https://apify.com/regdata/ekw-ksiegi-wieczyste-scraper) · [KNF](https://apify.com/regdata/knf-registry-scraper) · [KRS (board)](https://apify.com/regdata/krs-fullnames-scraper) · [KRZ](https://apify.com/regdata/krz-debtor-scraper) · [MSiG](https://apify.com/regdata/msig-scraper) · [KYB check](https://apify.com/regdata/poland-kyb-check) · [PEP (Sejm)](https://apify.com/regdata/poland-parliamentary-pep-scraper) · [REGON (sites)](https://apify.com/regdata/polish-premises-prospector) · [REGON](https://apify.com/regdata/polish-regon-scraper) · [UOKiK](https://apify.com/regdata/uokik-clauses-scraper) |
| Germany | [Insolvenzbekanntmachungen](https://apify.com/regdata/germany-insolvency-scraper) · [Handelsregister](https://apify.com/regdata/germany-handelsregister-scraper) |
| Spain | [BORME](https://apify.com/regdata/borme-corporate-acts-scraper) · [Registro Mercantil](https://apify.com/regdata/spain-company-directory-scraper) · [Registro Público Concursal](https://apify.com/regdata/spain-concursal-scraper) |
| Italy | [INI-PEC](https://apify.com/regdata/italy-pec-lookup) · [Registro Imprese](https://apify.com/regdata/italy-registro-imprese-scraper) |
| Austria | [Ediktsdatei](https://apify.com/regdata/austria-ediktsdatei-scraper) · [WKO](https://apify.com/regdata/wko-business-directory-scraper) |
| France | [Societe.com](https://apify.com/regdata/societe-com-scraper) |
| Belgium | [KBO / BCE](https://apify.com/regdata/belgium-kbo-company-scraper) |
| Czechia | [ISIR](https://apify.com/regdata/czech-isir-insolvency-scraper) · [Portál dražeb](https://apify.com/regdata/czech-drazby-auction-scraper) |
| Slovakia | [RPVS](https://apify.com/regdata/slovakia-rpvs-ubo-scraper) |
| Cyprus | [DRCOR](https://apify.com/regdata/cyprus-drcor-company-scraper) |
| Ireland | [CRO](https://apify.com/regdata/ireland-cro-company-scraper) |
| Portugal | [Publicações MJ](https://apify.com/regdata/portugal-corporate-acts-scraper) |
| Nigeria | [CAC](https://apify.com/regdata/nigeria-cac-company-scraper) |
| Colombia | [RUES](https://apify.com/regdata/colombia-rues-company-scraper) |
| USA | [California SoS](https://apify.com/regdata/california-sos-business-scraper) · [California UCC](https://apify.com/regdata/california-ucc-lien-scraper) |
| UAE | [ADGM](https://apify.com/regdata/uae-adgm-public-register-scraper) |
| Global | [Adverse media](https://apify.com/regdata/adverse-media-screener) |

**Natural pairing:** this actor finds the property and its KW number;
[EKW](https://apify.com/regdata/ekw-ksiegi-wieczyste-scraper) tells you who owns it and what
encumbers it. Across the border, [Portál dražeb](https://apify.com/regdata/czech-drazby-auction-scraper)
does the same job for Czech executor auctions.

***

**Data source:** [eLicytacje KAS](https://elicytacje.mf.gov.pl/auction/) - the Ministry of Finance
portal of sales conducted by Polish tax offices. This actor is not affiliated with or endorsed by
the Ministry of Finance or the National Revenue Administration (KAS).

> Full suite: [apify.com/regdata](https://apify.com/regdata) · Callable from any MCP client via [mcp.apify.com](https://mcp.apify.com)

# Actor input Schema

## `sections` (type: `array`):

Movables (vehicles, machinery, goods), real estate, or property rights (company shares, receivables, securities). Leave empty for all three.

## `categories` (type: `array`):

Narrow to these categories. Each category belongs to one section, so there is no need to pick the section as well. Leave empty for everything in the chosen sections.

## `keywords` (type: `string`):

Search the announcement titles, e.g. 'Toyota', 'ciągnik', 'działka budowlana'. At least 3 letters or digits; other characters are treated as spaces.

## `locations` (type: `array`):

City or voivodeship as the portal writes it, e.g. 'Warszawa', 'Kraków', 'mazowieckie', 'lubelskie'. Each entry is searched separately and the results merged. Leave empty for the whole country.

## `statuses` (type: `array`):

Which sales to include. 'Upcoming' and 'Live' are the ones you can still bid on. 'Sold' carries the final price, which makes it the realised-price history the portal has kept since it opened on 1 July 2026.

## `saleKinds` (type: `array`):

Auctions, free-hand sales at a fixed price, tenders, or real-estate valuation notices - the notice a tax office publishes before a property auction, so the earliest signal that one is coming. Leave empty for all.

## `minStartingPrice` (type: `integer`):

Lowest starting price (cena wywołania) to include. Applied by the portal itself.

## `maxStartingPrice` (type: `integer`):

Highest starting price to include. Applied by the portal itself.

## `maxResults` (type: `integer`):

Maximum announcements to export. An announcement matched by more than one location or category is exported once, so you are never charged twice for it.

## `includeDetails` (type: `boolean`):

Adds the valuation and the discount to it, the deposit and its bank account, the item's address, the category, the tax office and its contact, the item description, vehicle data (make, model, year, VIN, registration, mileage), the land-registry (KW) number and plot data for real estate, photos and the notice PDFs. Two extra requests per announcement, so a run takes longer; the price per record is the same.

## `onlyNewOrChanged` (type: `boolean`):

Monitoring mode. Exports only announcements that are new, or whose status changed (for example upcoming to sold), since the last run with the same filter. The first run exports everything and sets the baseline. Schedule it daily for an alert feed.

## `monitorId` (type: `string`):

Optional. Runs with the same filter share one memory automatically; give a name to keep several independent feeds for the same filter. Letters, digits, '-' and '\_'.

## `minEstimatedValue` (type: `integer`):

Lowest valuation (wartość szacunkowa) to include. Applied by the portal itself.

## `maxEstimatedValue` (type: `integer`):

Highest valuation to include. Applied by the portal itself.

## `onlyWithDeposit` (type: `boolean`):

Keep only sales that require a deposit (wadium) before bidding - mostly real estate and higher-value lots.

## `publishedFrom` (type: `string`):

Keep only announcements published on or after this date, YYYY-MM-DD.

## Actor input object example

```json
{
  "statuses": [
    "upcoming",
    "live"
  ],
  "maxResults": 100,
  "includeDetails": false,
  "onlyNewOrChanged": false,
  "onlyWithDeposit": false
}
```

# Actor output Schema

## `announcements` (type: `string`):

Tax office sale announcements with prices, location and identifiers in the default dataset.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "statuses": [
        "upcoming",
        "live"
    ],
    "maxResults": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("regdata/poland-elicytacje-auction-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "statuses": [
        "upcoming",
        "live",
    ],
    "maxResults": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("regdata/poland-elicytacje-auction-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "statuses": [
    "upcoming",
    "live"
  ],
  "maxResults": 100
}' |
apify call regdata/poland-elicytacje-auction-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,regdata/poland-elicytacje-auction-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/15LElbOCQQI1WdSBE/builds/OB81fIaGv7nmNi75k/openapi.json
