Otomoto Listing Lookup — Poland's Dominant Car Marketplace API
Pricing
from $1.50 / 1,000 successful lookups
Otomoto Listing Lookup — Poland's Dominant Car Marketplace API
Look up vehicle listings on otomoto.pl, Poland's dominant car marketplace, by URL. Get price, make, model, year, mileage, fuel type, engine, gearbox, condition, seller type, and city. Pay only for listings that resolve.
Pricing
from $1.50 / 1,000 successful lookups
Rating
0.0
(0)
Developer
Adrian Voss
Maintained by CommunityActor stats
1
Bookmarked
2
Total users
1
Monthly active users
2 hours ago
Last modified
Categories
Share
Otomoto Listing Lookup
Look up any vehicle listing on otomoto.pl, Poland's dominant
car marketplace, by URL — price, make, model, year, mileage, fuel type, engine,
gearbox, body type, condition, seller, and location. The listing's full detail set is
embedded server-side in a __NEXT_DATA__ JSON payload, so this reads structured data
directly rather than scraping rendered HTML.
Features
- URL → full listing record. Title, price, currency, and status straight from the page's own data, not parsed from visible text.
- Full vehicle spec. Make, model, year, mileage, fuel type, engine power and capacity, gearbox, body type, color, condition, and accident-free flag.
- Seller & location. Seller type (private/dealer), seller name, city, region, and photo count.
- Pay only for hits. Listings that don't resolve — sold, removed, or malformed URLs — cost nothing; see Pricing.
- Built for bulk. Feed in thousands of listing URLs; concurrency, keyword filtering, and column selection are all configurable.
How to use Otomoto Listing Lookup — Poland's Dominant Car Marketplace API
- In the Apify Console. Open the actor page and click Start — the
listingUrlsfield is already pre-filled with a working example. Results land in the run's dataset as soon as each item is found. - Via the API. Call it directly with a POST request — no Console needed once you have an API token:
curl "https://api.apify.com/v2/acts/accountable_eel~otomoto-listing-lookup/run-sync-get-dataset-items?token=<YOUR_TOKEN>" \-X POST \-H "Content-Type: application/json" \-d '{"listingUrls":["https://www.otomoto.pl/osobowe/oferta/bmw-seria-5-ID6I3va0.html"]}'
- On a schedule. Save this actor as an Apify Task with the input you want, then add a Schedule (hourly, daily, weekly) so it runs on its own — no server of your own required.
Input
{"listingUrls": ["https://www.otomoto.pl/osobowe/oferta/bmw-seria-5-ID6I3va0.html"]}
One otomoto.pl vehicle listing URL per line (the /osobowe/oferta/... page). Accepted formats: https://www.otomoto.pl/osobowe/oferta/bmw-seria-5-ID6I3va0.html.
{"listingUrls": ["https://www.otomoto.pl/osobowe/oferta/bmw-seria-5-ID6I3va0.html"],"testRun": false,"onlyFound": false,"maxConcurrency": 5}
listingUrls is a list of otomoto.pl vehicle listing URLs (the /osobowe/oferta/...
page). One dataset row is returned per URL; rows with "found": false are never
charged. Turn on testRun to try your list against just the first 5 URLs before
running the full batch. Optional includeKeywords / excludeKeywords filter rows by
content, maxResults caps the run early, and columns lets you pick which fields to
return. proxyConfiguration defaults to Residential proxies — this is a defended
marketplace at scale, so a plain datacenter IP risks getting blocked.
Output
| query | found | status | title | price | currency | make | model | year | mileageKm | fuelType | enginePower | engineCapacity | gearbox | bodyType | color | condition | accidentFree | sellerType | sellerName | city | region | photoCount | listingId | url | scrapedAt |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| https://www.otomoto.pl/osobowe/oferta/bmw-seria-5-ID6I3va0.html | true | OK | BMW Seria 5 | 49000 | PLN | BMW | Seria 5 | 2019 | 98000 | Benzyna | 245 KM | 1 998 cm3 | Automatyczna | Sedan | Biały | Używany | true | PRIVATE | Olek | Wrocław | Dolnośląskie | 10 | 6147794388 | https://www.otomoto.pl/osobowe/oferta/bmw-seria-5-ID6I3va0.html | 2026-08-31T07:10:15.700Z |
One row per listing URL, for example:
{"query": "https://www.otomoto.pl/osobowe/oferta/bmw-seria-5-ID6I3va0.html","found": true,"status": "OK","listingId": "6I3va0","title": "BMW Seria 5 520d xDrive","url": "https://www.otomoto.pl/osobowe/oferta/bmw-seria-5-ID6I3va0.html","price": 129900,"currency": "PLN","make": "BMW","model": "Seria 5","year": 2019,"mileageKm": 98000,"fuelType": "Diesel","enginePower": "190 KM","engineCapacity": "1995 cm3","gearbox": "Automatyczna","bodyType": "Sedan","color": "Czarny","condition": "Używane","accidentFree": true,"sellerType": "Dealer","sellerName": "Auto Centrum Warszawa","city": "Warszawa","region": "mazowieckie","photoCount": 24,"scrapedAt": "2026-08-21T10:00:00.000Z"}
Listings that no longer exist — sold or removed — still get a row ("found": false,
"status": "NOT_FOUND"), so you always get one row per input URL, but you're never
charged for those.
Use cases
- Price monitoring — track asking prices on a watchlist of listings over time.
- Inventory enrichment — attach full vehicle spec to a list of listing URLs pulled from search results or a lead list.
- Dealer research — compare seller type, pricing, and mileage across listings from a specific dealer or region.
- Market analysis — build a dataset of make/model/year/price combinations for valuation or trend work.
- Listing health checks — confirm which URLs in a saved list are still live before reaching out to a seller.
Pricing
$3 per 1,000 listings, plus a $0.00005 start fee. Misses (found:false) are never charged.
Use it from Clay, n8n, Make, or an AI agent
This actor runs synchronously over plain HTTP — call it directly from a script, a workflow tool, or an AI agent, no Apify Console needed once you have an API token.
curl "https://api.apify.com/v2/acts/accountable_eel~otomoto-listing-lookup/run-sync-get-dataset-items?token=<YOUR_TOKEN>" \-X POST \-H "Content-Type: application/json" \-d '{"listingUrls":["https://www.otomoto.pl/osobowe/oferta/bmw-seria-5-ID6I3va0.html"]}'
n8n. Add an HTTP Request node: Method POST, URL https://api.apify.com/v2/acts/accountable_eel~otomoto-listing-lookup/run-sync-get-dataset-items?token=<YOUR_TOKEN>, Body Content Type JSON, JSON Body {"listingUrls":["https://www.otomoto.pl/osobowe/oferta/bmw-seria-5-ID6I3va0.html"]} (swap in an expression from an earlier node for a real value).
Clay. Add an "HTTP API" column: Method POST, URL https://api.apify.com/v2/acts/accountable_eel~otomoto-listing-lookup/run-sync-get-dataset-items?token=<YOUR_TOKEN>, Body {"listingUrls":["{{listing}}"]}, mapping the row's listing into the listingUrls array.
MCP. In Claude, Cursor, or any MCP client with the Apify MCP server, ask for "Otomoto.pl API — Car Listing Data by URL" — the agent will find and run this actor.
FAQ
Do I need to log in to Otomoto to look up a listing? No. This actor reads the listing's own embedded page data over a plain HTTP request — no account or API key involved.
What happens if a listing has sold or been removed?
You get a dataset row with "found": false and "status": "NOT_FOUND" — Otomoto
returns HTTP 404 or 410 for gone listings, and that row is never charged.
Why does this default to Residential proxies?
Otomoto is a large, actively defended marketplace. A plain datacenter IP risks getting
blocked at any real volume, so Residential is the safer default — you can override it
in proxyConfiguration if you have your own proxy setup.
Can I look up listings in bulk?
Yes. Turn on testRun first to sanity-check your list against 5 URLs, then run the
full batch — maxConcurrency controls how many requests run in parallel (keep it
conservative; this target has no browser fallback, so getting blocked costs more than
slow-and-steady).
What URL format does it accept?
The full listing page URL, e.g.
https://www.otomoto.pl/osobowe/oferta/bmw-seria-5-ID6I3va0.html. A bare listing slug
also works — it gets expanded to the full URL automatically.
Does the price field include currency conversion?
No — price and currency are returned exactly as Otomoto lists them (almost always
PLN), with no conversion applied.