1688 Sourcing
1688 Search By Image
Find visually similar 1688 supplier products from an image URL. Call the 1688 Search By Image API via REST or MCP from 10 credits per call.
MCP tool name
nexscope_1688_search_by_imageMCP endpoint
https://api.nexscope.ai/mcpJSON-RPC method
tools/callAuthentication
Use OAuth 2.1 Authorization Code with PKCE and the mcp:tools scope. API keys remain supported as a compatibility option.
Authorization: Bearer nk-xxxxxxxxxxxxxxxxxIf authentication fails, ask the user to open API Access and copy a valid key.
Call this MCP tool
Initialize an MCP 2025-11-25 Streamable HTTP session at https://api.nexscope.ai/mcp, then use tools/call.
{
"jsonrpc": "2.0",
"id": "1688-search-by-image-1",
"method": "tools/call",
"params": {
"name": "nexscope_1688_search_by_image",
"arguments": {
"imageUrl": "https://m.media-amazon.com/images/I/61v6nYvQ7+L._AC_SL1500_.jpg",
"page": 1,
"pageSize": 20
}
}
}MCP 2025-11-25 · Streamable HTTPProgress is delivered on the original POST SSE response. GET SSE carries notifications; reconnecting must query existing asynchronous work rather than submit again.
Arguments
| Name | Type | Required | Description |
|---|---|---|---|
imageUrl | string | optional | Public HTTP/80 or HTTPS/443 URL, maximum 1,000 characters, without redirects. A sole direct source is checked for PNG/JPEG headers, at most 14.3 MiB, each dimension at most 20,000 and at most 40,000,000 pixels. This is not full pixel-integrity validation. Provide exactly one of imageUrl, imageBase64, or imageId. Example: https://m.media-amazon.com/images/I/61v6nYvQ7+L._AC_SL1500_.jpg |
imageBase64 | string | optional | Raw standard Base64 for PNG/JPEG; optional padding and outer whitespace allowed, embedded whitespace and data URI prefixes rejected for a sole direct source. Byte/header limits match imageUrl; at most 19,992,848 Base64 characters after outer whitespace trimming. Provide this as the only image source. Example: {} |
imageId | string | optional | 1688 image ID. Image-search results also return this value; include it when page is greater than 1 to improve response time Example: {} |
page | integer | optional | Page number starting from 1 Example: 1 |
pageSize | integer | optional | Number of products per page; default 20, maximum 50 Example: 20 |
priceStart | string | optional | Minimum price in CNY, for example 10 Example: {} |
priceEnd | string | optional | Maximum price in CNY, for example 100 Example: {} |
filter | string | optional | Comma-separated filter conditions. Use the supported filter values documented for this endpoint Example: {} |
sort | string | optional | Sort condition as JSON in the form {field: direction}. Fields: price, rePurchaseRate, or monthSold. Directions: asc or desc Example: {} |
keyword | string | optional | Keyword used to search within the results Example: phone case |
productCollectionId | string | optional | Single product-collection ID. Use a supported collection ID documented for this endpoint Example: example-id |
Response fields
Treat structuredContent as the programmatic API response payload.
| Name | Type | Required | Description |
|---|---|---|---|
imageId | string | optional | The image ID after uploading; returning it during paging query can speed up the process Example: {} |
total | integer | optional | Quantity of products on this page Example: {} |
totalPage | integer | optional | Total pages Example: {} |
sourceType | string | optional | Source type, fixed to `1688` Example: {} |
type | string | optional | Rendering style, fixed to `productWorkbenches` Example: {} |
columns | array | optional | Render column definition Example: {} |
costToken | integer | optional | Consume token Example: {} |
products | array | optional | Product list, see table below Example: {} |
offerId | string | optional | Product ID Example: {} |
asin | string | optional | Item number, same as `offerId` Example: {} |
imageUrl | string | optional | Product pictures Example: {} |
title | string | optional | Product title Example: {} |
price | number | optional | Wholesale price (yuan) Example: {} |
consignPrice | number | optional | Price for one piece (yuan) Example: {} |
salesQuantity | integer | optional | Number of pieces sold per month Example: {} |
estimatedSalesAmount | number | optional | Estimated sales Example: {} |
asinUrl | string | optional | Product link Example: {} |
isOnePsale | string | optional | Whether to ship on behalf of one piece (yes/no) Example: {} |
isJxhy | string | optional | Whether to select supply sources (yes/no) Example: {} |
sellerIdentities | string | optional | Merchant identity (super factory/powerful merchant/integrity member) Example: {} |
offerIdentities | string | optional | Product label (carefully selected) Example: {} |
repurchaseRate | string | optional | Repurchase rate Example: {} |
tradeScore | string | optional | Product Transaction Rating Example: {} |
compositeServiceScore | string | optional | Comprehensive service experience points Example: {} |
sendGoodsAddressText | string | optional | Place of shipment Example: {} |
deliveryTime | string | optional | Shipping time (24/48 hours) Example: {} |
quantityBegin | integer | optional | Minimum batch size Example: {} |
hasPromotion | string | optional | Is there a marketing campaign (yes/no) Example: {} |
promotionType | string | optional | marketing type Example: {} |
isPatentProduct | string | optional | Is it a patented product (yes/no) Example: {} |
isSelect | string | optional | Cross-Border Select Pallet Identification Example: {} |
currency | string | optional | Currency, fixed to `Â¥` Example: {} |
sourceType | string | optional | Source type, fixed to `1688` Example: {} |
dataType | string | optional | Data type, fixed to `monthlyData` Example: {} |
Examples
Example arguments
{
"imageUrl": "https://m.media-amazon.com/images/I/61v6nYvQ7+L._AC_SL1500_.jpg",
"page": 1,
"pageSize": 20
}Example structuredContent
{}