nvNeuralVerge
E-commerce & Marketplaces

OLX Search API — Find Ads by Keyword, Category, Price & Location

Send a keyword and this source searches live OLX ads and returns the matches as data: title, price, location, seller, attributes and photos for each ad.

Example response
{
  "session_id": "11111111-1111-1111-1111-111111111111",
  "kind": "olx_offers_search",
  "domain": "olx.pl",
  "max_items": 2,
  "start_page": 1,
  "partial": false,
  "human": "# OLX offers search\n\n- **Domain:** olx.pl\n- **Max items:** 2\n- **Starting page:** 1\n- **Records returned:** 2\n- **Proxy traffic:** 70.8 KB",
  "machine": {
    "total_items": 2,
    "total_available": null,
    "first_item": {
      "id": "1101702811",
      "url": "https://www.olx.pl/d/oferta/lozko-jednoosobowe-z-drewna-afrykanskiego-90x200-CID628-ID1cyDeb.html",
      "offer_title": "łóżko jednoosobowe z drewna afrykańskiego 90x200",
      "description": "witam, mam na sprzedaż łóżko jednoosobowe, robione na zamówienie z drewna afrykańskiego.\n\nPosiada drobne ślady użytkowania, jest wytrzymałe dzięki deskom pod materacem.\n\nŁóżko zostało odkurzone oraz p",
      "status": "active",
      "offer_type": "offer",
      "is_business": false,
      "price": 900,
      "previous_price": null,
      "currency": "PLN",
      "price_label": "900 zł",
      "is_negotiable": true,
      "is_price_arranged": true,
      "salary_from": null,
      "salary_to": null,
      "salary_currency": null,
      "salary_period": null,
      "is_salary_gross": null,
      "created_at": 1790779889,
      "refreshed_at": 1790780328,
      "pushed_at": null,
      "omnibus_pushed_at": null,
      "expires_at": 1793372198,
      "category_id": "1920",
      "category_type": "house_and_garden",
      "location": {
        "city_id": "72583",
        "city": "Sanok",
        "city_alias": "sanok",
        "district_id": null,
        "district": null,
        "region_id": "17",
        "region": "Podkarpackie",
        "region_alias": "podkarpackie",
        "latitude": 49.55815,
        "longitude": 22.20117,
        "radius": 4,
        "zoom": 12,
        "is_detailed": false
      },
      "seller": {
        "id": "2361055558",
        "uuid": "5ffe6c78-223e-481b-b603-0e1f44929d95",
        "name": "rotting_vamp",
        "company_name": null,
        "about": null,
        "image": null,
        "alias": null,
        "has_business_page": false,
        "is_online": false,
        "created_at": 1720711109,
        "last_seen_at": 1790779889,
        "social_network_account_type": null,
        "has_other_offers": true
      },
      "contact_name": "rotting_vamp",
      "attributes": [
        {
          "key": "state",
          "name": "Stan",
          "type": "select",
          "values": [
            "used"
          ],
          "label": "Używane"
        },
        {
          "key": "furniturebrand",
          "name": "Marka",
          "type": "select",
          "values": [
            "other"
          ],
          "label": "Pozostałe"
        }
      ],
      "key_attributes": [],
      "images": [
        "https://ireland.apollo.olxcdn.com:443/v1/files/lfrbr1vynnbe3-PL/image;s=4032x3024",
        "https://ireland.apollo.olxcdn.com:443/v1/files/59cnd2kr0wfu-PL/image;s=4032x3024"
      ],
      "is_highlighted": false,
      "is_top_ad": false,
      "is_promoted": false,
      "is_b2c_ad": false,
      "promotion_options": [],
      "has_phone": false,
      "has_chat": true,
      "has_negotiation": true,
      "has_delivery": false,
      "delivery_mode": "NotEligible",
      "has_gpsr_info": true,
      "is_phone_protected": true,
      "external_url": null,
      "partner_code": null,
      "shop_alias": null
    },
    "items": [
      {
        "id": "1101702811",
        "url": "https://www.olx.pl/d/oferta/lozko-jednoosobowe-z-drewna-afrykanskiego-90x200-CID628-ID1cyDeb.html",
        "offer_title": "łóżko jednoosobowe z drewna afrykańskiego 90x200",
        "description": "witam, mam na sprzedaż łóżko jednoosobowe, robione na zamówienie z drewna afrykańskiego.\n\nPosiada drobne ślady użytkowania, jest wytrzymałe dzięki deskom pod materacem.\n\nŁóżko zostało odkurzone oraz p",
        "status": "active",
        "offer_type": "offer",
        "is_business": false,
        "price": 900,
        "previous_price": null,
        "currency": "PLN",
        "price_label": "900 zł",
        "is_negotiable": true,
        "is_price_arranged": true,
        "salary_from": null,
        "salary_to": null,
        "salary_currency": null,
        "salary_period": null,
        "is_salary_gross": null,
        "created_at": 1790779889,
        "refreshed_at": 1790780328,
        "pushed_at": null,
        "omnibus_pushed_at": null,
        "expires_at": 1793372198,
        "category_id": "1920",
        "category_type": "house_and_garden",
        "location": {
          "city_id": "72583",
          "city": "Sanok",
          "city_alias": "sanok",
          "district_id": null,
          "district": null,
          "region_id": "17",
          "region": "Podkarpackie",
          "region_alias": "podkarpackie",
          "latitude": 49.55815,
          "longitude": 22.20117,
          "radius": 4,
          "zoom": 12,
          "is_detailed": false
        },
        "seller": {
          "id": "2361055558",
          "uuid": "5ffe6c78-223e-481b-b603-0e1f44929d95",
          "name": "rotting_vamp",
          "company_name": null,
          "about": null,
          "image": null,
          "alias": null,
          "has_business_page": false,
          "is_online": false,
          "created_at": 1720711109,
          "last_seen_at": 1790779889,
          "social_network_account_type": null,
          "has_other_offers": true
        },
        "contact_name": "rotting_vamp",
        "attributes": [
          {
            "key": "state",
            "name": "Stan",
            "type": "select",
            "values": [
              "used"
            ],
            "label": "Używane"
          },
          {
            "key": "furniturebrand",
            "name": "Marka",
            "type": "select",
            "values": [
              "other"
            ],
            "label": "Pozostałe"
          }
        ],
        "key_attributes": [],
        "images": [
          "https://ireland.apollo.olxcdn.com:443/v1/files/lfrbr1vynnbe3-PL/image;s=4032x3024",
          "https://ireland.apollo.olxcdn.com:443/v1/files/59cnd2kr0wfu-PL/image;s=4032x3024"
        ],
        "is_highlighted": false,
        "is_top_ad": false,
        "is_promoted": false,
        "is_b2c_ad": false,
        "promotion_options": [],
        "has_phone": false,
        "has_chat": true,
        "has_negotiation": true,
        "has_delivery": false,
        "delivery_mode": "NotEligible",
        "has_gpsr_info": true,
        "is_phone_protected": true,
        "external_url": null,
        "partner_code": null,
        "shop_alias": null
      },
      {
        "id": "1101703881",
        "url": "https://www.olx.pl/d/oferta/iphone-15-pro-max-256gb-granatowy-bateria-100-w-pelni-sprawny-CID99-ID1cyDwr.html",
        "offer_title": "IPhone 15 Pro Max 256gb Granatowy - BATERIA 100% - W PEŁNI SPRAWNY",
        "description": "Używany iPhone 15 Pro Max 256gb w kolorze granatowym. Bateria w stanie 100%. Telefon w pełni sprawny.",
        "status": "active",
        "offer_type": "offer",
        "is_business": false,
        "price": 2199,
        "previous_price": null,
        "currency": "PLN",
        "price_label": "2 199 zł",
        "is_negotiable": false,
        "is_price_arranged": false,
        "salary_from": null,
        "salary_to": null,
        "salary_currency": null,
        "salary_period": null,
        "is_salary_gross": null,
        "created_at": 1790780184,
        "refreshed_at": 1790780327,
        "pushed_at": null,
        "omnibus_pushed_at": null,
        "expires_at": 1793372184,
        "category_id": "2298",
        "category_type": "electronics",
        "location": {
          "city_id": "17871",
          "city": "Warszawa",
          "city_alias": "warszawa",
          "district_id": "353",
          "district": "Mokotów",
          "region_id": "2",
          "region": "Mazowieckie",
          "region_alias": "mazowieckie",
          "latitude": 52.19282,
          "longitude": 21.03232,
          "radius": 7,
          "zoom": 13,
          "is_detailed": false
        },
        "seller": {
          "id": "74324234",
          "uuid": "3595a316-132c-49d6-895b-e795a43bdf05",
          "name": "Jarek",
          "company_name": null,
          "about": null,
          "image": null,
          "alias": null,
          "has_business_page": false,
          "is_online": false,
          "created_at": 1504969056,
          "last_seen_at": 1790780096,
          "social_network_account_type": "facebook",
          "has_other_offers": true
        },
        "contact_name": "Jarek",
        "attributes": [
          {
            "key": "state",
            "name": "Stan",
            "type": "select",
            "values": [
              "used"
            ],
            "label": "Używane"
          },
          {
            "key": "phonemodel",
            "name": "Model telefonu",
            "type": "select",
            "values": [
              "iphone-15-pro-max"
            ],
            "label": "iPhone 15 Pro Max"
          }
        ],
        "key_attributes": [],
        "images": [
          "https://ireland.apollo.olxcdn.com:443/v1/files/lbtwtgoj9afx-PL/image;s=1000x1000",
          "https://ireland.apollo.olxcdn.com:443/v1/files/t1wyxf0tvjnq-PL/image;s=1000x1000"
        ],
        "is_highlighted": false,
        "is_top_ad": false,
        "is_promoted": false,
        "is_b2c_ad": false,
        "promotion_options": [],
        "has_phone": false,
        "has_chat": true,
        "has_negotiation": false,
        "has_delivery": true,
        "delivery_mode": "BuyWithDelivery",
        "has_gpsr_info": true,
        "is_phone_protected": false,
        "external_url": null,
        "partner_code": null,
        "shop_alias": null
      }
    ],
    "proxy_traffic_bytes": 72549
  },
  "total_points": 2
}
You send
A keyword, with optional category, price, condition, seller type, location, delivery and sort filters
You get back
Matching ads with title, price, location, seller, attributes and photos
Coverage
Live public ads on the OLX marketplaces for Poland, Ukraine, Romania, Bulgaria, Portugal, Kazakhstan and Uzbekistan.
Price
1 point per returned result, up to 500 per request — $1 per 1,000
Billed per record actually returned, capped by max_items. A request that returns nothing costs nothing.
Comparison

