# Product search

Search Taobao and Tmall products by keyword, one page per request.

ID: native-http:commerce.taobao.product.search · Region: global · Status: available

catalog_version: 1d0d6a1c969fdf327cc670c6e09e30955e8d31a1effc0d3a58d90184ad911f57
updated_at: 2026-10-27T04:03:01.944414+00:00

Search Taobao and Tmall products by keyword, one page per request.

Dataset releases define historical periods; live reads describe request-time data and do not guarantee completeness.

Docs: https://docs.kleardata.ai/capabilities/native-http%3Acommerce.taobao.product.search

## POST /v1/native/commerce/taobao/products/search

native · available · api_key

REST requires a customer API Key; MCP requires an enabled authenticated server; CLI requires its published artifact and command.

Search Taobao and Tmall products by keyword, one page per request.

Charge once per successful request under the approved customer price policy; max_credits bounds the charge.

Reuse the original Idempotency-Key when recovering the same native request.

Read the original task before retrying a pending or unknown outcome. Check error.code before acting on HTTP 401/402/403/422: native_upstream_* reports a source failure; keep job_id/request_id and contact support. These source errors do not establish a problem with your Asklear API Key, Credits, permissions or input. Correct Asklear authentication, permission or input errors before retrying; do not automatically resubmit paid execution.

### Input schema / 输入契约

```json
{
  "$defs": {
    "Schema1": {}
  },
  "additionalProperties": false,
  "properties": {
    "input": {
      "additionalProperties": false,
      "properties": {
        "end_price": {
          "default": "",
          "description": "Maximum price filter (inclusive).",
          "maxLength": 32,
          "not": {
            "pattern": "[\\u0000-\\u001f]"
          },
          "type": "string"
        },
        "keyword": {
          "description": "Search keyword.",
          "maxLength": 200,
          "minLength": 1,
          "type": "string"
        },
        "page": {
          "default": 1,
          "description": "Page number for pagination.",
          "maximum": 1000,
          "minimum": 1,
          "type": "integer"
        },
        "sort": {
          "default": "_sale",
          "description": "Sort order for the result set.\n\nAvailable Values:\n- `_sale`: Sales\n- `_bid`: Price: High to Low\n- `bid`: Price: Low to High\n- `_coefp`: General",
          "enum": [
            "_sale",
            "_bid",
            "_coefp",
            "bid"
          ],
          "type": "string"
        },
        "start_price": {
          "default": "",
          "description": "Minimum price filter (inclusive).",
          "maxLength": 32,
          "not": {
            "pattern": "[\\u0000-\\u001f]"
          },
          "type": "string"
        },
        "tmall": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "enum": [
                "false",
                "true"
              ],
              "type": "string"
            }
          ],
          "default": "false",
          "description": "Boolean values map to the legacy lowercase HTTP literals."
        }
      },
      "required": [
        "keyword"
      ],
      "type": "object"
    },
    "max_credits": {
      "anyOf": [
        {
          "maximum": 1000000000,
          "minimum": 0,
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null
    },
    "task_query": {
      "anyOf": [
        {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional task attribution: when provided, write one concise, self-contained task_query in the user's language and reuse that exact value in every call for the task, including discovery, search, approval retry, results, export, and status checks. For MCP calls, when omitted, Asklear records a generic non-user-specific attribution so compatible clients can still call the tool. REST calls may omit it and remain unattributed. It is a task description, not a task identifier. Do not include hidden reasoning, credentials, or direct personal identifiers such as phone numbers, email addresses, identity numbers, or street addresses.",
          "maxLength": 300
        },
        {
          "type": "null"
        }
      ],
      "default": null
    }
  },
  "required": [
    "input"
  ],
  "type": "object"
}
```

### Synthetic request / 合成请求

```json
{
  "input": {
    "keyword": "example"
  }
}
```

### Response schema / 响应契约

