Skip to content

Otodom Scraper

Try for free

Scrape otodom.pl property listings in Poland from search URLs, city or district names, or listing URLs: price, price per m², area, rooms, floor, address, GPS, features, photos, agency, seller name and phone numbers.

🏠 Otodom Scraper

Scrape property listings from otodom.pl, Poland's largest real estate portal. Paste a search URL or just type a city or district name, and get clean rows with price, price per m², area, rooms, floor, full address, GPS, features, photos, agency details and the seller's phone numbers. No login, no browser, about 1,000 fully detailed listings in under 90 seconds.

✨ Why use Otodom Scraper?

  • ⚡ Fast — reads the site's own JSON data, no browser: 1,000 listings with full details in about 80 seconds in our tests.
  • 📍 Search by name — type "Kraków", "Mokotów" or "pomorskie" and the actor finds otodom.pl's location for you. Search URLs and listing URLs work too.
  • 📋 70+ fields — price, price per m², rent (czynsz), area, rooms, floor, building year, building type, heating, energy certificate, extras, equipment, GPS, photos, floor plans, agency and phones.
  • 🔎 All the site's filters — sale or rent, 9 property types, primary or secondary market, private / agency / developer, price, price per m², area, rooms, build year, plot area, posting date, keyword, radius and sorting.
  • 🧹 Clean data — numbers are numbers, duplicates (promoted repeats and cross-listings) are removed, and every row links back to the listing.
  • 💸 Cheap — pay per listing, datacenter traffic only.

🎯 Use cases

  • 📈 Price monitoring — track asking prices and price per m² by city, district or building type.
  • 🏗️ New developments — follow developer projects (primary market) with delivery dates and unit counts.
  • 🤝 Lead generation — collect agency names, licence numbers, addresses and phone numbers per area.
  • 🧮 Investment research — compare rents vs. sale prices to estimate yields.
  • 🗺️ Market maps — every listing comes with GPS coordinates for mapping and geo-analysis.

🚀 How to use

  1. Paste one or more otodom.pl search URLs into Start URLs, or type city / district names into Locations.
  2. For Locations, pick the deal type, property type and any filters.
  3. Set Max listings per search (default 20).
  4. Click Start and download the results as JSON, CSV, Excel or HTML, or read them through the API.

📥 Input

FieldDescription
startUrlsotodom.pl search results URLs (filters in the URL are kept) or listing URLs
locationsCity, district or region names, or otodom location paths
maxItemsMaximum listings per search (0 = no limit)
transaction / propertyType / marketsale or rent; flat, studio, house, room, plot, commercial, warehouse, garage, investment; all, primary or secondary
ownerType, sortByprivate / agency / developer; newest, price, price per m² or area
priceMin … plotAreaMaxPrice, price per m², area, rooms, build year and plot area ranges
postedWithinDays, keyword, distanceRadiusRecent listings only, text in the description, extra radius in km
fetchDetailsOpen each listing for description, all features, GPS and phones (default on)
{
  "locations": ["Kraków"],
  "transaction": "sale",
  "propertyType": "flat",
  "priceMax": 900000,
  "roomsMin": 2,
  "sortBy": "newest",
  "maxItems": 100
}

📤 Output

FieldDescription
id, url, titleListing id, link and title
transaction, propertyType, marketsale/rent, flat/house/..., primary/secondary
price, currency, pricePerM2, rentPrice, depositPrices in PLN (rentPrice is the monthly building fee)
area, plotArea, rooms, floor, totalFloors, buildYearSize and building data
buildingType, buildingMaterial, condition, ownershipType, heating, windowsType, energyCertificate, availableFrom, elevatorProperty details
address, street, subdistrict, district, city, province, latitude, longitudeLocation
descriptionFull description as plain text (descriptionHtml keeps the HTML)
sellerType, sellerName, contactName, phone, phones, contactsSeller and contact numbers shown on the listing
agencyId, agencyName, agencyUrl, agencyAddress, agencyLicenseNumberAgency or developer
extras, equipment, security, media, features, tagsAmenities
mainImage, images, imageCount, floorPlans, videoUrl, view3dUrlMedia
isPromoted, isExclusiveOffer, isPrivateOwner, createdAt, modifiedAt, pushedUpAt, statusFlags and dates
detailsEvery labelled value from the listing's details table