Ways to get this data

Three approaches teams use today, and where each one runs into trouble.

ApproachWhat it takesCostTrade-off
Browsing OLX by handSet filters in the browser, scroll, copyFree, and slow beyond a quick checkNobody keeps a list current this way
Building a scraperWrite it, host it, and repair it when OLX changes its pagesEngineering timeA maintenance commitment for something that isn't your product
NeuralVergeOne request, keyword and filters as parameters$1 per 1,000 returned resultsA broad keyword with no filters returns a lot of ads you may not want, and you pay per ad returned
Response

What you get back

Every field in the response shown above.

FieldTypeDescription
total_itemsnumberHow many ads were returned in this batch (capped by max_items).
total_availablenumberTotal matching ads. null in the sample, so don't rely on it.
first_itemobjectThe first ad, repeated from items.
itemsarrayThe returned ads. Each has the keys below.
idstringOLX offer ID.
urlstringDirect link to the ad.
offer_titlestringAd title, in the language of the marketplace.
descriptionstringAd description text. In the sample it is cut off after a few hundred characters.
statusstringAd status, e.g. active.
offer_typestringAd type, e.g. offer.
is_businessbooleanWhether the ad was posted by a business account.
pricenumberListed price.
previous_pricenumberEarlier price, when the ad carries one. null in the sample.
currencystringISO currency code, e.g. PLN.
price_labelstringPrice as displayed on the ad.
is_negotiablebooleanWhether the ad is marked negotiable.
is_price_arrangedbooleanWhether the ad carries the price-arranged flag.
salary_fromnumberSalary fields (salary_from, salary_to, salary_currency, salary_period, is_salary_gross). All null on the non-job ad in the sample.
created_atnumberUnix timestamp the ad was created.
refreshed_atnumberUnix timestamp the ad was last refreshed.
pushed_atnumberUnix timestamp of the last push, when there is one. null in the sample.
expires_atnumberUnix timestamp the ad expires.
category_idstringOLX category ID the ad is filed under.
category_typestringCategory type, e.g. house_and_garden.
locationobjectcity_id, city, district, region_id, region, latitude, longitude and the map radius and zoom OLX shows for the ad.
sellerobjectid, uuid, name, company_name, about, image, alias, has_business_page, is_online, created_at, last_seen_at and has_other_offers.
contact_namestringContact name shown on the ad.
attributesarrayCategory-specific attributes, each with key, name, type, values and label (e.g. condition, brand).
imagesarrayPhoto URLs.
is_highlightedbooleanPromotion flags (is_highlighted, is_top_ad, is_promoted, is_b2c_ad), with any promotion_options listed in an array.
has_phonebooleanContact flags (has_phone, has_chat, has_negotiation, is_phone_protected). Whether the ad offers each.
has_deliverybooleanWhether the ad offers OLX delivery.
delivery_modestringDelivery eligibility, e.g. NotEligible.
external_urlstringLink to an external page, when the ad has one. null in the sample.
Integration

