Put the real use case into the query

Suppose you need a storage rack for a narrow entrance. Measure the available space first, then combine the product type and purpose in keyword. Product search offers candidates; it does not measure the room or guarantee that every result meets your constraints. Write down non-negotiable requirements such as width and load before deciding what deserves closer inspection.

Keep the search traceable

page begins at one. Retain the initial search_id for later pages and use source according to its definition. A changed keyword should be treated as a new search rather than silently merged into a like-for-like comparison. Check actual product details and current information. A picture cannot establish material, and a description observed during search is not a permanent guarantee of specification or price.

Eliminate options using your own requirements

Your comparison sheet could contain the source, dimensions to confirm, installation method, and reason an option is unsuitable. A hypothetical wall-fixed rack may conflict with a no-drilling tenancy rule regardless of its appearance. The operation does not verify fulfilment, stock, or quality. Confirm those matters on the transaction page before buying. The deliverable is a reasoned shortlist, not a claim that search placement identifies the best product for your needs.

Request URL and parameters

GET https://api.trmesh.com/openapi/api/v1/xiaohongshu/app_v2/search_products

Parameter Type Required Meaning
keyword string Yes Search keyword
page integer No Page number, start from 1
search_id string No Search ID for pagination
source string No Source

Run the Python example

Install requests and set TRMESH_API_TOKEN in your environment. Replace the sample identifiers with the public object you intend to inspect. Example IDs may no longer be available.

import os
import requests

# Read your own developer key from the server environment.
url = "https://api.trmesh.com/openapi/api/v1/xiaohongshu/app_v2/search_products"
params = {
    "keyword": "手机壳",
    "page": "1",
    "source": "explore_feed"
}
response = requests.get(
    url, params=params, timeout=30,
    headers={"Authorization": f"Bearer {os.environ['TRMESH_API_TOKEN']}"},
)
response.raise_for_status()
payload = response.json()
print(payload)  # Inspect the actual response before mapping fields

Endpoint documentation · Free profile tool

API calls use your TRMesh account allowance. Check the endpoint price before running a script.