# Gratka Property Search Scraper (`alexist/gratka-property-search-scraper`) Actor

Scrape residential properties from Gratka.pl instantly. Collect 31 data fields including prices, locations, photos, descriptions, and listing metrics—perfect for real estate analysts, market researchers, and property investment platforms.

- **URL**: https://apify.com/alexist/gratka-property-search-scraper.md
- **Developed by:** [Alex](https://apify.com/alexist) (community)
- **Categories:** Automation, Developer tools, Real estate
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

## 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

## Gratka.pl Property Scraper: Extract Polish Real Estate Data at Scale

***

### What Is Gratka.pl?

Gratka.pl is Poland's largest residential property marketplace, hosting hundreds of thousands of active listings for apartments, houses, and condos. It serves homebuyers, renters, and investors seeking properties across major Polish cities. Manually collecting property data from Gratka is laborious and error-prone — the **Gratka Property Scraper** automates the extraction, delivering structured property records in seconds.

***

### Overview

The **Gratka Property Scraper** harvests detailed property listings from Gratka.pl search result pages, converting human-readable listings into machine-readable data records. It is designed for:

- **Real estate investors** analyzing market trends and investment opportunities
- **Property portals** aggregating listings from multiple sources
- **Market researchers** studying residential pricing, availability, and demand
- **Data analysts** building datasets for pricing models and comparisons

Key strengths include high-volume extraction (up to 200 items per URL), resilient error handling with `ignore_url_failures`, and comprehensive output covering 31 property attributes.

***

### Input Format

The scraper accepts a JSON configuration object:

```json
{
  "urls": [
    "https://gratka.pl/nieruchomosci/mieszkania"
  ],
  "max_items_per_url": 200,
  "ignore_url_failures": true
}
```

| Field | Type | Description |
|---|---|---|
| `urls` | Array | Property list page URLs from Gratka.pl (e.g., search results for apartments, houses) |
| `max_items_per_url` | Integer | Maximum properties to extract per URL (default: 100, max: 200) |
| `ignore_url_failures` | Boolean | If `true`, scraper continues if a URL fails; if `false`, stops on first error |

> **Tip:** Use category URLs like `/nieruchomosci/mieszkania` (apartments) or filter URLs to narrow results by city, price, or room count.

***

### Output Format

**Sample output**

```json
{
  "added_at": "2026-05-20",
  "refreshed_at": "2026-07-24 02:32:08",
  "advertisement_text": "Mieszkanie 44 m2 Łódź Chojny-Dąbrowa",
  "area": "44",
  "contact": {
    "company": null,
    "person": {
      "faxes": [],
      "name": "Remigiusz ",
      "phones": [
        "+48 511 775 364"
      ],
      "photo": null,
      "type": "OWNER",
      "url": null
    }
  },
  "development": null,
  "description": "Opis nieruchomości   Mieszkanie położone na 2 piętrze bloku 4-piętrowego przy ul. Poli Gojawiczyńskiej 5. Blok wybudowany w połowie lat 60-tych z wielkiej płyty, po termomodernizacji. Nieruchomość stanowi wspólnotę zarządzana przez administrację. Mieszkanie posiada wydzieloną KW, jest rozkładowe, składa się z 2 pokoi, kuchni, łazienki z WC, przedpokoju. Do lokalu wliczany jest balkon i komórka (ok. 4m2). Mieszkanie jest rozkładowe, z...",
  "floor_formatted": "piętro 2/4",
  "highlight_text": "",
  "id": 1542417196,
  "id_on_frontend": "47417411",
  "is_top_promoted": false,
  "is_highlighted": false,
  "is_recommended": false,
  "location": {
    "location": [
      "łódzkie",
      "Łódź",
      "Górna",
      "Chojny-Dąbrowa"
    ],
    "street": "Poli Gojawiczyńskiej"
  },
  "number_of_rooms": "2 pokoje",
  "photos": [
    {
      "alt": "Mieszkanie na sprzedaż 44m2 Łódź Górna Chojny-Dąbrowa Poli Gojawiczyńskiej - zdjęcie 1",
      "id": "aHR0cHM6Ly9kLWdyLmNkbmdyLnBsL2thZHJ5L2svci9nci1vZ2wvMTUvMDAvNDc0MTc0MTFfMTQ4MjE0MDc1MV9taWVzemthbmllLTQ0LW0yLWxvZHotY2hvam55LWRhYnJvd2EuanBn",
      "name": "mieszkanie-na-sprzedaz-44-m"
    },
    {
      "alt": "Mieszkanie na sprzedaż 44m2 Łódź Górna Chojny-Dąbrowa Poli Gojawiczyńskiej - zdjęcie 2",
      "id": "aHR0cHM6Ly9kLWdyLmNkbmdyLnBsL2thZHJ5L2svci9nci1vZ2wvMTUvMDAvNDc0MTc0MTFfMTQ4MjE0MjE5M19taWVzemthbmllLTQ0LW0yLWxvZHotY2hvam55LWRhYnJvd2EuanBn",
      "name": "mieszkanie-na-sprzedaz-44-m"
    },
    {
      "alt": "Mieszkanie na sprzedaż 44m2 Łódź Górna Chojny-Dąbrowa Poli Gojawiczyńskiej - zdjęcie 3",
      "id": "aHR0cHM6Ly9kLWdyLmNkbmdyLnBsL2thZHJ5L2svci9nci1vZ2wvMTUvMDAvNDc0MTc0MTFfMTQ4MDg0OTQwMS5qcGc=",
      "name": "mieszkanie-na-sprzedaz-44-m"
    },
    {
      "alt": "Mieszkanie na sprzedaż 44m2 Łódź Górna Chojny-Dąbrowa Poli Gojawiczyńskiej - zdjęcie 4",
      "id": "aHR0cHM6Ly9kLWdyLmNkbmdyLnBsL2thZHJ5L2svci9nci1vZ2wvMTUvMDAvNDc0MTc0MTFfMTQ4MDg0OTQyNy5qcGc=",
      "name": "mieszkanie-na-sprzedaz-44-m"
    },
    {
      "alt": "Mieszkanie na sprzedaż 44m2 Łódź Górna Chojny-Dąbrowa Poli Gojawiczyńskiej - zdjęcie 5",
      "id": "aHR0cHM6Ly9kLWdyLmNkbmdyLnBsL2thZHJ5L2svci9nci1vZ2wvMTUvMDAvNDc0MTc0MTFfMTQ4MDg0OTQ0MS5qcGc=",
      "name": "mieszkanie-na-sprzedaz-44-m"
    },
    {
      "alt": "Mieszkanie na sprzedaż 44m2 Łódź Górna Chojny-Dąbrowa Poli Gojawiczyńskiej - zdjęcie 6",
      "id": "aHR0cHM6Ly9kLWdyLmNkbmdyLnBsL2thZHJ5L2svci9nci1vZ2wvMTUvMDAvNDc0MTc0MTFfMTQ4MDg0OTQ0My5qcGc=",
      "name": "mieszkanie-na-sprzedaz-44-m"
    },
    {
      "alt": "Mieszkanie na sprzedaż 44m2 Łódź Górna Chojny-Dąbrowa Poli Gojawiczyńskiej - zdjęcie 7",
      "id": "aHR0cHM6Ly9kLWdyLmNkbmdyLnBsL2thZHJ5L2svci9nci1vZ2wvMTUvMDAvNDc0MTc0MTFfMTQ4MDg0OTQ0OS5qcGc=",
      "name": "mieszkanie-na-sprzedaz-44-m"
    },
    {
      "alt": "Mieszkanie na sprzedaż 44m2 Łódź Górna Chojny-Dąbrowa Poli Gojawiczyńskiej - zdjęcie 8",
      "id": "aHR0cHM6Ly9kLWdyLmNkbmdyLnBsL2thZHJ5L2svci9nci1vZ2wvMTUvMDAvNDc0MTc0MTFfMTQ4MDg0OTQ1MS5qcGc=",
      "name": "mieszkanie-na-sprzedaz-44-m"
    },
    {
      "alt": "Mieszkanie na sprzedaż 44m2 Łódź Górna Chojny-Dąbrowa Poli Gojawiczyńskiej - zdjęcie 9",
      "id": "aHR0cHM6Ly9kLWdyLmNkbmdyLnBsL2thZHJ5L2svci9nci1vZ2wvMTUvMDAvNDc0MTc0MTFfMTQ4MDg0OTQ2Ny5qcGc=",
      "name": "mieszkanie-na-sprzedaz-44-m"
    },
    {
      "alt": "Mieszkanie na sprzedaż 44m2 Łódź Górna Chojny-Dąbrowa Poli Gojawiczyńskiej - zdjęcie 10",
      "id": "aHR0cHM6Ly9kLWdyLmNkbmdyLnBsL2thZHJ5L2svci9nci1vZ2wvMTUvMDAvNDc0MTc0MTFfMTQ4MDg0OTQ2OS5qcGc=",
      "name": "mieszkanie-na-sprzedaz-44-m"
    },
    {
      "alt": "Mieszkanie na sprzedaż 44m2 Łódź Górna Chojny-Dąbrowa Poli Gojawiczyńskiej - zdjęcie 11",
      "id": "aHR0cHM6Ly9kLWdyLmNkbmdyLnBsL2thZHJ5L2svci9nci1vZ2wvMTUvMDAvNDc0MTc0MTFfMTQ4MjE0MjcwOV9taWVzemthbmllLTQ0LW0yLWxvZHotY2hvam55LWRhYnJvd2EuanBn",
      "name": "mieszkanie-na-sprzedaz-44-m"
    },
    {
      "alt": "Mieszkanie na sprzedaż 44m2 Łódź Górna Chojny-Dąbrowa Poli Gojawiczyńskiej - zdjęcie 12",
      "id": "aHR0cHM6Ly9kLWdyLmNkbmdyLnBsL2thZHJ5L2svci9nci1vZ2wvMTUvMDAvNDc0MTc0MTFfMTQ4MjE0MjcxMV9taWVzemthbmllLTQ0LW0yLWxvZHotY2hvam55LWRhYnJvd2EuanBn",
      "name": "mieszkanie-na-sprzedaz-44-m"
    },
    {
      "alt": "Mieszkanie na sprzedaż 44m2 Łódź Górna Chojny-Dąbrowa Poli Gojawiczyńskiej - zdjęcie 13",
      "id": "aHR0cHM6Ly9kLWdyLmNkbmdyLnBsL2thZHJ5L2svci9nci1vZ2wvMTUvMDAvNDc0MTc0MTFfMTUwNzU0MjU1MV9taWVzemthbmllLTQ0LW0yLWxvZHotY2hvam55LWRhYnJvd2EuanBn",
      "name": "mieszkanie-na-sprzedaz-44-m"
    },
    {
      "alt": "Mieszkanie na sprzedaż 44m2 Łódź Górna Chojny-Dąbrowa Poli Gojawiczyńskiej - zdjęcie 14",
      "id": "aHR0cHM6Ly9kLWdyLmNkbmdyLnBsL2thZHJ5L2svci9nci1vZ2wvMTUvMDAvNDc0MTc0MTFfMTUwNzU0MjQ1NV9taWVzemthbmllLTQ0LW0yLWxvZHotY2hvam55LWRhYnJvd2EuanBn",
      "name": "mieszkanie-na-sprzedaz-44-m"
    },
    {
      "alt": "Mieszkanie na sprzedaż 44m2 Łódź Górna Chojny-Dąbrowa Poli Gojawiczyńskiej - zdjęcie 15",
      "id": "aHR0cHM6Ly9kLWdyLmNkbmdyLnBsL2thZHJ5L2svci9nci1vZ2wvMTUvMDAvNDc0MTc0MTFfMTUwNzU0MjQ5NV9taWVzemthbmllLTQ0LW0yLWxvZHotY2hvam55LWRhYnJvd2EuanBn",
      "name": "mieszkanie-na-sprzedaz-44-m"
    },
    {
      "alt": "Mieszkanie na sprzedaż 44m2 Łódź Górna Chojny-Dąbrowa Poli Gojawiczyńskiej - zdjęcie 16",
      "id": "aHR0cHM6Ly9kLWdyLmNkbmdyLnBsL2thZHJ5L2svci9nci1vZ2wvMTUvMDAvNDc0MTc0MTFfMTQ4MjE0MjkzOV9taWVzemthbmllLTQ0LW0yLWxvZHotY2hvam55LWRhYnJvd2EuanBn",
      "name": "mieszkanie-na-sprzedaz-44-m"
    },
    {
      "alt": "Mieszkanie na sprzedaż 44m2 Łódź Górna Chojny-Dąbrowa Poli Gojawiczyńskiej - zdjęcie 17",
      "id": "aHR0cHM6Ly9kLWdyLmNkbmdyLnBsL2thZHJ5L2svci9nci1vZ2wvMTUvMDAvNDc0MTc0MTFfMTQ4MjE0MzE2OV9taWVzemthbmllLTQ0LW0yLWxvZHotY2hvam55LWRhYnJvd2EuanBn",
      "name": "mieszkanie-na-sprzedaz-44-m"
    },
    {
      "alt": "Mieszkanie na sprzedaż 44m2 Łódź Górna Chojny-Dąbrowa Poli Gojawiczyńskiej - zdjęcie 18",
      "id": "aHR0cHM6Ly9kLWdyLmNkbmdyLnBsL2thZHJ5L2svci9nci1vZ2wvMTUvMDAvNDc0MTc0MTFfMTQ4NTc2MTkwNV9taWVzemthbmllLTQ0LW0yLWxvZHotY2hvam55LWRhYnJvd2EuanBn",
      "name": "mieszkanie-na-sprzedaz-44-m"
    },
    {
      "alt": "Mieszkanie na sprzedaż 44m2 Łódź Górna Chojny-Dąbrowa Poli Gojawiczyńskiej - zdjęcie 19",
      "id": "aHR0cHM6Ly9kLWdyLmNkbmdyLnBsL2thZHJ5L2svci9nci1vZ2wvMTUvMDAvNDc0MTc0MTFfMTQ4ODM0MTY5OV9taWVzemthbmllLTQ0LW0yLWxvZHotY2hvam55LWRhYnJvd2EuanBn",
      "name": "mieszkanie-na-sprzedaz-44-m"
    }
  ],
  "photos_number": 19,
  "promotion_points": 0,
  "has_3d_view": null,
  "has_video": false,
  "plans": [],
  "price": {
    "amount": "369000.00",
    "currency": "PLN"
  },
  "price_formatted": "369 000 zł",
  "price_m2": {
    "amount": "8386.36",
    "currency": "PLN"
  },
  "price_m2_formatted": "8 386 zł/m²",
  "title": "mieszkanie na sprzedaż",
  "url": "/nieruchomosci/mieszkanie-lodz-gorna-poli-gojawiczynskiej/oi/47417411",
  "service_promocena_is_active": false,
  "omnibus_previous_sale_price": null,
  "omnibus_previous_lowest_price": null,
  "from_url": "https://gratka.pl/nieruchomosci/mieszkania"
}
```

Each property record contains 31 fields spanning identification, pricing, features, media, and promotion status:

#### Listing Identification

| Field | Meaning |
|---|---|
| `ID` | Unique internal identifier for the property in Gratka's database |
| `ID On Frontend` | Public-facing ID displayed on the listing page |
| `Title` | Property headline (e.g., "3-room apartment in Warsaw city center") |
| `URL` | Direct link to the property listing on Gratka.pl |
| `Added At` | Timestamp when the listing was first posted |
| `Refreshed At` | Last time the listing was bumped or updated |

#### Pricing & Financial Data

| Field | Meaning |
|---|---|
| `Price` | Total listing price in PLN |
| `Price Formatted` | Human-readable price string (e.g., "450,000 PLN") |
| `Price m²` | Price per square meter in PLN |
| `Price m² Formatted` | Formatted price per square meter |
| `Omnibus Previous Sale Price` | Prior sale price (if available in historical records) |
| `Omnibus Previous Lowest Price` | Lowest historical asking price |
| `Service Promocena Is Active` | Whether the listing uses Gratka's price-tracking service |

#### Property Details

| Field | Meaning |
|---|---|
| `Area` | Property size in square meters (m²) |
| `Number Of Rooms` | Count of rooms (bedrooms + living areas) |
| `Floor Formatted` | Floor number and building height (e.g., "3/5") |
| `Location` | Full address or neighborhood description |
| `Description` | Long-form property description with amenities and features |
| `Advertisement Text` | Custom seller notes or highlights |
| `Development` | Property development/complex name (if applicable) |
| `Plans` | Schematic floor plan (if available) |

#### Visual Content

| Field | Meaning |
|---|---|
| `Photos` | Array of photo URLs for the property |
| `Photos Number` | Total count of photos in the listing |
| `Has 3D View` | Boolean: does the listing include a 3D virtual tour |
| `Has Video` | Boolean: does the listing include a video walkthrough |

#### Promotion & Visibility

| Field | Meaning |
|---|---|
| `Is Top Promoted` | Boolean: listing has top-tier featured placement |
| `Is Highlighted` | Boolean: listing has highlight/color enhancement |
| `Is Recommended` | Boolean: Gratka's algorithm recommends the property |
| `Highlight Text` | Description of the highlight type |
| `Promotion Points` | Internal promotion credits or boost level |

#### Contact Information

| Field | Meaning |
|---|---|
| `Contact` | Seller contact details (name, phone, agency affiliation) |

***

### How to Use

1. **Select Gratka URLs** — Navigate to Gratka.pl and apply desired filters (city, price range, room count). Copy the filtered search URL.
2. **Configure the scraper** — Add the URL(s) to the `urls` array. Set `max_items_per_url` based on the number of listings you need (up to 200 per page).
3. **Enable resilience** — Set `ignore_url_failures: true` for robust, large-scale runs.
4. **Start the run** — Execute the scraper and monitor progress in the logs.
5. **Download results** — Export as JSON, CSV, or Excel for analysis, imports, or display.

**Best practices:**

- Use search filters on Gratka.pl to pre-narrow results, reducing unnecessary scrapes.
- For high-volume runs, stagger multiple scraper jobs to avoid rate-limiting.
- Parse `Omnibus Previous*` fields separately if conducting historical price analysis.

***

### Use Cases & Business Value

- **Investment analysis:** Compare properties by price per m², location, and promotion status
- **Market intelligence:** Track listing volume, pricing trends, and average days-on-market across Polish regions
- **Portal aggregation:** Feed Gratka listings into your own real estate website or mobile app
- **Valuation models:** Build datasets for automated property valuation (AVM) systems
- **Lead generation:** Identify newly listed or refreshed properties for targeted marketing

The **Gratka Property Scraper** eliminates manual data collection and unlocks actionable real estate intelligence in minutes, enabling data-driven investment and market decisions.

***

### Conclusion

The **Gratka.pl Property Scraper** is an essential tool for anyone working with Polish residential real estate data. With 31 comprehensive output fields and flexible, fault-tolerant configuration, it delivers property intelligence at enterprise scale. Start scraping today and transform Gratka's marketplace into structured, actionable data.

# Actor input Schema

## `urls` (type: `array`):

Add the URLs of the property list urls you want to scrape. You can paste URLs one by one, or use the Bulk edit section to add a prepared list.

## `ignore_url_failures` (type: `boolean`):

If true, the scraper will continue running even if some URLs fail to be scraped.

## `max_items_per_url` (type: `integer`):

The maximum number of items to scrape per URL.

## Actor input object example

```json
{
  "urls": [
    "https://gratka.pl/nieruchomosci/mieszkania"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 100
}
```

# 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 = {
    "urls": [
        "https://gratka.pl/nieruchomosci/mieszkania"
    ],
    "ignore_url_failures": true,
    "max_items_per_url": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("alexist/gratka-property-search-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 = {
    "urls": ["https://gratka.pl/nieruchomosci/mieszkania"],
    "ignore_url_failures": True,
    "max_items_per_url": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("alexist/gratka-property-search-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 '{
  "urls": [
    "https://gratka.pl/nieruchomosci/mieszkania"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 100
}' |
apify call alexist/gratka-property-search-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,alexist/gratka-property-search-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/0AX0WUiy8ohMVlEMR/builds/ZpKCXBnJKM32tGRHp/openapi.json