How to run it

The same lookup works from the app, the API, or as a tool an agent can call mid-task.

All parameters are optional. max_items caps the result count (up to 500, defaults to 25) and sets what you are billed for. Each page holds 50 ads and start_page can go up to 20. category_id, region_id and city_id come from the OLX categories and OLX regions sources.

curl -X POST https://api.neuralverge.ai/functions/v1/run-olx-offers-search \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "keyword": "iphone", "max_items": 25, "sort": "newest", "condition": "used", "min_price": 500 }'
Use cases

What teams use it for

Where this field shows up in an actual workflow.

Price monitoring

Track asking prices for a product type, sorted by price or newest first.

Local supply checks

Combine region or city with a distance to see what is listed near a place.

Business vs private sellers

Filter by seller type to separate shops from individuals.

Finding offer IDs

Collect IDs to feed into OLX offer, or seller IDs for OLX user.

Coverage & limits

Coverage, freshness and limits

What this source covers, how fresh it is, and where it stops.

Coverage

Live public ads on the OLX marketplaces for Poland, Ukraine, Romania, Bulgaria, Portugal, Kazakhstan and Uzbekistan.

Freshness

Searched at request time.

Handling

This source returns publicly visible search results, stamped with the keyword and domain it was read from and a session id you can trace. Ads can name private individuals, so keep seller details under your own data-protection rules.

What it will not do
  • —Promoted ads can affect result order the way they do on the site.
  • —Descriptions in results are previews, and attribute sets vary by category.
  • —total_available is not always populated, so you can't count on it to size a result set.
FAQ

Questions, answered

Yes. Use category_id, region_id, city_id, district_id and distance. Get the IDs from the OLX categories and OLX regions sources.

Related

Related sources

Try olx offers search on your own data

One request format across every source in the catalog.

Get started