# Adresowo.pl Scraper - Polish Real Estate Listings (`studio-amba/adresowo-pl-scraper`) Actor

Scrape real estate listings from Adresowo.pl, Poland's commission-free property portal. Extract prices, areas, rooms, floors, year built, GPS coordinates and images for apartments, houses, land and commercial properties. Sale and rental listings, direct-from-owner and agency. No login needed.

- **URL**: https://apify.com/studio-amba/adresowo-pl-scraper.md
- **Developed by:** [Studio Amba](https://apify.com/studio-amba) (community)
- **Categories:** Real estate
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.20 / 1,000 result scrapeds

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

## Adresowo.pl Scraper

Extract real estate listings from [Adresowo.pl](https://adresowo.pl), a Polish property portal built around commission-free (bez pośredników) listings. Unlike a pure FSBO board, Adresowo's inventory is mixed — direct-from-owner listings sit alongside agency listings in the same search results, tagged per listing. This actor scrapes apartments, houses, land and commercial properties, for sale and for rent, across every Polish voivodeship.

### Why use this actor?

Adresowo.pl fills a gap the big three Polish portals (Otodom, Morizon, Nieruchomosci-online) don't fully cover: a large base of listings posted directly by owners trying to avoid agency commission, mixed with agency listings for comparison. That makes it useful for finding below-market or negotiable deals, tracking commission-free supply by city, and cross-checking a property against agency-only portals.

This actor collects structured property data at scale — price, price per m², area, room count, floor, elevator, year built, seller type (owner vs agency), GPS coordinates and full photo galleries — without manual browsing, cookies, or a login.

Use cases include property market analysis, investment research, commission-free deal sourcing, relocation planning, price monitoring across Polish cities, and competitor analysis for real estate agencies tracking private-seller supply.

### How to scrape Adresowo data

1. Go to the actor's page on the Apify Store
2. Select a property type (apartments, houses, land, commercial, rooms for rent)
3. Choose listing type: sale or rent (rooms are rent-only)
4. Pick a voivodeship (region), or enter a specific city, or leave both empty for all of Poland
5. Set `maxResults` for the number of listings to collect
6. Click "Start" to run the scraper
7. Download results as JSON, CSV, or Excel when complete

The actor is a plain HTTP crawler (Cheerio, no browser) — Adresowo.pl serves every listing fully rendered in the initial HTML response, including the schema.org JSON-LD blocks and the price/area/rooms/floor info bar, so no JavaScript execution is needed. That makes runs fast and cheap.

### Input

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `propertyType` | String | No | `mieszkania` (apartments, default), `domy` (houses), `dzialki` (land), `nieruchomosci-komercyjne` (commercial), `pokoje-wynajem` (rooms, rent only) |
| `listingType` | String | No | `sale` (default) or `rent`. Ignored for `pokoje-wynajem`, which is rent-only. |
| `region` | String | No | Polish voivodeship code, e.g. `fmz` (Mazowieckie / Warsaw region, default). Leave empty for all of Poland. |
| `city` | String | No | Narrow to one city, e.g. `warszawa`, `krakow`. Overrides `region` when set. |
| `maxResults` | Integer | No | Maximum listings to return (default: 50) |
| `proxyConfiguration` | Object | No | Proxy settings. Automatic Apify proxy by default — recon found no active anti-bot protection on Adresowo.pl. |

### Output

Each listing contains:

| Field | Type | Example |
|-------|------|---------|
| `listingTitle` | String | `"Mieszkanie Warszawa, ul. Bartycka, bez pośrednika - 35 m² - 665 000 zł"` |
| `price` | Number | `665000` |
| `currency` | String | `"PLN"` |
| `pricePerSqm` | Number | `18881.32` |
| `url` | String | Full Adresowo.pl listing URL |
| `scrapedAt` | String | ISO 8601 timestamp |
| `listingType` | String | `"sale"` |
| `propertyType` | String | `"mieszkania"` |
| `sellerType` | String | `"owner"` (bez pośredników) or `"agency"` (przez agenta), null if not stated |
| `city` | String | `"Warszawa"` |
| `district` | String | `"Siekierki"` |
| `street` | String | `"ul. Bartycka"` |
| `voivodeship` | String | `"mazowieckie"` |
| `latitude` / `longitude` | Number | `52.212539` / `21.062677` |
| `rooms` | Number | `1` |
| `surface` | Number | `35.22` |
| `floor` | String | `"1 piętro"` or `"parter"` (ground floor) |
| `hasElevator` | Boolean | `true` |
| `buildYear` | Number | `2004` |
| `description` | String | Full listing description text |
| `imageUrl` | String | Primary listing photo URL (largest available size) |
| `imageUrls` | Array | All listing photo URLs |

### Example output

```json
{
    "listingTitle": "Mieszkanie Warszawa, ul. Bartycka, bez pośrednika - 35 m² - 665 000 zł",
    "price": 665000,
    "currency": "PLN",
    "pricePerSqm": 18881.32,
    "url": "https://adresowo.pl/o/mieszkanie-warszawa-siekierki-ul-bartycka-1-pokoj-f2t3l2",
    "scrapedAt": "2026-08-28T19:42:42.589Z",
    "listingType": "sale",
    "propertyType": "mieszkania",
    "sellerType": "owner",
    "city": "Warszawa",
    "district": "Siekierki",
    "street": "ul. Bartycka",
    "voivodeship": "mazowieckie",
    "latitude": 52.212539,
    "longitude": 21.062677,
    "rooms": 1,
    "surface": 35.22,
    "floor": "1 piętro",
    "hasElevator": true,
    "buildYear": 2004,
    "description": "Sprzedam studio o powierzchni 35,22 m² przy ul. Bartyckiej na Siekierkach...",
    "imageUrl": "https://s2.adresowa.pl/oi/33/38/4093ac_e37e_xbig-1-pokojowe-mieszkanie-warszawa-siekierki-ul-bartycka.jpg",
    "imageUrls": ["https://s2.adresowa.pl/oi/33/38/4093ac_e37e_xbig-1-pokojowe-mieszkanie-warszawa-siekierki-ul-bartycka.jpg", "..."]
}
```

### Cost estimate

This actor uses a lightweight HTTP crawler (no browser rendering) with the automatic Apify proxy pool. Approximate costs:

- **~50 results**: $0.02-0.05 in platform credits
- **~500 results**: $0.10-0.30 in platform credits
- **~5,000 results**: $0.50-1.50 in platform credits

Costs depend on proxy usage and the number of pages scraped. Usage cost only settles once the run reports SUCCEEDED — a mid-run dataset read will undercount the final charge.

### Tips for best results

- **Start small** — test with `maxResults: 20` before running large scrapes.
- **Use a region or city filter** — a nationwide search across all of Poland returns more pages before hitting your target city.
- **Property types** — use `mieszkania`, `domy`, `dzialki`, `nieruchomosci-komercyjne`, or `pokoje-wynajem`.
- **Filter by seller type after the run** — the `sellerType` field lets you isolate direct-from-owner listings from agency listings in the output without a separate input option.
- **Rent vs sale** — set `listingType` to `rent` for rental listings, `sale` for the sale market (default). Rooms (`pokoje-wynajem`) are rent-only.

### Limitations

- Phone numbers are not scraped. Adresowo.pl reveals the contact phone only via a client-side button click (AJAX call), not in the page's server-rendered HTML.
- Some fields are not always published by the seller (e.g. floor, year built, or elevator status may be missing, especially for houses and land).
- New-development/investor listings occasionally omit the full description and seller-type badge that regular owner/agency listings carry.
- The actor scrapes the public website. No login or authentication is used. No cookies required.
- Price data reflects the listed asking price, not the final transaction price.
- Results per search page are limited by Adresowo.pl's own pagination (roughly 40 listings per page).

### Supported property types

| Polish | English | Input value | Sale | Rent |
|--------|---------|-------------|------|------|
| Mieszkania | Apartments | `mieszkania` | Yes | Yes |
| Domy | Houses | `domy` | Yes | Yes |
| Działki | Land / Plots | `dzialki` | Yes | No |
| Nieruchomości komercyjne | Commercial | `nieruchomosci-komercyjne` | Yes | Yes |
| Pokoje | Rooms | `pokoje-wynajem` | No | Yes |

### Related scrapers

- [Otodom Scraper](https://apify.com/itsnotyouitsme/otodom-scraper) — Poland's largest real estate portal
- [Morizon Scraper](https://apify.com/itsnotyouitsme/morizon-scraper) — Major Polish property portal
- [Nieruchomosci-online Scraper](https://apify.com/itsnotyouitsme/nieruchomosci-online-scraper) — Poland's #3 property portal
- [Domiporta.pl Scraper](https://apify.com/itsnotyouitsme/domiporta-pl-scraper) — Polish real estate portal
- [Immoweb Scraper](https://apify.com/itsnotyouitsme/immoweb-scraper) — Belgium's #1 real estate portal

# Actor input Schema

## `propertyType` (type: `string`):

Type of property to search for on Adresowo.pl.

## `listingType` (type: `string`):

Search for properties for sale or for rent. Ignored for propertyType 'pokoje-wynajem', which is rent-only.

## `region` (type: `string`):

Polish voivodeship to search. Leave empty to search all of Poland. Uses Adresowo's internal region codes.

## `city` (type: `string`):

Narrow the search to one city, e.g. 'warszawa', 'krakow', 'wroclaw'. Uses the Polish URL slug (lowercase, no diacritics). Leave empty to search the whole region.

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

Maximum number of property listings to scrape.

## `proxyConfiguration` (type: `object`):

Adresowo.pl showed no anti-bot on recon — automatic Apify proxy is the default. Switch to Residential (Poland) only if you see blocked/empty runs.

## Actor input object example

```json
{
  "propertyType": "mieszkania",
  "listingType": "sale",
  "region": "fmz",
  "maxResults": 20,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# 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 = {
    "propertyType": "mieszkania",
    "listingType": "sale",
    "region": "fmz",
    "maxResults": 20,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("studio-amba/adresowo-pl-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 = {
    "propertyType": "mieszkania",
    "listingType": "sale",
    "region": "fmz",
    "maxResults": 20,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("studio-amba/adresowo-pl-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 '{
  "propertyType": "mieszkania",
  "listingType": "sale",
  "region": "fmz",
  "maxResults": 20,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call studio-amba/adresowo-pl-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,studio-amba/adresowo-pl-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/lsVCt9elv06krBwGN/builds/7hqlGYOGqwGb7wS8P/openapi.json
