Otomoto.pl Car Scraper
Pricing
from $0.79 / 1,000 car listings
Otomoto.pl Car Scraper
Scrape Otomoto.pl car listings: prices, specs, mileage & equipment. Filter by make, model, year, fuel type, price range and more. 240k+ listings.
Pricing
from $0.79 / 1,000 car listings
Rating
0.0
(0)
Developer
Unfenced Group
Maintained by CommunityActor stats
1
Bookmarked
7
Total users
3
Monthly active users
2 days ago
Last modified
Categories
Share

Extract car listings from Otomoto.pl, Poland's largest vehicle marketplace, in a clean, consistent structure ready for price monitoring, market research and dealer analytics. Full specifications, structured pricing with drop tracking and price rating, GPS location, equipment lists and seller details. No API key required.
Why this scraper?
🎯 Built for Otomoto.pl
A dedicated Polish scraper tuned for Otomoto.pl — its categories, price format and currency (PLN), not a generic tool pointed at it.
🚗 Complete vehicle data
Make, model, version, generation, year, mileage, fuel, gearbox, drivetrain, engine capacity and power, body type, colour, seats and doors.
💶 Structured pricing
Price and currency, whether the price is net (VAT deductible), whether it recently dropped and by how much, plus Otomoto's own price rating (below / at / above market).
📍 Precise location
City, region and exact latitude/longitude of the listing, ready for mapping and regional analysis.
✅ Trust signals
Otomoto verification and CEPIK (Polish vehicle registry) verification flags, accident-free, first-owner, service-record, registration and import status.
🔒 Privacy by default
Company and dealer data only. We never collect private sellers' personal names, phone numbers or any personal contact details.
Input parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
startUrls | array | (empty) | One or more Otomoto.pl listing or search URLs. Overrides the make/model/filter settings below. |
make | string | (empty) | Car brand slug, e.g. volkswagen, bmw, toyota. Leave empty for all makes. |
model | string | (empty) | Car model slug, e.g. golf, 3-series. Requires Make to be set. |
yearFrom | integer | (empty) | Minimum production year, inclusive. |
yearTo | integer | (empty) | Maximum production year, inclusive. |
priceFrom | integer | (empty) | Minimum asking price in PLN. |
priceTo | integer | (empty) | Maximum asking price in PLN. |
mileageFrom | integer | (empty) | Minimum mileage in kilometres. |
mileageTo | integer | (empty) | Maximum mileage in kilometres. |
fuelType | string | Any | Petrol, Diesel, Hybrid, Electric, LPG, CNG or Hydrogen. |
bodyType | string | Any | Sedan, Estate, Hatchback, SUV, Coupé, Cabriolet, Van, Minivan, Bus or Pickup. |
gearbox | string | Any | Manual or Automatic. |
sortBy | string | Default | Newest first, Price low→high, Price high→low, Mileage low→high, or Year newest first. |
conditionDamaged | boolean | true | When disabled, only undamaged cars are returned. |
maxResults | integer | 5 | Maximum number of car listings to return. |
fetchDetails | boolean | false | Fetch each listing's detail page for the full description, equipment, all photos, GPS and 25+ extra fields. |
requestDelayMs | integer | 1500 | Minimum delay between requests in milliseconds. |
Output schema
Fields the source does not publish for a given car are returned as null rather than omitted.
Always present (every run)
| Field | Type | Description |
|---|---|---|
id | string | Unique Otomoto listing ID. |
title | string | Listing title. |
url | string | Direct link to the listing. |
shortDescription | string | Short teaser line from the search card. |
make / makeDisplay | string | Brand slug and display name. |
model / modelDisplay | string | Model slug and display name. |
version | string | Version / trim (null when not published). |
year | number | Production year. |
mileageKm | number | Mileage in kilometres. |
fuelType | string | Fuel type. |
engineCapacityCc | number | Engine capacity in cc. |
enginePowerHp | number | Engine power in hp. |
gearbox | string | Manual or automatic. |
priceValue | number | Asking price. |
priceCurrency | string | Currency code (PLN). |
priceIsNet | boolean | True if the price is net (VAT deductible). |
priceDrop | number | Recent price-drop percentage (null if no drop). |
priceDropLowestPrice | number | Lowest price reached after the drop, in PLN (null if no drop). |
priceEvaluationIndicator | string | Otomoto's price rating: BELOW, IN, ABOVE or NONE. |
city / region | string | Listing city and region. |
sellerName | string | Dealer / company name (null for private sellers — personal names are never collected). |
sellerType | string | PROFESSIONAL or PRIVATE. |
cepikVerified | boolean | Verified against the Polish CEPIK vehicle registry. |
isHighlighted / isPromoted | boolean | Paid listing placement flags. |
bumpDate | string | Last time the listing was bumped (null if never bumped). |
createdAt | string | When the listing was published. |
source | string | Always otomoto.pl. |
contentHash | string | Stable 16-char fingerprint of id + price + mileage for change detection. |
scrapedAt | string | ISO timestamp of scraping. |
With fetchDetails: true
| Field | Type | Description |
|---|---|---|
generation | string | Model generation, e.g. "F39 (2017-2023)". |
condition | string | New or used. |
transmission | string | Drivetrain, e.g. front-wheel, all-wheel-permanent. |
bodyType | string | Body style. |
countryOrigin | string | Country of origin code. |
nrSeats / doorCount | number | Seats and doors. |
color / colourType | string | Colour and finish (e.g. metallic, pearl). |
damaged | boolean | Declared as damaged. |
noAccident | boolean | Declared accident-free. |
isRegistered | boolean | Registered in Poland. |
isOriginalOwner | boolean | First owner. |
hasVin / hasRegistrationDoc / hasServiceRecord | boolean | Documentation flags. |
financingAvailable / leasingAvailable | boolean | Finance / leasing offered. |
isVintage | boolean | Historic / classic vehicle. |
isImported | boolean | Imported car. |
verifiedCar | boolean | Otomoto-verified listing. |
co2Emissions | number | CO2 in g/km (null if not published). |
urbanConsumption / extraUrbanConsumption / avgConsumption | number | Fuel consumption, l/100km (published only for some cars). |
autonomyKm | number | Electric range in km (electric vehicles only). |
latitude / longitude | number | GPS coordinates of the listing area. |
descriptionHtml / descriptionText / descriptionMarkdown | string | Full description in three formats. |
imageUrls | array | All photo URLs. |
equipment | array | Equipment and options list. |
sellerUrl | string | Dealer profile URL. |
sellerNumberOfAds | number | Dealer's active listing count. |
updatedAt / originalCreatedAt | string | Listing update and original-publish timestamps. |
Example record
{"id": "6149219292","title": "Mitsubishi ASX 1.6 ClearTec 2WD Diamant Edition","url": "https://www.otomoto.pl/osobowe/oferta/mitsubishi-asx-ID6I9x2c.html","shortDescription": "1.6 MIVEC DIAMANT LIFT Bezkolizyjny","make": "mitsubishi","makeDisplay": "Mitsubishi","model": "asx","modelDisplay": "ASX","version": "1.6 ClearTec 2WD Diamant Edition","generation": "F39 (2017-2023)","year": 2018,"condition": "used","mileageKm": 124000,"fuelType": "petrol","engineCapacityCc": 1590,"enginePowerHp": 117,"gearbox": "manual","transmission": "front-wheel","bodyType": "SUV","countryOrigin": "d","priceValue": 55555,"priceCurrency": "PLN","priceIsNegotiable": false,"priceIsNet": false,"priceDrop": 3.9,"priceDropLowestPrice": 55555,"priceEvaluationIndicator": "IN","nrSeats": 5,"doorCount": 5,"color": "Szary","colourType": "Perłowy","damaged": false,"noAccident": true,"isRegistered": true,"isOriginalOwner": true,"hasVin": true,"hasServiceRecord": true,"isImported": true,"verifiedCar": false,"cepikVerified": false,"co2Emissions": 136,"urbanConsumption": 7.0,"extraUrbanConsumption": 4.4,"city": "Końskie","region": "Świętokrzyskie","latitude": 51.19163,"longitude": 20.40866,"sellerName": "PREMIUM-CARS","sellerType": "PROFESSIONAL","sellerNumberOfAds": 20,"isPromoted": false,"createdAt": "2026-07-10T06:11:34Z","equipment": ["Apple CarPlay", "Android Auto", "Bluetooth", "Klimatyzacja"],"imageUrls": ["https://ireland.apollo.olxcdn.com/v1/files/..."],"source": "otomoto.pl","contentHash": "ef4698ebe9f37bfa","scrapedAt": "2026-07-10T06:13:43.352Z"}
Examples
All BMWs, newest first:
{"make": "bmw","sortBy": "newest","maxResults": 100}
Cheap diesel estates, full detail:
{"bodyType": "kombi","fuelType": "diesel","priceTo": 40000,"sortBy": "price_asc","fetchDetails": true,"maxResults": 200}
Scrape a specific search URL:
{"startUrls": [{ "url": "https://www.otomoto.pl/osobowe/audi/a4?search%5Bfilter_float_year%3Afrom%5D=2019" }],"maxResults": 200}
Daily price monitoring (run on a schedule):
{"make": "volkswagen","model": "golf","sortBy": "newest","fetchDetails": true,"maxResults": 500}
Schedule this input in the Apify Scheduler to track prices, price drops and new listings over time. Use contentHash to detect changed records between runs.
💰 Pricing
$0.97 per 1,000 results — you only pay for successfully retrieved listings. Failed retries are never charged.
| Results | Cost |
|---|---|
| 100 | ~$0.10 |
| 1,000 | ~$0.97 |
| 10,000 | ~$9.70 |
| 100,000 | ~$97.00 |
Flat-rate alternatives typically charge $29–$49/month regardless of usage.
Subscription tiers lower the rate further, down to $0.79 per 1,000 at the highest tier. Use the Max results cap in the input to control your spend exactly.
Performance
| Run size | Typical time |
|---|---|
| 100 results | under 1 minute |
| 1,000 results | 2–4 minutes |
| 10,000 results | 20–35 minutes |
Detail mode (fetchDetails: true) fetches one extra page per car, so runs take longer but return the full field set.
Known limitations
- Detail-only fields (equipment, GPS, full description, generation, condition, consumption and the boolean flags) require
fetchDetails: true. Without it, only the search-card fields are returned. - Fuel consumption, CO2 and electric range are published by Otomoto only for some cars — expect
nullon a share of records. - VIN and exact registration date are encrypted at source and are not usable, so we expose only the
hasVinandhasRegistrationDocflags rather than false values. - Private sellers' personal names and any phone numbers are never collected, by policy.
- Prices and stock change constantly; records reflect the moment of scraping, and cars can sell or be withdrawn at any time.
Technical details
- Source: Otomoto.pl — Polish car marketplace
- Coverage: the full
/osobowe(passenger cars) catalogue, filterable via the input parameters above - Retry: automatic retry on network errors with exponential backoff
Need a custom scraper?
Unfenced Group builds Apify actors for any website — for free.
If the site you need isn't in our portfolio yet, just ask. We scope, build, and publish it at no cost to you. You only pay for results — we absorb the compute and proxy costs ourselves. Same pay-per-result pricing, same quality, same standards as every actor in this portfolio.
Get in touch: www.unfencedgroup.nl