Goofish Xianyu Scraper (闲鱼 Idlefish)
Scrape Goofish (Xianyu, Idlefish) listings by item link or seller profile: price, condition, want and view counts, seller rating, photos. No login required.
How it works
- 1Open it on Apify
Hit Run on Apify — it opens the tool in the cloud, no install.
- 2Set the inputs
Adjust
itemUrls,sellerUrls,maxItems(sensible defaults are pre-filled). - 3Click Run
The tool runs on Apify’s cloud and collects the data for you.
- 4Export the results
Download as JSON, CSV or Excel, or pipe straight into your app, Google Sheets, or an AI agent.
Pricing
$0.0035 per item = $3.5 per 1,000
| You are charged for | When | Price |
|---|---|---|
| Item returned | One listing returned in the dataset with its price, condition and seller details. Diagnostic rows and the labelled sample row are not charged. | $0.0035 |
Pay-per-event pricing: you are billed per result, not per subscription. Billing is handled by Apify on your own account. These are the live Apify store prices, in effect since 2026-09-20, and they are what you are actually charged.
Inputs
| Field | What it does | Type |
|---|---|---|
itemUrls | Goofish listing links, one per line. A full link like https://www.goofish.com/item?id=995598771021 works, and so does the bare number. Each one comes back as a full row. | array |
sellerUrls | Goofish seller profile links, one per line, like https://www.goofish.com/personal?userId=605970805 — or just the number. Every listing on the profile is walked and returned in the same shape as an item link, up to the limit below. | array |
maxItems | Stop after this many listings across the whole run. Item links are done first, then sellers. Counts only listings that actually came back — rows explaining a dead link are free and do not count. | integer |
includeDescription | Keep the full listing description in each row. Turn it off for a narrower table when you only want prices and counts. | boolean |
What you get
A structured dataset — each result includes fields like:
itemIdtitlepricecurrencyconditionTextwantCountviewCountcitysellerNicksellerGoodReviewRateimageCountlistedAturlExport every run as JSON, CSV or Excel, or send it to your app, a database, Google Sheets, or an AI agent.
Related tools in Developer & Research Tools
Other ready-to-run tools in the same category — all pay-per-use on the Apify cloud.
GitHub Scraper
Search GitHub repos and users: stars, forks, language, topics, licence, plus user bio, company and followers. No token needed. $0.90 per 1,000 rows.
Stack Overflow / Stack Exchange Scraper
Search Stack Overflow and Stack Exchange by keyword or tag. Score, answer count, views, reputation and body text. $2 per 1,000 questions.
Package Registry Scraper (npm + PyPI)
Get npm and PyPI package metadata as JSON. Version, license, author, repo, keywords and npm monthly downloads. $2 per 1,000 packages.
arXiv Scraper
Search arXiv papers by title, author, abstract or category. Get full abstracts, authors, categories, DOI, dates and PDF links. $2 per 1,000 papers.
OpenAlex Scholarly Works Scraper
Search 250M+ OpenAlex papers with no API key. Get titles, authors, venue, year, citations, DOI, OA links and full abstracts. $2.00 per 1,000 papers.
Crossref Scholarly Works Scraper
Search 150M+ papers on Crossref: DOI, title, authors, journal, publisher, date, citations and abstract. No API key. $1.00 per 1,000 works.
Where this tool sits
- Categories
- Developer & Research Tools
Goofish Scraper: Xianyu (闲鱼) listings from item and seller links, no keyword search
Paste Goofish item links, or a seller's profile link, and every listing comes back as a row. Each row has the title, asking price in yuan, Goofish's 10-point condition, want and view counts, location, the seller's masked nickname and good-review rate, every photo and the description. There is no keyword search, because Goofish only offers search to signed-in accounts, so this works from links you already have.
| Input | Goofish item links or ids, and seller profile links or ids |
| Output | One row per listing |
| Ceiling | 5,000 listings per run |
| Account needed | None |
| Price | $3.50 per 1,000 listings, flat on every plan |
🔍 What Goofish Scraper does
Goofish (闲鱼, Xianyu, sometimes written Idlefish) is Alibaba's second-hand marketplace. This takes listings you can already see, from the app, from a shared link or from a seller you follow, and turns them into a table.
An item link can be the full goofish.com/item?id= address, the mobile h5.m.goofish.com version or just the number. A seller link is a goofish.com/personal?userId= address or its number, and every listing on that profile is walked and returned in the same shape as an item link. Item links are done first, then sellers.
Before any of a seller's listings are kept, the first one is read back to check it really belongs to that seller. If it does not, you get a free note and nothing from that profile. Rows that did come from a profile you asked for carry foundViaSeller.
Each row is put together from two parts of Goofish, and sourceItemRecord and sourceDetailPage say which answered. When one is missing, its fields are null rather than guessed. Old listings are the usual case: on a 150-listing seller walk, 140 rows were complete and 10 came back thinner, all of them listings from earlier years.
That 150-listing walk took 87 seconds on a test run, and a run of 13 item links took 11.
📥 What you give it
{
"itemUrls": ["https://www.goofish.com/item?id=1080166744321", "1081033347338"],
"sellerUrls": ["https://www.goofish.com/personal?userId=605970805"],
"maxItems": 100,
"includeDescription": true
}
| Field | If you leave it out | What it is |
|---|---|---|
itemUrls | none | Listing links, one per line. A full link, the mobile link or the bare number all work. |
sellerUrls | none | Seller profile links or their numbers, one per line. Every listing on the profile is walked, up to the limit below. |
maxItems | 100 | 1 to 5,000 listings across the whole run. Only listings that come back count; free notes do not. |
includeDescription | on | Keeps the seller's full description. Turn it off for a narrower table. |
proxyConfiguration | not used | Only for your own servers. Addresses you list here are used as given. Leave it alone otherwise. |
With neither links nor seller links, you get one free example row telling you what to put where. The form opens with one item link filled in, as an example.
📤 What you get back
A real row from a real run, with the photo list cut to one:
{
"itemId": "1080166744321",
"url": "https://www.goofish.com/item?id=1080166744321",
"title": "全新正版《我住长江尾》,段志强著,中华书局出版!未拆封,正品",
"price": 35,
"originalPrice": 68,
"currency": "CNY",
"shippingFee": 0,
"conditionLevel": 10,
"conditionText": "Brand new",
"wantCount": 14,
"viewCount": 244,
"collectCount": 7,
"soldCount": 0,
"quantity": 4,
"city": "上海",
"province": "上海",
"district": "闵行区",
"sellerId": "2208434265414",
"sellerNick": "正***店",
"sellerGoodReviewRate": "99%",
"sellerItemCount": 241,
"sellerSoldCount": 2588,
"sellerReplyRate24h": "97%",
"sellerLastSeen": "6分钟前来过",
"sellerUrl": "https://www.goofish.com/personal?userId=2208434265414",
"categoryId": 50023914,
"status": "在线",
"listedAt": "2026-08-28T20:51:10.000Z",
"images": ["https://img.alicdn.com/bao/uploaded/i2/2208434265414/O1CN01fTSS3lERTGG1chua_!!4611686018427387206-0-xy_item.jpg"],
"imageCount": 4,
"description": "保证,印刷清晰,纸张手感好~\n\n内容讲复旦教授回归土地的田园生活,真实生动,适合喜欢历史、乡村、治愈系文学的朋友阅读收藏,也适合送礼~\n\n全国包邮(偏远地区除外),喜欢直接拍,细节随时问我~",
"sourceItemRecord": true,
"sourceDetailPage": true
}
| Field | What it is |
|---|---|
price, originalPrice, currency | The asking price in yuan, and the "was" price where the seller set one. Nothing is converted. |
conditionLevel, conditionText | Goofish's own 10-point scale, where 10 is brand new. Read straight from the listing, never guessed from the photos. |
wantCount, viewCount, collectCount | How many people want it, looked at it and saved it. On a second-hand market these say more than the price. |
soldCount, quantity | Goofish's sold counter, and the units the seller has on offer. |
city, province, district | Where the item is. |
sellerNick, sellerGoodReviewRate, sellerReplyRate24h, sellerLastSeen | The seller as Goofish shows them. Nicknames arrive masked by Goofish, and "last seen" is Goofish's own Chinese wording. |
sellerItemCount, sellerSoldCount | From the seller's profile header. They are Goofish's numbers, not a count of your rows. |
listedAt, status, categoryId | When it was posted, its state as Goofish labels it, and Goofish's category id. |
images, imageCount, description | Every photo, and the description when includeDescription is on. |
sourceItemRecord, sourceDetailPage | Which part of Goofish answered for this row. Both true is a complete row. |
foundViaSeller | Present only on rows from a seller profile you asked for, when the listing's own seller matches it. |
🧾 Reading the output
Real rows have no charged field. Every free row carries charged: false, so dropping those leaves only listings.
| Row | How to spot it | Charged |
|---|---|---|
| A listing | an itemId and no charged field | yes |
| The example row | _sample: true | no |
| A note | _diagnostic: true, with a reason and a note | no |
Notes use reason, not an error code:
reason | What it means |
|---|---|
not_found | The listing is gone, sold, withdrawn or deleted, or there is no public profile with that seller id. |
unreadable_input | No id could be read from that line. |
seller_mismatch | The listings returned for that profile belong to other sellers, so none were kept. |
no_listings | The seller has nothing on show right now. |
blocked | Goofish did not answer for that listing or seller. It usually clears in a few minutes. |
all_exits_refused | Goofish could not be read by this run, so the remaining links were not tried. Try again in a few minutes. |
charge_limit_reached | The run's maximum cost was too low for even one listing, so nothing was fetched. |
unreadable_record | Goofish answered for that listing in a shape the actor could not read. |
route_changed | Goofish changed how it answers, so the run stopped. Try again later, or open an issue. |
▶️ How to run it
1. Open Goofish Scraper and click Try for free. 2. Paste listing links into Item links, or profile links into Seller links, one per line. 3. Set Maximum listings. 4. Untick Include the seller's description if you only want prices and counts. 5. Click Start, then download the dataset as JSON, CSV or Excel.
💰 How much does it cost?
$3.50 per 1,000 listings, flat on every Apify plan.
Not charged: the example row, every note above, and a listing that turns up twice, which is delivered once. If you set a maximum cost for the run, it stops when that is reached and says so in the log; if the limit is too low for a single listing, nothing is fetched at all.
💡 What people use it for
- Watching the asking price and the want and view counts on listings you already follow, on a
schedule.
- Reading a seller's whole shelf before buying from them: good-review rate, reply rate and what else
they sell.
- Comparing interest across listings of the same kind. A ¥3 listing with 2,119 wants and 10,356 views
is a very different thing from a ¥2,569 camera with none.
- Keeping a record of listings, with their photo links and descriptions, before they sell and
disappear.
🚧 What it does not do
- No keyword search. Goofish keeps search for signed-in accounts, and this uses none. If you
need "every listing for X", this is the wrong tool.
- No sold history. A seller profile shows the current shelf. Sold and delisted items are not on
it.
soldCountis 0 on most listings, and a 0 does not mean nothing sold. Goofish fills it in
unevenly. The want and view counts are the reliable ones.
- No translation. Titles, cities, conditions and "last seen" stay in Chinese, as listed.
- No currency conversion. Prices are in yuan.
- No unmasked nicknames. Goofish masks them for anyone who is not signed in.
- A row is a snapshot. Sellers change prices and relist the same thing often.
🧭 Which China marketplace scraper do you need?
| If you want | Use |
|---|---|
| Second-hand listings on Goofish, from links | This one |
| Taobao products by category | Taobao Category Products Scraper |
| Products from Taobao's recommendation feed | Taobao Product Feed Scraper |
| Wholesale prices, order minimums and suppliers on 1688 | 1688 Wholesale Scraper |
| Public RedNote (Xiaohongshu) notes with their engagement | RedNote Scraper |
❓ Questions people ask
Can it search Goofish by keyword? No. Goofish only offers search to signed-in accounts, and this works from listing and seller links.
Do I need a Goofish account, a cookie or a token? No. You paste links, and nothing else is asked for.
Is Xianyu the same as Goofish? Yes. 闲鱼 (Xianyu) is the Chinese name, Goofish the name on the international site, and Idlefish a common translation.
How many listings can I pull from one seller? As many as their profile shows, up to your Maximum listings.
Why are some fields null on an old listing? Goofish keeps less for long-archived listings. sourceItemRecord: false marks those rows, and the missing fields are left empty rather than filled with a guess.
Is this legal? It reads listings anyone can open without signing in. Apify's write-up on the legality of web scraping is a good starting point. We are not lawyers.
🆘 If something breaks
Open the Issues tab on the actor page and send the links you used and the run ID. The note rows in the dataset usually name the reason already.