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

MethodPathPurpose
GET/v1/products/channelsPer-channel capability flags
POST/v1/products/freight/estimateDomestic shipping — same body as order preview; returns freight in fen
POST/v1/products/similarTaobao similar — pass a fresh search id / mi_id (rotates; do not cache long-term)
POST/v1/products/batch-checkTaobao mapping debug (create auto-checks batch)
POST/v1/products/top-keywords1688 category hot keywords
POST/v1/products/top-list1688 ranked product lists
POST/v1/products/daily-sales-trend1688 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 fieldTypeRequiredDescription
channelstringYesMust be "1688".
rank_idstringYesRanking ID; currently use a 1688 category ID.
rank_typestringYesRanking type. Common values: complex (overall), hot (popular), goodPrice (value).
limitintegerYesNumber of products, from 1 to 20.
languagestringNoProduct 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 fieldTypeDescription
channelstring1688.
rank_id / rank_name / rank_typestringRanking ID, name, and type.
languagestringLanguage used for the result.
itemsarrayRanked products; can be empty.
items[].item_idstring1688 product ID.
items[].title / items[].translate_titlestringOriginal and translated title; translation may fall back to the original title.
items[].image_urlstringMain product image URL.
items[].sortnumberPosition in the ranking.
items[].service_liststring[]Service labels supplied by 1688.
items[].buyer_num / items[].sold_outnumberBuyer count and units sold reported by 1688.
items[].goods_scorestringScore supplied by 1688; keep it as a string.
request_idstringHioBuy 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 fieldTypeRequiredDescription
channelstringYesMust be "1688".
product_idstringYes1688 product ID (offerId).
start_datestringYesFirst day, formatted yyyyMMdd.
end_datestringYesLast 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 fieldTypeDescription
channelstring1688.
product_idstringRequested 1688 product ID.
start_date / end_datestringValidated request dates in yyyyMMdd format.
pointsarrayDaily observations; can be empty.
points[].datestringDate returned by the data source. Production commonly uses yyyyMMdd; sandbox fixtures use yyyy-MM-dd.
points[].quantitynumberUnits sold on that date.
request_idstringHioBuy 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.

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.

FieldTypeChannelDescription
channel"1688" | "weidian"BothRequired. Selects the upstream marketplace.
seller_open_idstring1688Required for 1688. The seller’s open ID, not a product ID.
shop_idstring or numberWeidianRequired for Weidian. seller_open_id is also accepted as an alias for this identifier.
keywordstringBothOptional keyword filter within the seller’s shop.
pageintegerBothOptional page number; defaults to 1. Weidian accepts pages up to 400.
page_sizeintegerBothOptional items per page; defaults to 20, maximum 50.
item_idstring or numberWeidianOptional item filter.
category_idintegerBothOptional seller category filter.
update_start, update_endstringWeidianOptional update-time boundaries in yyyy-MM-dd HH:mm:ss format.
sort_rule1 | 2 | 3 | 4WeidianOptional sort: 1 sales ascending, 2 sales descending, 3 price ascending, 4 price descending.
sort_field, sort_order"sales" | "price", "asc" | "desc"WeidianAlternative to sort_rule; the order defaults to descending when a field is supplied without an order.
languagestring1688Optional normalized title language; defaults to en.
price_start, price_endnumber1688Optional price range filters.
filterstring1688Optional upstream seller-search filter.
response_format"standard" | "upstream"WeidianDefaults 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": []
}
FieldTypeDescription
request_idstringRequest identifier for support and tracing.
channelstringMarketplace used for this search.
keywordstringKeyword associated with the result.
page, page_sizenumberResult pagination.
totalnumberTotal matching products reported for the search.
itemsarrayNormalized product summaries.
seller_open_id, shop_idstring, when presentSeller/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

Email support