Goofish Xianyu Scraper (闲鱼 Idlefish) avatar

Goofish Xianyu Scraper (闲鱼 Idlefish)

Pricing

from $3.35 / 1,000 items

Go to Apify Store
Goofish Xianyu Scraper (闲鱼 Idlefish)

Goofish Xianyu Scraper (闲鱼 Idlefish)

Turn Goofish (闲鱼, Xianyu) item or seller links into a table. Each listing row has the title, price in yuan, the 10-point condition, want and view counts, location, the seller's nickname and good-review rate, every photo and the description. No account needed. $3.50 per 1,000 listings.

Pricing

from $3.35 / 1,000 items

Rating

0.0

(0)

Developer

Dami's Studio

Dami's Studio

Maintained by Community

Actor stats

0

Bookmarked

92

Total users

50

Monthly active users

3 days ago

Last modified

Categories

Share

Paste Goofish (闲鱼, Xianyu) item or seller links and get every listing as a row: 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. This works from links you already have: from the app, from a shared link or from a seller you follow.

InputGoofish item links or ids, and seller profile links or ids
OutputOne row per listing: price, condition, want and view counts, location, category and specs, seller rating and credit, photos and description
Ceiling5,000 listings per run
Account neededNone
Price$3.50 per 1,000 listings on the free plan, down to $3.35 on Business. The free plan's $5 a month covers about 1,400

🔍 What Goofish Scraper does

Goofish (闲鱼, Xianyu, sometimes written Idlefish) is Alibaba's second-hand marketplace. This takes listings you can already see 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 walk took 87 seconds on a test run, and a run of 13 item links took 11.

Filters are off unless you set them: a price band, how recently it was listed, a minimum condition and free shipping only. A listing a filter leaves out is not charged. If your filters match very few of the listings read, the run stops early and leaves a free note saying how many it read and kept.

Lite mode returns the listing record alone: no want, view or save counts and nothing about the seller. It is billed at its own lower price once that price is on the Pricing tab. Until then, a run with it on writes one free note and stops without fetching anything.

📋 What data you get from each Goofish listing

What you getField
Listing id and linkitemId, url
Title and the seller's descriptiontitle, description
Asking price, the "was" price, currency and shipping feeprice, originalPrice, currency, shippingFee
Goofish's 10-point conditionconditionLevel, conditionText
Interest: wants, views and saveswantCount, viewCount, collectCount
Sold counter and units on offersoldCount, quantity
Where the item iscity, province, district
The seller: id, masked nickname, good-review rate, reply rate, last seen, shelf size and salessellerId, sellerNick, sellerGoodReviewRate, sellerReplyRate24h, sellerLastSeen, sellerItemCount, sellerSoldCount, sellerUrl
Category, status and the date it was listedcategoryId, categoryName, status, listedAt
Specs the seller picked, brand and modelspecs, brand, model
Auction listing, free shipping, shop sellerauction, freeShipping, sellerIsShop
The seller's credit as Goofish shows it: Zhima credit label, real-person check, member since, good and bad reviews, usual reply timesellerZhimaCredit, sellerVerified, sellerSince, sellerGoodReviews, sellerBadReviews, sellerReplyTime
The seller's other listings, as linkssellerOtherItems
On listings Goofish inspected and stores itself: the inspection summary and the other units on saleinspection, variants, variantCount
Every photoimages, imageCount
Which part of Goofish answered, and whether it came from a seller you asked forsourceItemRecord, sourceDetailPage, foundViaSeller
When the row was readscrapedAt

▶️ How to scrape Goofish listings

  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.

With neither item links nor seller links you get one free example row telling you what to put where.

💰 How much does it cost to scrape Goofish listings?

$3.50 per 1,000 listings. That is the free plan's price; paid plans pay a little less: $3.45 on Starter, $3.40 on Scale and $3.35 on Business. On the free plan, the $5 Apify gives you each month covers about 1,400 listings.

Not charged: the example row, every note listed further down, listings your filters leave out, 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 you give it

{
"itemUrls": ["https://www.goofish.com/item?id=1080166744321", "1081033347338"],
"sellerUrls": ["https://www.goofish.com/personal?userId=605970805"],
"maxItems": 100,
"includeDescription": true
}
FieldDefaultWhat it is
itemUrlsnoneListing links, one per line. A full link, the mobile link or the bare number all work. The form opens with one example link.
sellerUrlsnoneSeller profile links or their numbers, one per line. Every listing on the profile is walked, up to the limit below.
maxItems1001 to 5,000 listings across the whole run. Only listings that come back count; free notes do not.
includeDescriptiontrueKeeps the seller's full description. Turn it off for a narrower table.
minPrice, maxPricenoneKeep only listings asking at least or at most this many yuan.
listedWithinDaysnoneKeep only listings put up in the last N days, 1 to 3,650.
minConditionnoneKeep only listings at or above this grade, 1 to 10, where 10 is brand new.
freeShippingOnlyoffKeep only listings Goofish marks as shipped free (包邮).
liteModeoffThe listing record only. See above for when it opens.
proxyConfigurationnoneOnly for your own servers, which are used as given. Leave it alone otherwise.

A value a filter can't use, such as a lowest price above the highest, stops the run before it fetches anything, with a free invalid_filters note.

📤 What you get back

A real row from a real run, with the photo list and the seller's other listings cut short:

{
"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": 23,
"viewCount": 494,
"collectCount": 10,
"soldCount": 0,
"quantity": 2,
"city": "上海",
"province": "上海",
"district": "闵行区",
"sellerId": "2208434265414",
"sellerNick": "正***店",
"sellerGoodReviewRate": "99%",
"sellerItemCount": 262,
"sellerSoldCount": 2991,
"sellerReplyRate24h": "96%",
"sellerLastSeen": "2小时前来过",
"sellerUrl": "https://www.goofish.com/personal?userId=2208434265414",
"categoryId": 50023914,
"status": "在线",
"listedAt": "2026-08-28T12: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,
"categoryName": "社科心理",
"brand": null,
"model": null,
"specs": {
"成色": "全新"
},
"auction": false,
"freeShipping": true,
"sellerIsShop": null,
"sellerZhimaCredit": null,
"sellerVerified": true,
"sellerSince": "2020-06-27T03:56:53.000Z",
"sellerGoodReviews": 487,
"sellerBadReviews": 4,
"sellerReplyTime": "38分钟",
"sellerOtherItems": [
"https://www.goofish.com/item?id=1036944580767",
"https://www.goofish.com/item?id=1090669018994"
],
"inspection": null,
"variants": null,
"variantCount": null,
"scrapedAt": "2026-10-17T17:46:47.528Z"
}
FieldHow to read it
price, originalPrice, currencyThe asking price in yuan, and the "was" price where the seller set one. Nothing is converted.
conditionLevel, conditionTextGoofish's own 10-point scale, where 10 is brand new. Read straight from the listing, never guessed from the photos.
wantCount, viewCount, collectCountHow many people want it, looked at it and saved it. On a second-hand market these say more than the price.
sellerNick, sellerLastSeenNicknames arrive masked by Goofish, and "last seen" is Goofish's own Chinese wording.
sellerItemCount, sellerSoldCountFrom the seller's profile header. Goofish's numbers, not a count of your rows.
sourceItemRecord, sourceDetailPageWhich part of Goofish answered for this row. Both true is a complete row.
foundViaSellerPresent only on rows from a seller profile you asked for, when the listing's own seller matches it. Lite rows never carry it, since lite mode doesn't read the seller.
categoryName, specs, brand, modelThe category and the labels the seller picked when listing it, in Chinese as Goofish shows them. specs is an object of label and value.
sellerZhimaCreditThe credit label Goofish shows for the seller, such as 信用极好, and null when it shows none. It is never a score we work out.
sellerVerifiedtrue when Goofish shows the seller's real-person check as passed, otherwise null.
sellerSince, sellerReplyTimeWhen the seller joined, and their usual reply time in Goofish's own Chinese wording.
sellerIsShoptrue when the listing page marks the seller as a shop, null when it doesn't say.
inspectionOnly on listings Goofish inspected: the report's conclusion, how many points were checked, how many were abnormal and the defects found.
variants, variantCountOnly on listings Goofish stores itself: other units on sale under the same listing, each with its own id, link, price and grade. variantCount is Goofish's total, and the list holds the ones it shows on the page.
scrapedAtWhen the row was read.

🧾 Reading the output

Real rows have no charged field. Every free row carries charged: false, so dropping those leaves only listings.

RowHow to spot itBilled
A listingAn itemId and no charged fieldyes
The example row_sample: trueno
A note_diagnostic: true, with a reason and a noteno

Notes use reason, not an error code:

reasonWhat it means
not_foundThe listing is gone, sold, withdrawn or deleted, or there is no public profile with that seller id.
unreadable_inputNo id could be read from that line.
seller_mismatchThe listings returned for that profile belong to other sellers, so none were kept.
no_listingsThe seller has nothing on show right now.
blockedGoofish did not answer for that listing or seller. It usually clears in a few minutes.
NOT_SERVEDThis listing was not served this run. Re-run it later. Until 12 October 2026 this code was called all_exits_refused.
charge_limit_reachedThe run's maximum cost was too low for even one listing, so nothing was fetched.
invalid_filtersA filter was set to a value no listing could match, so nothing was fetched.
few_matchesYour filters matched very few of the listings read, so the run stopped early. It says how many were read and kept.
lite_mode_not_openLite mode was on before its price is listed, so nothing was fetched.
unreadable_recordGoofish answered for that listing in a shape the actor could not read.
route_changedGoofish changed how it answers, so the run stopped. Try again later, or open an issue.
time_limitThe run got close to its time limit and stopped on its own. The listings delivered before that are complete and charged. Give the run more time, or ask for fewer listings, to get the rest. This is the one note that can end a run as failed, and only when the time limit stopped it before any listing came back.

💡 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. 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.
  • soldCount is 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.
  • It is not an official Goofish (Xianyu) tool. Dami's Studio is independent and is not affiliated with or endorsed by Goofish (Xianyu) or Alibaba, or by any other company named on this page.

🧭 Which China marketplace scraper do you need?

If you wantUse
Second-hand Xianyu listings, from links you already haveThis one
Retail products in a Taobao categoryTaobao Category Products Scraper
Whatever Taobao's homepage feed is recommending right nowTaobao Product Feed Scraper
1688 offers by search term: unit price, MOQ and the quantity price ladder1688 Wholesale Scraper
Public RedNote (Xiaohongshu) notes with their engagementRedNote Scraper

❓ Questions people ask

Can it search Goofish by keyword?

No. It works from listing and seller links.

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.

Can I call it from code or connect it to an AI assistant?

Yes. The API tab has ready-made code for Python, JavaScript and the command line. For Claude, ChatGPT or another MCP client, connect https://mcp.apify.com/?tools=fetch-actor-details,dami_studio/goofish-scraper. Either way the run happens on your Apify account at the same price.

It reads listings anyone can open without signing in. Apify's write-up on the legality of web scraping is a good starting point, and 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.