Advanced product endpoints
Seller shop product search: POST /v1/products/seller/search
Additional routes for sourcing workflows (1688-heavy unless noted). Overview: Products.
Endpoint index
| Method | Path | Purpose |
|---|---|---|
| GET | /v1/products/channels | Per-channel capability flags |
| POST | /v1/products/freight/estimate | Domestic shipping — same body as order preview; returns freight in fen |
| POST | /v1/products/similar | Taobao similar — pass a fresh search id / mi_id (rotates; do not cache long-term) |
| POST | /v1/products/batch-check | Taobao mapping debug (create auto-checks batch) |
| POST | /v1/products/top-keywords | 1688 category hot keywords |
| POST | /v1/products/top-list | 1688 ranked product lists |
| POST | /v1/products/daily-sales-trend | 1688 daily sales trend (max 90 days) |
1688 product top list
POST /v1/products/top-list returns products in a 1688 category ranking. Send a JSON body with a key that has the product:search scope; see Authentication.
| Request field | Type | Required | Description |
|---|---|---|---|
channel | string | Yes | Must be "1688". |
rank_id | string | Yes | Ranking ID; currently use a 1688 category ID. |
rank_type | string | Yes | Ranking type. Common values: complex (overall), hot (popular), goodPrice (value). |
limit | integer | Yes | Number of products, from 1 to 20. |
language | string | No | Product title language; defaults to "en". |
curl https://api.hiobuy.com/v1/products/top-list \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"channel":"1688","rank_id":"1111","rank_type":"complex","limit":10,"language":"en"}'The response is a StandardTopList object, with request_id added at the top level. This example shows one item; the real items array can be empty or contain up to the requested limit.
{
"channel": "1688",
"rank_id": "1111",
"rank_name": "Overall ranking",
"rank_type": "complex",
"language": "en",
"items": [
{
"item_id": "1234567890",
"title": "Example product",
"translate_title": "Example product",
"image_url": "https://example.com/product.jpg",
"sort": 1,
"service_list": [
"sendGoods48H"
],
"buyer_num": 120,
"sold_out": 800,
"goods_score": "4.8"
}
],
"request_id": "req_example"
}| Response field | Type | Description |
|---|---|---|
channel | string | 1688. |
rank_id / rank_name / rank_type | string | Ranking ID, name, and type. |
language | string | Language used for the result. |
items | array | Ranked products; can be empty. |
items[].item_id | string | 1688 product ID. |
items[].title / items[].translate_title | string | Original and translated title; translation may fall back to the original title. |
items[].image_url | string | Main product image URL. |
items[].sort | number | Position in the ranking. |
items[].service_list | string[] | Service labels supplied by 1688. |
items[].buyer_num / items[].sold_out | number | Buyer count and units sold reported by 1688. |
items[].goods_score | string | Score supplied by 1688; keep it as a string. |
request_id | string | HioBuy request identifier for support and debugging. |
1688 daily sales trend
POST /v1/products/daily-sales-trend returns daily unit sales for one 1688 product.
| Request field | Type | Required | Description |
|---|---|---|---|
channel | string | Yes | Must be "1688". |
product_id | string | Yes | 1688 product ID (offerId). |
start_date | string | Yes | First day, formatted yyyyMMdd. |
end_date | string | Yes | Last day, formatted yyyyMMdd; must be on or after start_date. |
The date range includes both endpoints and cannot exceed 90 calendar days. Invalid dates and longer ranges return a validation error.
curl https://api.hiobuy.com/v1/products/daily-sales-trend \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"channel":"1688","product_id":"1234567890","start_date":"20260901","end_date":"20260903"}'The response is a StandardDailySalesTrend object, with request_id added at the top level. The figures below are illustrative, not live sales data.
{
"channel": "1688",
"product_id": "1234567890",
"start_date": "20260901",
"end_date": "20260903",
"points": [
{
"date": "20260901",
"quantity": 100
},
{
"date": "20260902",
"quantity": 85
},
{
"date": "20260903",
"quantity": 92
}
],
"request_id": "req_example"
}| Response field | Type | Description |
|---|---|---|
channel | string | 1688. |
product_id | string | Requested 1688 product ID. |
start_date / end_date | string | Validated request dates in yyyyMMdd format. |
points | array | Daily observations; can be empty. |
points[].date | string | Date returned by the data source. Production commonly uses yyyyMMdd; sandbox fixtures use yyyy-MM-dd. |
points[].quantity | number | Units sold on that date. |
request_id | string | HioBuy request identifier for support and debugging. |
These two endpoints return the standard response structures shown above. Their current gateway routes do not apply response_format: "upstream".
Upstream response format {#upstream-format}
Add "response_format": "upstream" to return vendor JSON in an upstream envelope instead of standard models. See Response format.
Seller shop search
POST /v1/products/seller/search lists products from a specific 1688 or Weidian seller shop. The request requires an API key with the product:search scope; see Authentication for the authentication header and Product response models for the complete normalized product fields.
Request body
Send a JSON object. channel and the seller identifier for that channel are required.
| Field | Type | Channel | Description |
|---|---|---|---|
channel | "1688" | "weidian" | Both | Required. Selects the upstream marketplace. |
seller_open_id | string | 1688 | Required for 1688. The seller’s open ID, not a product ID. |
shop_id | string or number | Weidian | Required for Weidian. seller_open_id is also accepted as an alias for this identifier. |
keyword | string | Both | Optional keyword filter within the seller’s shop. |
page | integer | Both | Optional page number; defaults to 1. Weidian accepts pages up to 400. |
page_size | integer | Both | Optional items per page; defaults to 20, maximum 50. |
item_id | string or number | Weidian | Optional item filter. |
category_id | integer | Both | Optional seller category filter. |
update_start, update_end | string | Weidian | Optional update-time boundaries in yyyy-MM-dd HH:mm:ss format. |
sort_rule | 1 | 2 | 3 | 4 | Weidian | Optional sort: 1 sales ascending, 2 sales descending, 3 price ascending, 4 price descending. |
sort_field, sort_order | "sales" | "price", "asc" | "desc" | Weidian | Alternative to sort_rule; the order defaults to descending when a field is supplied without an order. |
language | string | 1688 | Optional normalized title language; defaults to en. |
price_start, price_end | number | 1688 | Optional price range filters. |
filter | string | 1688 | Optional upstream seller-search filter. |
response_format | "standard" | "upstream" | Weidian | Defaults to standard. upstream returns the original Weidian payload, including its full SKU/category data; it is not available in Sandbox. |
The Weidian request does not use 1688-only price or filter parameters. For a stable cross-channel integration, use the default standard response format.
1688 request
{
"channel": "1688",
"seller_open_id": "YOUR_1688_SELLER_OPEN_ID",
"keyword": "jacket",
"page": 1,
"page_size": 20
}Weidian request
{
"channel": "weidian",
"shop_id": "YOUR_WEIDIAN_SHOP_ID",
"page": 1,
"page_size": 20,
"sort_rule": 2
}Standard response
The default response is a normalized product list at the top level, not inside a data object. This empty-result example shows the envelope without inventing product or seller data:
{
"request_id": "REQUEST_ID",
"channel": "1688",
"keyword": "jacket",
"page": 1,
"page_size": 20,
"total": 0,
"items": []
}| Field | Type | Description |
|---|---|---|
request_id | string | Request identifier for support and tracing. |
channel | string | Marketplace used for this search. |
keyword | string | Keyword associated with the result. |
page, page_size | number | Result pagination. |
total | number | Total matching products reported for the search. |
items | array | Normalized product summaries. |
seller_open_id, shop_id | string, when present | Seller/shop identifier returned by the channel. |
Each items[] entry uses the standard product list item structure: id, channel, source_product_id, source_url, title (original, translated, language), price (original_currency, original_amount, display_currency, display_amount), image, and seller (name, with optional id and shop_url). Sales, stock, and status fields can be present when the upstream marketplace provides them. Do not assume a full product-detail or SKU payload in standard results; use the relevant product-detail API or the Weidian upstream format when that source-specific data is required.
Get Support
Need integration help? Contact Developer Support at support@hiobuy.com · Response within 1–2 business days