Goofish Xianyu Scraper (闲鱼 Idlefish) avatar

Goofish Xianyu Scraper (闲鱼 Idlefish)

Pricing

from $3.50 / 1,000 item returneds

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

Goofish Xianyu Scraper (闲鱼 Idlefish)

Turn Goofish (闲鱼 / Xianyu) links into a clean table. Paste listing links or a seller profile and get title, price, condition, want and view counts, seller nickname and good-review rate, location, every photo and the listing URL. No account needed. You only pay for listings that come back.

Pricing

from $3.50 / 1,000 item returneds

Rating

0.0

(0)

Developer

Dami's Studio

Dami's Studio

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

16 hours ago

Last modified

Categories

Share

Goofish (闲鱼) Xianyu Scraper

Paste Goofish listing links, or a seller's profile link, and get back a clean table: title, asking price, what the seller says the condition is, how many people have saved it, how many have looked at it, where it is, who is selling it and what their good-review rate is, every photo, and the link back.

Goofish (闲鱼, Xianyu, sometimes written Idlefish) is Alibaba's second-hand marketplace. It is where most of China's used-goods trade actually happens, and almost none of it is visible from outside the app.

Read the limitations section before you buy. There is a real one at the top of it, and it will decide whether this is useful to you.


What you put in

Two fields. Use either, or both in the same run.

{
"itemUrls": [
"https://www.goofish.com/item?id=1051964780358",
"1080166744321"
],
"sellerUrls": [
"https://www.goofish.com/personal?userId=605970805"
],
"maxItems": 100,
"includeDescription": true
}
  • Item links: a full goofish.com/item?id=... link, the h5.m.goofish.com mobile version, or just the number. All three work.
  • Seller links: a goofish.com/personal?userId=... link, or just the number. Every listing on that profile is walked, twenty at a time, and returned in exactly the same shape as an item link.
  • Maximum listings: a hard stop for the whole run. Item links are done first, then sellers.
  • Include the seller's description: leave it on for the full text, turn it off for a narrower table.

If you run it with nothing filled in, you get one clearly-labelled free example row telling you what to put where. You are not charged for it.


What you get back

One row per listing. A real one, from a live run:

{
"itemId": "1069417084034",
"url": "https://www.goofish.com/item?id=1069417084034",
"title": "上市公司碳排放量/碳排放强度2010-2024",
"price": 2,
"originalPrice": 0,
"currency": "CNY",
"shippingFee": 0,
"conditionLevel": 9,
"conditionText": "9/10",
"wantCount": 173,
"viewCount": 1851,
"collectCount": 67,
"soldCount": 0,
"quantity": 9849,
"city": "上海",
"province": "上海",
"district": "黄浦区",
"sellerId": "2222727101158",
"sellerNick": "南***鱼",
"sellerGoodReviewRate": "98%",
"sellerItemCount": 679,
"sellerSoldCount": 3363,
"sellerReplyRate24h": "99%",
"sellerLastSeen": "45分钟前来过",
"sellerUrl": "https://www.goofish.com/personal?userId=2222727101158",
"categoryId": 50023914,
"status": "在线",
"listedAt": "2026-07-21T15:34:17.000Z",
"images": ["https://img.alicdn.com/bao/uploaded/i2/O1CN01eHDc0ukvCtC2b8G8_..."],
"imageCount": 2,
"description": "...",
"sourceItemRecord": true,
"sourceDetailPage": true
}

A few of those need explaining:

  • price is what the seller is asking, in yuan. originalPrice is the "was" figure where the seller set one, and is usually null. Nothing is converted to another currency; converting it would mean picking an exchange rate and quietly baking it into your data.
  • conditionLevel is Goofish's own 10-point scale, where 10 means brand new. conditionText is a plain reading of it. The number comes straight from the listing; we do not guess it from the photos or the wording.
  • wantCount and viewCount are the real interest signals. On a second-hand marketplace they tell you more than the price does: a ¥3 listing with 2,119 wants and 10,355 views is a very different object from a ¥2,569 camera with 0 and 0.
  • sellerGoodReviewRate is the percentage Goofish shows on the seller's own page. sellerLastSeen is their "last active" string, in Chinese, exactly as the site renders it.
  • Nicknames arrive masked (南***鱼). That is Goofish masking them, not us. There is no unmasked version available to anyone who is not logged in.
  • sourceItemRecord and sourceDetailPage say which of the two Goofish endpoints answered for that row. Both true is a complete row. If one is false, the fields it owns are null rather than guessed, and you can see at a glance that it happened. See the note about old listings below.
  • foundViaSeller appears only on rows that came from a seller profile and whose own seller id matches the profile you asked for.

Rows that are not listings

Some rows are free diagnostics, and they always carry _diagnostic: true and charged: false:

reasonWhat happened
not_foundThe listing is gone: sold, withdrawn or deleted.
unreadable_inputNo id could be read from that line.
seller_mismatchThe listings returned for that profile belong to other people, so none were kept.
no_listingsThe seller has nothing on show right now.
blockedGoofish would not answer for that one. Usually clears in a few minutes.
all_exits_refusedGoofish refused every attempt the run was allowed to make, so the rest were not attempted.
charge_limit_reachedThe run's cost limit was too low to return even one listing, so nothing was fetched.

Filter them out with ?filter= on the dataset, or just ignore any row where _diagnostic is set.


Limitations: read this part

There is no keyword search, and that is not an oversight. Goofish's keyword search endpoint requires a logged-in account. Signed out it answers with a login demand, and it does so for everything, including a real Chrome browser on a home connection, which renders an empty results page. This Actor does not create accounts and does not ask you for yours, so it cannot search. If what you need is "find me all listings for X", this is the wrong tool and you should not buy it. What it does instead is turn links you already have (from the app, from a shared link, from a seller you are watching) into structured data.

Other things worth knowing before you spend anything:

  • Old listings come back thinner, and the row tells you when. Goofish keeps the detail page for long-archived listings but drops the underlying item record, so those rows have the title, price, want and view counts and the seller, while conditionLevel, images, province, district, categoryId, quantity and description are null. Measured on a 150-listing seller walk: 140 rows complete, 10 thin, all ten of them listings from previous years. sourceItemRecord: false is the flag. It is never guessed at and never filled in with a placeholder.
  • Seller profiles are capped by Goofish at what the profile itself shows. Sold and delisted items are not on there, so you get the seller's current shelf, not their history.
  • A seller's listing count and sold count come from their profile header. They are Goofish's numbers, not a count of the rows returned, and the two can differ.
  • soldCount is 0 on most listings: Goofish does not populate it consistently, and a 0 there does not mean nothing sold. wantCount and viewCount are the two that are reliably present.
  • Everything is in Chinese, because that is what is on the listings. Titles, cities, condition labels and the seller's "last seen" string are passed through unchanged rather than machine-translated into something you cannot check.
  • Prices move. A Goofish seller can change the asking price at any time, and many relist the same object repeatedly. A row is a snapshot of the moment it was fetched.
  • A listing that goes away mid-run comes back as a free not_found row, not a gap and not a silent drop.

What it costs you

A flat price per listing that actually comes back, plus a small fee per run. There are no volume tiers to work out and no monthly minimum.

Free rows stay free. The example row, every diagnostic in the table above, and every listing Goofish could not return are written to your dataset without being charged. A run that finds nothing charges you for nothing beyond starting it.

If you set a maximum cost on the run and it is too low to return a single listing, the Actor stops before fetching anything and tells you, rather than spending the budget on a partial answer.


FAQ

Can it search Goofish by keyword? No. Goofish requires a logged-in account for search, and this Actor does not use accounts. It works from listing links and seller profile links.

Do I need a Goofish account, a cookie or a token? No. You paste links; nothing else is asked of you and nothing is stored.

Can I give it a link copied from the Goofish app? Yes. App share links, www.goofish.com, h5.m.goofish.com and bare numeric ids all work.

What is Xianyu, and is it the same thing as Goofish? Same marketplace. 闲鱼 (Xianyu) is the Chinese name, Goofish is the name on the international domain, and Idlefish is a common transliteration. All three refer to Alibaba's second-hand app.

Why are the seller nicknames full of asterisks? Goofish masks them for anyone who is not signed in. That is the platform's behaviour and it applies to every tool, including this one.

How many listings can I pull from one seller? As many as their profile shows, subject to your maximum-listings setting. Profiles are walked twenty at a time until the pages stop producing new listings.

Are the prices in US dollars? No, yuan (CNY), as listed. Nothing is converted.

Can I run it on a schedule to watch a price? Yes. Point it at the item links you care about and schedule it; each run is a fresh snapshot with a timestamp.

What happens if Goofish blocks a request? The Actor tries again. If every attempt it is allowed to make gets refused, it stops, says so in the log, and writes a free row explaining why. It does not charge you for the attempts.


Output fields

FieldMeaning
itemId, urlThe listing's id and its link
titleThe listing title, as written
price, originalPrice, currencyAsking price and any "was" price, in CNY
shippingFeePostage as listed, 0 when free
conditionLevel, conditionTextCondition on Goofish's 10-point scale, 10 = brand new
wantCount, viewCount, collectCount, soldCountInterest and sales counters
quantityUnits the seller says are available
city, province, districtWhere the item is
sellerId, sellerNick, sellerUrlWho is selling it
sellerGoodReviewRate, sellerReplyRate24h, sellerLastSeenSeller reputation and responsiveness
sellerItemCount, sellerSoldCountHow much they list and how much they have sold
categoryIdGoofish's own category id
statusListing state as Goofish labels it
listedAtWhen it was posted, ISO 8601
images, imageCountEvery photo URL on the listing
descriptionThe seller's description, when you leave that option on
sourceItemRecord, sourceDetailPageWhich endpoints answered for this row
foundViaSellerPresent when the row came from a seller profile you asked for