Example (trimmed; seller and agency are fictional):

{
  "id": 68439349,
  "url": "https://www.otodom.pl/pl/oferta/radzikowskiego-100-m2-3-poziomy-5-pokoi-ID4Dact",
  "title": "Radzikowskiego 100 m2 3 poziomy 5 pokoi",
  "transaction": "sale",
  "propertyType": "flat",
  "market": "secondary",
  "price": 1049999,
  "currency": "PLN",
  "pricePerM2": 10633.98,
  "rentPrice": null,
  "deposit": null,
  "area": 98.74,
  "plotArea": null,
  "rooms": 5,
  "floor": "3",
  "floorNumber": 3,
  "totalFloors": 4,
  "buildYear": 2001,
  "buildingType": "block",
  "buildingMaterial": "breezeblock",
  "condition": "to_renovation",
  "ownershipType": null,
  "heating": "gas",
  "windowsType": "plastic",
  "energyCertificate": null,
  "availableFrom": null,
  "elevator": false,
  "parking": null,
  "address": "ul. Eljasza Walerego Radzikowskiego, Azory Zachód, Prądnik Biały, Kraków, małopolskie",
  "street": "ul. Eljasza Walerego Radzikowskiego",
  "subdistrict": "Azory Zachód",
  "district": "Prądnik Biały",
  "city": "Kraków",
  "province": "małopolskie",
  "postalCode": null,
  "locationId": "malopolskie/krakow/krakow/krakow/pradnik-bialy/azory-zachod",
  "latitude": 50.085896,
  "longitude": 19.894537,
  "description": "ul. Radzikowskiego 77 ; Kraków Bronowice\nCena: 1 049 000 zł\nMamy przyjemność zaprezentować mieszkanie z potencjałem: 3-poziomowe, 5-pokojowe.\nLokalizacja w jedn...",
  "sellerType": "business",
  "sellerName": "Anna Kowalska",
  "contactName": "Anna Kowalska",
  "phone": "+48500000000",
  "phones": [
    "+48500000000"
  ],
  "contacts": [
    {
      "name": "Anna Kowalska",
      "phone": "+48500000000"
    }
  ],
  "agencyId": 100000,
  "agencyName": "Przykładowe Nieruchomości",
  "agencyUrl": "https://www.otodom.pl/pl/firmy/biura-nieruchomosci/przykladowe-nieruchomosci-ID100000",
  "agencyLogo": null,
  "agencyAddress": "ul. Przykładowa 1, 30-001 Kraków",
  "agencyLicenseNumber": null,
  "developmentTitle": null,
  "developmentUrl": null,
  "isPromoted": false,
  "isExclusiveOffer": false,
  "isPrivateOwner": false,
  "tags": [
    "TWO_LEVEL",
    "BALCONY"
  ],
  "extras": [
    "balcony",
    "two_storey"
  ],
  "equipment": [],
  "security": [],
  "media": [],
  "features": [],
  "mainImage": "https://ireland.apollo.olxcdn.com/v1/files/eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJmbiI6InIyb3owMG1pcm5qbjMtQVBMIiwidyI6W3siZm4iOiJlbnZmcXFlMWF5NGsxLUFQTCIsInMiOiIxNiIsImEiOiIwIiwicCI6IjEwLC0xMCJ9XX0.WwySNdLwFfJb4TPtTEBvocUoNukfl1MCOL-eBeaxGDg/image;s=2048x1536;q=80",
  "imageCount": 21,
  "images": [
    "https://ireland.apollo.olxcdn.com/v1/files/eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJmbiI6InIyb3owMG1pcm5qbjMtQVBMIiwidyI6W3siZm4iOiJlbnZmcXFlMWF5NGsxLUFQTCIsInMiOiIxNiIsImEiOiIwIiwicCI6IjEwLC0xMCJ9XX0.WwySNdLwFfJb4TPtTEBvocUoNukfl1MCOL-eBeaxGDg/image;s=2048x1536;q=80",
    "https://ireland.apollo.olxcdn.com/v1/files/eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJmbiI6IjZ6ZjdxeXN2dHdnNzMtQVBMIiwidyI6W3siZm4iOiJlbnZmcXFlMWF5NGsxLUFQTCIsInMiOiIxNiIsImEiOiIwIiwicCI6IjEwLC0xMCJ9XX0.5qi0Numsmy8GrYDD7Evyei_d7qIz3BPX4rhA-GhdbkM/image;s=2048x1536;q=80"
  ],
  "floorPlans": [
    "https://ireland.apollo.olxcdn.com/v1/files/eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJmbiI6Ind3eHMxZDlqN3ptYTItQVBMIiwidyI6W3siZm4iOiJlbnZmcXFlMWF5NGsxLUFQTCIsInMiOiIxNiIsImEiOiIwIiwicCI6IjEwLC0xMCJ9XX0.-s7ZFBAk4MuainXO50Jjs44IB6yImit646HFWYW5pQk/image",
    "https://ireland.apollo.olxcdn.com/v1/files/eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJmbiI6Im01M3g1ZXJoa3M4cjEtQVBMIiwidyI6W3siZm4iOiJlbnZmcXFlMWF5NGsxLUFQTCIsInMiOiIxNiIsImEiOiIwIiwicCI6IjEwLC0xMCJ9XX0.JLuPxcL-bhTE51JjQ8Gp28uAtgXZKDmgah5TbOxHrO0/image"
  ],
  "videoUrl": null,
  "view3dUrl": null,
  "referenceId": null,
  "status": "active",
  "createdAt": "2026-09-20T09:42:37Z",
  "modifiedAt": "2026-10-15T22:03:30Z",
  "pushedUpAt": "2026-10-16T00:03:30+02:00",
  "details": {
    "price": "1 049 999 zł",
    "price_per_m": "10 633,98 zł/m²",
    "m": "98,74 m²",
    "market": "secondary",
    "building_type": "block"
  },
  "searchUrl": "https://www.otodom.pl/pl/wyniki/sprzedaz/mieszkanie/malopolskie/krakow/krakow/krakow",
  "detailsScraped": true,
  "scrapedAt": "2026-10-15T22:59:18.504Z"
}