```json
{
  "$defs": {
    "Schema1": {},
    "Schema2": {
      "properties": {
        "api_name": {
          "type": "string"
        },
        "credits_charged": {
          "minimum": 0,
          "type": "integer"
        },
        "latency_ms": {
          "minimum": 0,
          "type": "integer"
        },
        "next_input": {
          "anyOf": [
            {
              "additionalProperties": false,
              "properties": {
                "end_price": {
                  "default": "",
                  "maxLength": 32,
                  "not": {
                    "pattern": "[\\u0000-\\u001f]"
                  },
                  "type": "string"
                },
                "keyword": {
                  "maxLength": 200,
                  "minLength": 1,
                  "type": "string"
                },
                "page": {
                  "default": 1,
                  "maximum": 1000,
                  "minimum": 1,
                  "type": "integer"
                },
                "sort": {
                  "default": "_sale",
                  "enum": [
                    "_sale",
                    "_bid",
                    "_coefp",
                    "bid"
                  ],
                  "type": "string"
                },
                "start_price": {
                  "default": "",
                  "maxLength": 32,
                  "not": {
                    "pattern": "[\\u0000-\\u001f]"
                  },
                  "type": "string"
                },
                "tmall": {
                  "anyOf": [
                    {
                      "type": "boolean"
                    },
                    {
                      "enum": [
                        "false",
                        "true"
                      ],
                      "type": "string"
                    }
                  ],
                  "default": "false",
                  "description": "Boolean values map to the legacy lowercase HTTP literals."
                }
              },
              "required": [
                "keyword"
              ],
              "type": "object"
            },
            {
              "type": "null"
            }
          ]
        },
        "request_id": {
          "type": "string"
        }
      },
      "required": [
        "api_name",
        "request_id",
        "latency_ms",
        "credits_charged",
        "next_input"
      ],
      "type": "object"
    }
  },
  "properties": {
    "data": {
      "additionalProperties": true,
      "description": "Known optional fields from sanitized offline fixtures; conditional fields may be null. Additional business fields are retained.",
      "properties": {
        "code": {
          "type": [
            "integer",
            "null"
          ]
        },
        "data": {
          "additionalProperties": true,
          "properties": {
            "model": {
              "additionalProperties": true,
              "properties": {
                "businessSummary": {
                  "additionalProperties": true,
                  "properties": {
                    "sampleOnly": {
                      "type": [
                        "boolean",
                        "null"
                      ]
                    }
                  },
                  "type": [
                    "object",
                    "null"
                  ]
                },
                "itemList": {
                  "items": {
                    "additionalProperties": true,
                    "properties": {
                      "businessFields": {
                        "additionalProperties": true,
                        "properties": {
                          "emptyArray": {
                            "items": {
                              "description": "Observed as null; the non-null type is not established."
                            },
                            "type": [
                              "array",
                              "null"
                            ]
                          },
                          "emptyObject": {
                            "additionalProperties": true,
                            "properties": {},
                            "type": [
                              "object",
                              "null"
                            ]
                          },
                          "optional": {
                            "description": "Observed as null; the non-null type is not established."
                          }
                        },
                        "type": [
                          "object",
                          "null"
                        ]
                      },
                      "itemId": {
                        "type": [
                          "integer",
                          "null"
                        ]
                      },
                      "itemName": {
                        "type": [
                          "string",
                          "null"
                        ]
                      },
                      "itemUrl": {
                        "type": [
                          "string",
                          "null"
                        ]
                      },
                      "rating": {
                        "description": "Observed as null; the non-null type is not established."
                      },
                      "unknown": {
                        "additionalProperties": true,
                        "properties": {
                          "list": {
                            "items": {
                              "type": [
                                "boolean",
                                "integer",
                                "number",
                                "string",
                                "null"
                              ]
                            },
                            "type": [
                              "array",
                              "null"
                            ]
                          },
                          "nullable": {
                            "description": "Observed as null; the non-null type is not established."
                          }
                        },
                        "type": [
                          "object",
                          "null"
                        ]
                      }
                    },
                    "type": [
                      "object",
                      "null"
                    ]
                  },
                  "type": [
                    "array",
                    "null"
                  ]
                },
                "page": {
                  "additionalProperties": true,
                  "properties": {
                    "pageNo": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    },
                    "totalItems": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    },
                    "totalPages": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    }
                  },
                  "type": [
                    "object",
                    "null"
                  ]
                }
              },
              "type": [
                "object",
                "null"
              ]
            }
          },
          "type": [
            "object",
            "null"
          ]
        },
        "optional": {
          "description": "Observed as null; the non-null type is not established."
        }
      },
      "type": "object"
    },
    "meta": {
      "$ref": "#/$defs/Schema2"
    }
  },
  "required": [
    "data",
    "meta"
  ],
  "type": "object"
}
```

