Onliner APIcatalog.onliner.by ↗
Access Onliner.by product data via API: search products, get offers from multiple shops, price history, reviews, and category listings.
What is the Onliner API?
The Onliner.by Catalog API covers 7 endpoints for querying Belarus's largest product catalog, returning structured product data including prices, shop offers, user reviews, and historical price trends. The search_products endpoint accepts a keyword query and returns paginated results with per-product price ranges, review summaries, and full specifications. Use get_product_price_history to retrieve daily minimum prices across 2-month or 12-month windows.
curl -X GET 'https://api.parse.bot/scraper/3ea1bc18-1b5b-49a5-b64f-6604a5b44569/search_products?page=1&limit=10&query=iphone' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace catalog-onliner-by-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
from parse_apis.onliner_catalog_api import Onliner, Period
onliner = Onliner()
# Search for products
for product in onliner.products.search(query="samsung galaxy", limit=5):
print(product.name, product.full_name, product.prices.price_min.amount)
# Get full details for a specific product
phone = onliner.product(key="iphone17256bk")
history = phone.price_history.get(period=Period.TWO_MONTHS)
print(history.prices.current.amount, history.prices.min.amount, history.chart_data.currency)
# Browse reviews
for review in phone.reviews.list(limit=3):
print(review.summary, review.rating, review.author.name, review.created_at)
# List offers from shops
for offer in phone.offers.list(limit=5):
print(offer.position_price.amount, offer.warranty, offer.shipping.term)
# Browse category
for item in onliner.products.by_category(category_key="mobile", limit=3):
print(item.key, item.review_stats.count, item.review_stats.rating)
Full-text search over the Onliner.by catalog. Returns paginated product listings sorted by relevance. Each product includes pricing range, review summary, and category info. Pagination via integer page counter; max 100 pages returned regardless of total matches.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination. |
| queryrequired | string | Search query string (e.g. 'iphone', 'samsung galaxy'). |
{
"type": "object",
"fields": {
"page": "object with pagination info: limit, items, current, last",
"total": "integer total number of matching products",
"products": "array of product summary objects with id, key, name, full_name, prices, reviews, manufacturer"
},
"sample": {
"data": {
"page": {
"last": 100,
"items": 10,
"limit": 10,
"current": 1
},
"total": 16027,
"products": [
{
"id": 4943088,
"key": "iphone17256bk",
"name": "iPhone 17 256GB",
"prices": {
"offers": {
"count": 46
},
"price_max": {
"amount": "3531.51",
"currency": "BYN"
},
"price_min": {
"amount": "2650.00",
"currency": "BYN"
}
},
"status": "active",
"reviews": {
"count": 31,
"rating": 45
},
"full_name": "Apple iPhone 17 256GB",
"description": "iOS, screen 6.3\"",
"manufacturer": {
"id": 225,
"key": "apple",
"name": "Apple"
}
}
]
},
"status": "success"
}
}About the Onliner API
Product Search and Lookup
The search_products endpoint accepts a query string (for example, 'iphone' or 'samsung galaxy') and an optional page integer for pagination. Each result in the products array includes a unique key field — used as the primary identifier across all other endpoints — along with name, full_name, prices (containing price_min and price_max), reviews (rating and count), and a description string. The page object in the response carries limit, items, current, and last for navigating large result sets. The search_autocomplete endpoint serves the same purpose for partial queries, returning a lighter product array suitable for suggestion UIs.
Product Details and Offers
get_product returns the full record for a single item identified by product_key, including a manufacturer object with name and legal info, a status string, and the prices and reviews summaries. To retrieve per-shop pricing, use get_product_offers: the response contains a shops map (keyed by shop_id) with each shop's title, logo, work hours, and physical addresses, alongside a positions.primary array that lists individual offers with price, warranty terms, delivery info, and stock status.
Reviews and Price History
get_product_reviews returns paginated user reviews for a product. Each review object includes rating, summary, text, pros, cons, author, and created_at. The page object follows the same pagination shape as search results. get_product_price_history accepts an optional period parameter — either '2m' or '12m' — and returns a chart_data object with a currency field and an items array of date/price pairs, plus a prices summary with current, min, and max values.
Category Browsing
get_category_products lists products within a named category using a category_key string such as 'mobile', 'notebook', or 'tv'. Results are sorted by popularity within the category and follow the same paginated product array structure as the search endpoint.
The Onliner API is a managed, monitored endpoint for catalog.onliner.by — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when catalog.onliner.by changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official catalog.onliner.by API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Track daily minimum prices for electronics using
get_product_price_historychart_data items over a 12-month window - Build a price comparison tool by aggregating shop offers from
get_product_offerspositions.primary across multiple products - Populate a product search autocomplete widget using
search_autocompletefor partial query strings - Scrape review sentiment by extracting
pros,cons, andratingfields fromget_product_reviews - Monitor stock status changes for specific products by polling
get_product_offerspositions stock_status field - Generate category-level product feeds using
get_category_productswith category keys like 'tv' or 'notebook' - Enrich product listings with manufacturer legal info and full specifications via
get_productmanufacturer and description fields
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Onliner.by have an official public developer API?+
What does `get_product_offers` return beyond just a price?+
positions.primary array where each offer includes the shop's price, warranty terms, delivery details, and stock status. The shops map provides corresponding shop metadata: title, logo, physical addresses, work hours, and review data for each seller.What time periods are supported for price history?+
get_product_price_history endpoint accepts a period parameter with two accepted values: '2m' for a two-month window and '12m' for a twelve-month window. Each period returns daily price points as date/price pairs in the chart_data.items array, along with current, minimum, and maximum price summaries.Does the API cover seller ratings or shop review counts?+
get_product_offers includes a reviews field for each shop in the shops map, but detailed individual shop reviews or seller reputation breakdowns are not a dedicated endpoint. The API covers product-level reviews via get_product_reviews and shop summary data within offer results. You can fork this API on Parse and revise it to add a dedicated shop reviews endpoint.Can I filter search results by price range, brand, or other attributes?+
search_products endpoint accepts a query string and a page integer for pagination; there are no filter parameters for price range, brand, or category in the current specification. The API covers keyword search and category browsing via get_category_products. You can fork this API on Parse and revise it to add attribute-based filtering endpoints.