💰 Pricing

You pay $1.50 per 1,000 listings ($0.0015 per listing) plus a small amount of platform usage. A job of 1,000 fully detailed listings cost about $0.03 in platform usage in our tests (compute plus about 24 MB of datacenter traffic), so 1,000 listings ≈ $1.53 in total. You only pay for listings saved to the dataset; "not found" rows are free.

❓ FAQ

Is it legal to scrape otodom.pl? The actor reads only public listing pages that anyone can open without an account. Make sure your use of the data, especially personal data such as names and phone numbers, complies with GDPR and the site's terms.

Do I need an account or a proxy? No login is needed. The default datacenter proxy works well; you can switch to residential proxies (pinned to Poland) if you ever see blocks.

How many listings can I get? All results of a search: the actor pages through the whole result list (Warsaw flats for sale alone have about 20,000). Use maxItems to cap each search.

Why are some fields empty? Sellers fill in different fields. A missing value means the listing does not show it. New-development pages show pricePerM2From, areaFrom and areaTo instead of a single price.

Can I scrape only search results, without opening every listing? Yes, turn off Fetch full details. Rows then have the search-card data (price, area, rooms, floor, location, agency, photos) and the run is faster and lighter.

Can I schedule it or use the API? Yes. Schedule runs in the console, or start runs and read datasets through the REST API.

⚠️ Limits

  • Only otodom.pl (Poland). Prices are in the listing currency, usually PLN.
  • Phone numbers are included only when the listing shows them publicly.
  • Individual units inside a new-development page are not expanded into separate rows; the development itself is one row.
  • No price-history or change-monitoring mode.

Related actors

G2
4.7/5
Excellent
Trustpilot

The internet is full of data.
Start owning yours.

Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.

No credit card. No setup calls.