OLX Ad Data API — Price, Location, Photos & Seller by Offer ID
Send an OLX offer ID or ad URL and this source returns the ad as structured data: title, description, price, location with coordinates, photos, category attributes and the seller behind it.
{
"session_id": "11111111-1111-1111-1111-111111111111",
"kind": "olx_offer",
"domain": "olx.pl",
"offer": "1101702811",
"offer_id": "1101702811",
"human": "# OLX offer\n\n- **domain:** olx.pl\n- **offer:** 1101702811\n- **Proxy traffic:** 3.1 KB\n- **Title:** łóżko jednoosobowe z drewna afrykańskiego 90x200\n- **URL:** https://www.olx.pl/d/oferta/lozko-jednoosobowe-z-drewna-afrykanskiego-90x200-CID628-ID1cyDeb.html\n- **Status:** active\n- **Price:** 900 zł negotiable\n- **Location:** Sanok, Podkarpackie",
"machine": {
"offer": {
"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
},
"proxy_traffic_bytes": 3156
},
"total_points": 5
}- You send
- An OLX offer ID or ad URL, and the marketplace domain (defaults to olx.pl)
- You get back
- Price, description, location with coordinates, photos, attributes and seller
- Coverage
- Public ads on the OLX marketplaces for Poland, Ukraine, Romania, Bulgaria, Portugal, Kazakhstan and Uzbekistan.
- Price
- 5 pts — $5 per 1,000
- Charged only when the ad or profile resolves. An ID or URL that doesn't resolve is not billed.
Ways to get this data
Three approaches teams use today, and where each one runs into trouble.
| Approach | What it takes | Cost | Trade-off |
|---|---|---|---|
| Checking the ad by hand | Open the page and read it | Free, and slow | Fine for one, unworkable across a list |
| Building a scraper | Write it, host it, and repair it when OLX changes its pages | Engineering time | A maintenance commitment for something that isn't your product |
| NeuralVerge | One request per offer | $5 per 1,000, misses not billed | Returns the ad as it reads at request time. Ads are edited, refreshed and removed by their owners |
What you get back
Every field in the response shown above.
| Field | Type | Description |
|---|---|---|
offer | object | The ad record. Its keys are listed below. |
id | string | OLX offer ID. |
url | string | Direct link to the ad. |
offer_title | string | Ad title, in the language of the marketplace. |
description | string | Ad description text. In the sample it is cut off after a few hundred characters. |
status | string | Ad status, e.g. active. |
offer_type | string | Ad type, e.g. offer. |
is_business | boolean | Whether the ad was posted by a business account. |
price | number | Listed price. |
previous_price | number | Earlier price, when the ad carries one. null in the sample. |
currency | string | ISO currency code, e.g. PLN. |
price_label | string | Price as displayed on the ad. |
is_negotiable | boolean | Whether the ad is marked negotiable. |
is_price_arranged | boolean | Whether the ad carries the price-arranged flag. |
salary_from | number | Salary fields (salary_from, salary_to, salary_currency, salary_period, is_salary_gross). All null on the non-job ad in the sample. |
created_at | number | Unix timestamp the ad was created. |
refreshed_at | number | Unix timestamp the ad was last refreshed. |
pushed_at | number | Unix timestamp of the last push, when there is one. null in the sample. |
expires_at | number | Unix timestamp the ad expires. |
category_id | string | OLX category ID the ad is filed under. |
category_type | string | Category type, e.g. house_and_garden. |
location | object | city_id, city, district, region_id, region, latitude, longitude and the map radius and zoom OLX shows for the ad. |
seller | object | id, uuid, name, company_name, about, image, alias, has_business_page, is_online, created_at, last_seen_at and has_other_offers. |
contact_name | string | Contact name shown on the ad. |
attributes | array | Category-specific attributes, each with key, name, type, values and label (e.g. condition, brand). |
images | array | Photo URLs. |
is_highlighted | boolean | Promotion flags (is_highlighted, is_top_ad, is_promoted, is_b2c_ad), with any promotion_options listed in an array. |
has_phone | boolean | Contact flags (has_phone, has_chat, has_negotiation, is_phone_protected). Whether the ad offers each. |
has_delivery | boolean | Whether the ad offers OLX delivery. |
delivery_mode | string | Delivery eligibility, e.g. NotEligible. |
external_url | string | Link to an external page, when the ad has one. null in the sample. |
How to run it
The same lookup works from the app, the API, or as a tool an agent can call mid-task.
offer is the only required field and takes an ID or a full ad URL. domain defaults to olx.pl; set it to look up an ad on another OLX marketplace. Keep seller.id from the response if you plan to run OLX user or OLX user offers next.
curl -X POST https://api.neuralverge.ai/functions/v1/run-olx-offers \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "offer": "1101702811", "domain": "olx.pl" }'What teams use it for
Where this field shows up in an actual workflow.
Read the price, condition attribute and negotiability of a specific ad.
Use the city, region and coordinates on an ad to see where stock is sitting.
Pull seller.id here, then look the seller up or list their other ads.
Re-read the same ad on a schedule to see whether the price or status changes.
Coverage, freshness and limits
What this source covers, how fresh it is, and where it stops.
Public ads on the OLX marketplaces for Poland, Ukraine, Romania, Bulgaria, Portugal, Kazakhstan and Uzbekistan.
Read at request time.
This source returns publicly visible ad information, stamped with the offer ID 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.
- —Price, status and photos reflect the moment of the request; an owner can change or remove an ad right after.
- —The description in the response is a preview, not always the full text of the ad.
- —Attributes differ by category, so not every ad carries the same set of fields.
Questions, answered
Seven: olx.pl, olx.ua, olx.ro, olx.bg, olx.pt, olx.kz and olx.uz. Set the domain field to choose; it defaults to olx.pl.
Related sources
Try olx offer on your own data
One request format across every source in the catalog.