### Synthetic response / 合成响应

```json
{
  "data": {
    "code": 0,
    "data": {
      "model": {
        "businessSummary": {
          "sampleOnly": true
        },
        "itemList": [
          {
            "itemId": 963327713093,
            "itemName": "合成商品",
            "rating": null,
            "unknown": {
              "list": [
                false
              ],
              "nullable": null
            }
          }
        ],
        "page": {
          "pageNo": 1,
          "totalItems": 1,
          "totalPages": 1
        }
      }
    },
    "optional": null
  },
  "meta": {
    "api_name": "commerce.taobao.product.search",
    "credits_charged": 36,
    "latency_ms": 12,
    "next_input": null,
    "request_id": "asklear-example"
  }
}
```

- data (object): Known optional fields from sanitized offline fixtures; conditional fields may be null. Additional business fields are retained.
- data.code (integer|null): No field description available
- data.data (object|null): No field description available
- data.data.model (object|null): No field description available
- data.data.model.businessSummary (object|null): No field description available
- data.data.model.businessSummary.sampleOnly (boolean|null): No field description available
- data.data.model.itemList (array|null): No field description available
- data.data.model.page (object|null): No field description available
- data.data.model.page.pageNo (integer|null): No field description available
- data.data.model.page.totalItems (integer|null): No field description available
- data.data.model.page.totalPages (integer|null): No field description available
- data.optional (scalar): Observed as null; the non-null type is not established.
- meta (object): No field description available
- meta.api_name (string): No field description available
- meta.request_id (string): No field description available
- meta.latency_ms (integer): No field description available
- meta.credits_charged (integer): No field description available
- meta.next_input (scalar): No field description available
- data.data.model.itemList[].businessFields (object|null): No field description available
- data.data.model.itemList[].businessFields.emptyArray (array|null): No field description available
- data.data.model.itemList[].businessFields.emptyObject (object|null): No field description available
- data.data.model.itemList[].businessFields.optional (scalar): Observed as null; the non-null type is not established.
- data.data.model.itemList[].itemId (integer|null): Product identifier, when available.
- data.data.model.itemList[].itemName (string|null): Title, when available.
- data.data.model.itemList[].itemUrl (string|null): Public URL, when available.
- data.data.model.itemList[].rating (scalar): Observed as null; the non-null type is not established.
- data.data.model.itemList[].unknown (object|null): No field description available
- data.data.model.itemList[].unknown.list (array|null): No field description available
- data.data.model.itemList[].unknown.nullable (scalar): Observed as null; the non-null type is not established.
- meta.next_input.end_price (string): No field description available
- meta.next_input.keyword (string): No field description available
- meta.next_input.page (integer): No field description available
- meta.next_input.sort (string): No field description available
- meta.next_input.start_price (string): No field description available
- meta.next_input.tmall (boolean|string): Boolean values map to the legacy lowercase HTTP literals.

Follow up: GET /v1/native/results/{query_id}
Read the saved result without another source call.

