OLX
OLX Seller Ads API
One OLX seller's live ads by seller id on any of the seven OLX Europe sites, with the search sorts and filters (price, condition, OLX delivery, photos, location, the category's own filters) and an optional query or category. Each ad has the same fields as search: id, title, price, condition, every parameter, category, location, dates, promoted and delivery flags, photos and the seller id. Costs 1 credit per request.
Authorizations
AuthorizationstringheaderrequiredBearer authentication header of the form Bearer <token>, where <token> is your Scavio API key (e.g. Bearer sk_live_your_key).
Body
application/jsonuser_idstring | integerrequiredAn OLX seller id: items[].seller.id of a search or seller.id of an ad. Send the country of the site where you found the id.
Example: 2547532895
querystringSearch within the seller's ads, 1-200 characters.
Example: iphone 17
category_idintegerOnly the seller's ads in this category (categories[].id or an item's category_id).
Example: 2298
countryenum<string>default:plThe OLX site. Titles, parameters and labels come back in the site's language (Polish on pl; Russian by default on kz and uz), prices in its currency. When you send a url, the market follows the url.
Example: pl
pl— olx.pl, PLN, Polish. The default.ro— olx.ro, RON, Romanian.pt— olx.pt, EUR, Portuguese.bg— olx.bg, EUR, Bulgarian.ua— olx.ua, UAH, Ukrainian.kz— olx.kz, KZT, Russian by default, Kazakh with language kk.uz— olx.uz, UZS, Russian by default, Uzbek with language uz.
languageenum<string>kz and uz only. olx.kz and olx.uz answer in Russian by default; kk returns Kazakh on kz and uz returns Uzbek (Latin) on uz. A 400 on the other five sites, which answer in their own language.
Example: kk
ru— Russian, the default on kz and uz.kk— Kazakh, kz only.uz— Uzbek, uz only.
pageintegerResults page, 1-based. Defaults to 1. OLX serves the first 1,000 results of a search only, so page x page_size may not exceed 1,000 (25 pages at the default page size).
Example: 2
page_sizeintegerdefault:40Ads per page, 1-50. Promoted ads come on top of these: 40 asks return about 52 items.
Example: 40
sortenum<string>default:relevanceThe order of the ads. Promoted ads are not sorted.
relevance— The site's own order. The default.newest— Most recently posted or refreshed first, approximately: neighbouring ads can be a few minutes out of order. Sellers can refresh an ad to the top, so this is last refresh, not first posting.price_low_to_high— Cheapest first.price_high_to_low— Most expensive first.
min_pricenumberLowest price, in the site's currency.
Example: 500
max_pricenumberHighest price, in the site's currency.
Example: 2000
conditionenum<string>Item condition, in categories that have one.
new— New.used— Used.refurbished— Refurbished.damaged— Damaged.
seller_typeenum<string>Private individuals or business sellers.
private— Private sellers.business— Business sellers.
olx_deliverybooleanOnly ads that can be bought with OLX delivery (shipped through OLX). pl, ro, pt, bg and ua; a 400 on kz and uz, which have no OLX delivery.
Example: true
with_photosbooleanOnly ads with photos.
Example: true
region_idintegerOnly ads in this region: region_id of the locations endpoint or of an item's location.
Example: 2
city_idintegerOnly ads in this city: city_id of the locations endpoint or of an item's location.
Example: 17871
district_idintegerOnly ads in this district of a city: district_id of the locations endpoint.
Example: 381
distance_kmintegerWith city_id: include ads within this many km of the city. One of 0, 2, 5, 10, 15, 30, 50, 75, 100.
Example: 30
filtersobjectThe category's own filters, as the filters endpoint lists them (filters[].send_as): a range as filter_float_<name>:from / :to with a number (filter_float_year:from 2018, filter_float_milage:to 100000, filter_float_m:from 40), a choice as filter_enum_<name> with one value id or a list (filter_enum_rooms ["two", "three"]). Up to 20 keys; other keys are a 400.
Example: {"filter_float_m:from": 40, "filter_enum_rooms": ["two"]}
include_promotedbooleandefault:trueKeep the promoted ads the site places on each page. Each is flagged is_promoted with promoted_position, its slot on the page.
Example: false
Request
from scavio import ScavioClient
client = ScavioClient(api_key="sk_live_your_key")
# Snapshot a competitor shop's catalogue, cheapest first.
res = client.olx.seller_ads(user_id=2547532895, sort="price_low_to_high", page_size=50)["data"]
print(res["total"], "live ads")
for ad in res["items"]:
print(ad["id"], ad["price"]["value"], ad["condition"], ad["title"])Response