Extract OLX.bg listings as clean JSON with zero seller personal data - euro prices in cents, full descriptions, city-level locations, business-vs-private flag. Price bands, newest-first monitoring, pay per result. Built for deal watching, market research and AI pipelines.
$1.99 / 1,000 · 100.0% success over 11 public runs in the last 30 days.
Run it on Apify → Free to try - runs bill per result on your own account.
Every field is optional unless marked; sensible defaults do the rest.
| Field | Type | What it does | Default |
|---|---|---|---|
searchQuery |
string | What to search for on OLX.bg, exactly as you would type it in the site's search box, e.g. "колело" or "iphone 15". | колело |
categoryId |
integer | Numeric OLX category id to limit the search to. Find it in the category page URL or in a previous run's categoryId output field. Empty = all categories. | - |
priceMin |
integer | Only include listings costing at least this many euros. | - |
priceMax |
integer | Only include listings costing at most this many euros. | - |
sortBy |
string | Order of results: date (newest first, best for monitoring), price_asc, price_desc, or relevance. | date |
postedAfter |
string | Only include listings posted on or after this date (YYYY-MM-DD or a full ISO timestamp). With newest-first sorting the run stops early once older listings are reached. | - |
postedBefore |
string | Only include listings posted on or before this date (YYYY-MM-DD or a full ISO timestamp). | - |
maxItems |
integer | Stop after this many listings. Free-plan runs are capped at 25 items. | 1000 |
One JSON object per result, with exactly these fields - no seller identities, no contact data, ever.
| Field | Type | Meaning |
|---|---|---|
listingId |
string | OLX listing ID. |
url |
string | Direct link to the listing. |
title |
string | Listing title as posted. |
description |
string | Full listing description as posted by the seller. |
priceCents |
integer | Asking price in euro cents. Absent when the listing has no fixed price. |
currency |
string | Always EUR when a price is present. |
negotiable |
boolean | Whether the seller marked the price as negotiable . |
postedAt |
string | When the listing was created (ISO timestamp with timezone). |
refreshedAt |
string | When the seller last refreshed/bumped the listing. |
city |
string | Listing municipality. City-level only - exact coordinates are never collected. |
region |
string | Region of the listing. |
categoryId |
integer | Numeric OLX category ID. Reusable as the categoryId input. |
attributes |
object | Whitelisted, non-personal listing attributes that vary by category - e.g. state (condition), brand, model, year and mileage for cars, area and rooms for property. Present when the listing has them. |
sellerType |
string | Whether the listing comes from a business or a private seller. The only seller-related field in the output. |
deliveryAvailable |
boolean | Whether OLX courier delivery (Przesyłka OLX) is enabled for the listing. |
imageUrls |
array | Listing photo URLs (up to 8). |
100.0% success over 11 public runs in the last 30 days. Live record, failures included: status page.
Full documentation, examples and the AI-assistant prompt live on the store page.