Check what used goods really sell for on Xianyu before you buy or list
Search Xianyu (Goofish) by keyword and get second-hand listings as JSON with price, original price, condition, city, seller and date, for resale price research.
If you flip used electronics, price a trade-in, or want to know how fast a product loses value in China, the number you need is what people actually ask for it on the resale market, not the retail price. Xianyu has that number, in Chinese, spread over thousands of listings. Lovely Router collects them. Send a keyword, get one JSON object per listing, pay per listing from a prepaid balance. Call it from a script, a spreadsheet job or an AI agent with one API key.
Hand it to your AI agent
Copy this prompt into Claude Code, Cursor, Codex or any coding agent. It tells the agent where the docs are and how to use your API key.
Check what used goods really sell for on Xianyu before you buy or list. Use the Lovely Router data tools: each returns JSON and is billed per result.
- Docs (read first): https://lovelyrouter.com/docs/tools/find.md and https://lovelyrouter.com/docs/tools/run.md
- Plan first: POST https://lovelyrouter.com/v1/tools/suggest with `{"task": "<my task in plain words>"}` (free). It returns the tools to run in order, each with an example `input`, the `input_required` fields, an estimated cost and a ready-made `run` request. Replace the example values with my task's; if a field is unclear, read the tool with GET https://lovelyrouter.com/v1/tools/<id>. To browse instead, POST https://lovelyrouter.com/v1/tools/discover searches the catalog.
- Show me the plan and its estimated cost (`total_est_cost_usd`) before running anything large.
- Run: POST https://lovelyrouter.com/v1/tools/<id>/run with `{"input": {...}, "max_results": N}`. A 200 has the finished run with `items`; a 202 means it is still running, so poll the `poll` path until `status` is `succeeded`, `failed`, `timed_out` or `stopped`.
- Only delivered results are billed. Keep max_results small on the first run, check the output, then scale up.
- If you support MCP, connect https://lovelyrouter.com/mcp instead (Streamable HTTP, same key; https://lovelyrouter.com/docs/tools/mcp.md) and use suggest_tools, get_tool and run_tool.
- Auth: read my API key from the LOVELY_API_KEY environment variable and send it as `Authorization: Bearer $LOVELY_API_KEY`. Never print or commit the key. If it is not set, ask me to create one at https://lovelyrouter.com/app/keys.
- Billing is prepaid: every call is charged to my balance, so test with a small request before running anything large.
- Every docs page is plain Markdown; the full index is https://lovelyrouter.com/llms.txt.
My task: <the inputs (links, keywords or accounts) and how many results you need>How it works
Pick keywords and filters
Use the name of the product as sellers write it, usually in Chinese. Add a price range, a sort order and how recent the listings should be.
Run the tool with a cap
Send the keyword to
POST /v1/tools/xianyu-listings/runwithmax_results. The run holds its maximum cost from your balance and returns the listings as JSON.Work out the market price
Take the median asking price, compare it to the original price, and look at how condition and city change it.
Search Xianyu with one request
Search Xianyu second-hand listings takes a keyword, or up to three in keywords, or search links in searchUrls. maxItems is the cap, and sortBy, priceMin, priceMax (in CNY) and publishedWithinDays (1, 3, 7 or 14) narrow the results:
curl https://lovelyrouter.com/v1/tools/xianyu-listings/run \
-H "Authorization: Bearer $LOVELY_API_KEY" \
-H "content-type: application/json" \
-d '{
"input": {
"keyword": "iphone",
"maxItems": 50,
"sortBy": "newest",
"publishedWithinDays": "7"
},
"max_results": 50
}'A run still going after 60 seconds returns 202; Run a tool shows how to poll.
What each listing holds
| Field group | What you get |
|---|---|
| Item | Title and photos |
| Price | The asking price and the original price |
| Condition | The condition the seller states |
| Place | The seller's city |
| Seller | The seller |
| Time | The posted date |
Text comes back as sellers wrote it, in Chinese. Ask a model to translate titles and normalize conditions in the same job.
Recipes
Search each model you accept, take the median asking price of the last 14 days, and set your offer as a share of it.
Sort by priceAsc with a priceMin that removes junk listings, and flag items far below the median for the same model.
Compare price to original price across a product line. Rerun monthly to see how fast each model loses value.
Sort by priceDrop for a keyword to catch sellers who are cutting prices.
Run Chinese keywords for the goods you want to buy, translate the titles with a model, and shortlist by city and price.
Prefer plain words? Connect the MCP server and tell Claude Code or Cursor: "Search Xianyu for the Chinese name of this camera lens, published in the last 7 days, and give me the median asking price, the cheapest five, and their cities. Set max_results to 100."
Pair it with new-price and wholesale data
A used price means more next to the new price:
Second-hand listings from Xianyu (Goofish, China's largest resale market) by keyword: title, price and original price, condition, city, seller, photos, posted date.
Taobao and Tmall product pages by link: title, price and promotions, shop, brand, images, specs, sales and variants.
Wholesale products from 1688.com (Alibaba's China B2B market) by keyword: title, tiered price in CNY, minimum order, sales, repurchase rate, supplier and location.
AliExpress products for a search: price, orders, rating, store.
What items actually sold for on eBay: sold price, shipping, condition, end date. For price research and valuation.
taobao-productgives the new retail price and promotions for a product link.1688-productsshows the wholesale price for the same goods.aliexpress-productsshows the price for export buyers.ebay-soldshows what the item sold for outside China.
For a wider market view, see e-commerce intelligence and Taobao and Tmall product data.
What you pay
You pay per listing: starting a run holds its maximum cost, the per-call fee plus the per-listing fee times max_results, and the run settles to what it returned. The rest of the hold goes back to your balance. A run that fails or times out pays only for the listings it delivered, and a run refused at the start costs nothing.
Pulling 100 listings a day is billed as 100 listings a day. There is no subscription and no monthly minimum: top up from $5, and one balance pays for tools and models. The card above shows today's price; pricing lists every tool.
Frequently asked questions
Does it work with an English keyword?+
The input says to search in the language sellers use, which is Chinese for most items. Try the Chinese name for best coverage.
Can I filter by price?+
Yes, with priceMin and priceMax in CNY. You can also sort by relevance, newest, priceAsc, priceDesc, priceDrop, modified or credit.
How many listings can I get?+
Up to 300 per run, and 20 by default. Set maxItems and max_results to the number you want.
Can I search from a Xianyu link?+
Yes. Paste Goofish search links in searchUrls; when set, they override keyword.
Do I need a Xianyu account?+
No. You send a keyword and an API key.
Do I need a subscription?+
No. You add credit to a prepaid balance and each run draws it down. Failed runs pay only for the results they delivered, and nothing renews automatically.
Sourcing from China? See Taobao and Tmall product data, e-commerce intelligence and the rest of the tool catalog.