Otomoto Cars Scraper (Poland) avatar

Otomoto Cars Scraper (Poland)

Pricing

from $0.56 / 1,000 results

Go to Apify Store
Otomoto Cars Scraper (Poland)

Otomoto Cars Scraper (Poland)

Scrapes used and new car listings from Otomoto, Poland's largest car marketplace, by brand and region. Every row carries price, mileage, fuel type, gearbox, year, location, seller info and images.

Pricing

from $0.56 / 1,000 results

Rating

0.0

(0)

Developer

Ibnu Adzim

Ibnu Adzim

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

Scrapes used and new car listings from Otomoto — Poland's largest car marketplace.

Public data only. No login, no cookies, no browser. No bot challenge on any of 8 TLS profiles tested across search and detail pages.

The one thing you need to know before using this

A brand or region Otomoto doesn't recognise is silently dropped — you get the whole country's listings instead, with a healthy 200.

/osobowe/notarealbrand and /osobowe/audi/notarealregion both answer 200 with the national total, not an error and not a smaller parent-scope total. This actor reads Otomoto's own appliedFilters/appliedLocation fields — which genuinely say what was applied — and if your brand or region was silently dropped, it stops before paging and reports brandApplied/regionApplied: false with zero rows, rather than handing you the wrong scope labelled as the one you asked for.

Region is a closed list of Poland's 16 voivodeships, each individually verified, so a typo there is refused before the run starts. Brand has no practical fixed list (Otomoto covers dozens of makes), so it stays free text and is checked the way described above instead.

What you get

Three record types share one dataset, told apart by recordType.

CAR — one row per listing

Upstream's object, passed through verbatim: title, price, mileage, fuel type, gearbox, year, location (city + voivodeship), seller info, images, and a parameters list. With Fetch full car details on, each row also gets a detail object: full equipment list, a richer parametersDict, AI-generated summary where present, and verified-car badges.

SEARCH_SUMMARY — one row per (brand, region) query

Otomoto's own match total, requests spent, pages fetched, the filters actually sent, and brandApplied/regionApplied.

ERROR — one row per input that could not be processed

Every input maps to at least one row, so nothing disappears silently.

Input

FieldWhat it does
Search queries[{"brand": ..., "region": ...}, ...]. Both may be empty for "everything".
Fuel typePetrol, diesel, electric, hybrid, LPG, plug-in hybrid.
Minimum / maximum price (PLN)Verified real.
Minimum / maximum mileage (km)Verified real.
Fetch full car detailsOne extra request per listing. Off by default.
Max cars per query0 for everything Otomoto will serve.
Max concurrent requests / Minimum seconds between requestsThroughput controls.

Known limits

  • Cars only. Otomoto also lists motorcycles, trucks and parts on presumably similar infrastructure — not verified or covered here.
  • Brand is not validated against a fixed list (there isn't a practical one) — a typo is caught at runtime via brandApplied: false rather than refused up front like region is.
  • A dead or malformed listing URL doesn't always 404 — Otomoto answers a malformed id with HTTP 520 and a well-formed-but-missing id with a clean 404, both serving the site's generic homepage. This actor treats both the same way (a failed detail fetch, not a crash).