# Otodom Poland Real Estate Scraper

> Otodom Poland Real Estate Scraper is a paid API for AI agents from api.scrapeforagents.tech, paid per call via x402, $0.04/call, status unknown (last checked 2026-10-02).

Scrapes structured property listings from Otodom.pl, Poland's leading real estate portal, with filters for price, area, rooms, location, and transaction type.

## Facts

- Endpoint: POST https://api.scrapeforagents.tech/v1/otodom?utm_source=zero.xyz
- Price: $0.04/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-02
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/otodom-poland-real-estate-scraper-a228b7ed
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_yIuxKSLiaZ0ZeKOtyS2W5

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability otodom-poland-real-estate-scraper-a228b7ed -d '<json body>'
```

Example prompt: Search Otodom for apartments for sale in Warsaw (mazowieckie/warszawa/warszawa/warszawa) with 2 to 3 rooms, priced between 400000 and 800000 PLN, minimum 50 sqm, listed in the last 7 days — give me up to 30 results with full details.

## When to prefer this

Use this endpoint when you need structured property listing data from Otodom.pl — Poland's largest real estate portal — with precise filtering by location, price, area, rooms, market type, or recency. Prefer this over generic web scrapers when targeting Polish real estate specifically, as it understands Otodom's URL schema and search filters natively.

## Known failure modes

- Invalid location path returns no results or an error
- Overly restrictive filter combination yields zero listings (not charged)
- Otodom site structure changes may break extraction temporarily
- Invalid enum values for propertyType or searchType cause request rejection
- Network or scraping timeout for very large result sets

## How this service works

Pay-per-call structured web data. Failed or empty runs are not charged.

## Output

Returns a JSON object with a count of matched listings and an array of property items, each containing the property ID, title, price, formatted price, currency, property URL, transaction type, and property type. With extractDetails enabled, full descriptions and coordinates are also included.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "market": {
   "enum": [
    "ALL",
    "PRIMARY",
    "SECONDARY"
   ],
   "type": "string",
   "default": "ALL",
   "description": "Primary or secondary market, or both."
  },
  "areaMax": {
   "type": "integer",
   "minimum": 0,
   "description": "Maximum property area in square meters."
  },
  "areaMin": {
   "type": "integer",
   "minimum": 0,
   "description": "Minimum property area in square meters."
  },
  "location": {
   "type": "string",
   "description": "Path after the property category in a search URL, such as mazowieckie/warszawa/warszawa/warszawa. Use cala-polska for all Poland."
  },
  "maxItems": {
   "type": "integer",
   "default": 50,
   "minimum": 0,
   "description": "Stop after this many unique properties across all start URLs. Zero means no actor cap."
  },
  "priceMax": {
   "type": "integer",
   "minimum": 0,
   "description": "Maximum advertised price in PLN."
  },
  "priceMin": {
   "type": "integer",
   "minimum": 0,
   "description": "Minimum advertised price in PLN."
  },
  "roomsMax": {
   "type": "integer",
   "maximum": 10,
   "minimum": 1,
   "description": "Upper room count included in the search."
  },
  "roomsMin": {
   "type": "integer",
   "maximum": 10,
   "minimum": 1,
   "description": "Lower room count included in the search."
  },
  "buildYear": {
   "type": "integer",
   "maximum": 2100,
   "minimum": 1800,
   "description": "Minimum construction year. This filter is applied by the search page."
  },
  "startUrls": {
   "type": "array",
   "description": "Public search result or property URLs. When supplied, search filters below are ignored."
  },
  "postedDate": {
   "enum": [
    "",
    "1",
    "3",
    "7",
    "14"
   ],
   "type": "string",
   "default": "",
   "description": "Keep listings first created within this number of days. The date filter is applied after fetching search results."
  },
  "searchType": {
   "enum": [
    "sprzedaz",
    "wynajem"
   ],
   "type": "string",
   "default": "sprzedaz",
   "description": "Choose properties for sale or rent."
  },
  "propertyType": {
   "enum": [
    "mieszkanie",
    "dom",
    "dzialka",
    "lokal",
    "haleimagazyny",
    "garaz"
   ],
   "type": "string",
   "default": "mieszkanie",
   "description": "Property category used to construct a search."
  },
  "extractDetails": {
   "type": "boolean",
   "default": true,
   "description": "Retrieve full descriptions, coordinates, building attributes and complete
… (truncated)
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "count": 1,
  "items": [
   {
    "id": null,
    "price": null,
    "title": null,
    "propertyUrl": null,
    "transaction": null,
    "propertyType": null,
    "priceCurrency": null,
    "priceFormatted": null
   }
  ],
  "product": "otodom"
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/otodom-poland-real-estate-scraper-a228b7ed/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from api.scrapeforagents.tech](https://www.zero.xyz/host/api.scrapeforagents.tech/llms.txt)
