Goofish Scraper — Xianyu C2C Listings, Item Detail & Seller avatar

Goofish Scraper — Xianyu C2C Listings, Item Detail & Seller

Pricing

from $5.00 / 1,000 listing scrapeds

Go to Apify Store
Goofish Scraper — Xianyu C2C Listings, Item Detail & Seller

Goofish Scraper — Xianyu C2C Listings, Item Detail & Seller

Scrape Goofish (闲鱼/Xianyu — Alibaba C2C secondhand marketplace) by keyword, item URL/ID, or seller URL/ID. Returns title, price, condition, location, image, seller (Zhima credit, verification). Cookieless via MTOP XHR. Three modes auto-detected. MCP-ready.

Pricing

from $5.00 / 1,000 listing scrapeds

Rating

0.0

(0)

Developer

Khadin Akbar

Khadin Akbar

Maintained by Community

Actor stats

0

Bookmarked

15

Total users

5

Monthly active users

9 hours ago

Last modified

Share

Goofish Scraper — Xianyu Listings, Detail & Seller Data

Goofish Scraper is an Apify Actor for people who need structured Goofish (闲鱼/Xianyu, Alibaba's C2C secondhand marketplace) data from a keyword, an item URL or ID, or a seller URL or ID. It accepts one public input set, auto-detects the mode, and returns one record per scraped listing. Each record can include the title, price, condition, location, image, seller card, item URL, search query echo, result position, and capture timestamp. The Actor is usable through Apify MCP and returns dataset-backed records for downstream review or automation.

Best fit and connected workflows

This Actor fits workflows that start with public Goofish pages and end with structured marketplace records.

Common paths include:

  • Keyword discovery for category monitoring, price tracking, and topic browsing.
  • Item-level lookup when you already have a Goofish item URL or item ID.
  • Seller-level lookup when you want a seller profile plus that seller's active listings.
  • MCP-driven agent workflows where a tool call needs a bounded input, a clear output, and dataset readback.

Search mode also supports sorting and filtering, so you can route results toward newer posts, price-ordered lists, or a narrower range of price, condition, and freshness.

Practical scenario

A marketplace analyst starts with the search term "Sony A7 III" and wants a quick view of current Goofish listings. The Actor returns records with the title, current price in CNY, condition, city, primary image, seller card, and item URL. The analyst uses the returned price, condition, and city fields to shortlist listings, then opens the item URLs for manual review or passes the dataset to a follow-up step.

Input fields

FieldTypePurpose
searchQuerystringKeyword search mode. Chinese and English keywords both work.
startUrlsarray of stringsItem, seller, or search URLs. Mode is auto-detected from each URL.
itemIdsarray of stringsNumeric item IDs for detail mode.
sellerIdsarray of stringsNumeric seller user IDs for seller mode.
maxResultsintegerHard cap on returned and charged listings.
sortBystringSearch ordering: relevance, newest, priceAsc, priceDesc.
priceMinintegerMinimum listing price in CNY.
priceMaxintegerMaximum listing price in CNY.
conditionstringCondition filter: all, used, or new.
publishedWithinDaysintegerFreshness filter measured in days.
fetchDetailsbooleanEnrich each listing with detail-page data.
proxyConfigurationobjectProxy settings for Goofish access.

Focused JSON input example

{
"searchQuery": "iPhone 15 Pro",
"maxResults": 20,
"sortBy": "newest",
"priceMin": 5000,
"priceMax": 12000,
"condition": "used",
"publishedWithinDays": 14,
"fetchDetails": false
}

Output fields

FieldTypePurpose
modestringProduces search, detail, or seller.
itemIdstringGoofish numeric item ID.
titlestringListing title in original text.
pricenumberCurrent price in CNY.
originalPricenumberOriginal or strike-through price when surfaced.
currencystringISO 4217 currency code.
conditionstringSeller-reported item condition.
citystringCity or district location.
provincestringProvince when surfaced.
imagestringPrimary thumbnail image URL.
imagesarray of stringsListing image URLs, fully populated in detail mode.
descriptionstringFull listing description in detail mode.
wantCountintegerNumber of users who marked the item as wanted.
viewCountintegerListing view count in detail mode.
publishedAtstringPublication or last-bump timestamp.
sellerobjectSeller card with nickname, userId, Zhima credit, verification flags, and total listings.
itemUrlstringPublic Goofish item URL.
searchQuerystringSearch keyword echo in search mode.
positionintegerSearch result position, 1-indexed.
scrapedAtstringCapture timestamp.

Illustrative output record

{
"mode": "search",
"itemId": "1234567890",
"title": "Sony A7 III",
"price": 6200,
"currency": "CNY",
"condition": "9成新",
"city": "Shanghai",
"image": "https://example.com/image.jpg",
"seller": {
"nickname": "Alice",
"userId": "2200000000000",
"zhimaCredit": 800,
"verified": true
},
"itemUrl": "https://www.goofish.com/item?id=1234567890",
"searchQuery": "Sony A7 III",
"position": 1,
"scrapedAt": "2026-07-27T10:00:00Z"
}

How it works

The Actor uses PlaywrightCrawler and public Goofish web access. It intercepts Alibaba MTOP XHR responses and parses listing data from Goofish search and detail endpoints, including mtop.taobao.idlemtopsearch.pc.search and mtop.taobao.idle.pc.detail.

It auto-detects three modes from input:

  • Search mode from searchQuery or search URLs.
  • Detail mode from item URLs or itemIds.
  • Seller mode from seller URLs or sellerIds.

Proxy handling is resolved in this order:

  1. DataImpulse residential if the DATAIMPULSE_PROXY environment variable is set.
  2. Apify residential proxy.
  3. Apify datacenter US fallback.

Pricing

This Actor uses Pay per event plus Apify platform usage. The live Pricing tab shows the current event charges and platform usage details for your account.

Charged events include:

  • Actor start, billed once per run.
  • Listing scraped, billed per listing returned in search or seller mode when fetchDetails is false.
  • Listing enriched with detail, billed per returned listing when fetchDetails is true or when using detail mode.

For example, if a run returns ten listings in search mode, you are billed for ten listing events plus one start event. If the same run returns twenty-five detail-enriched listings, each returned listing is billed at the detail-enriched rate shown in the live Pricing tab.

Use with AI agents (MCP)

This Actor is available as an Apify Actor usable through Apify MCP. It is a precise tool for turning a public Goofish search term, item reference, or seller reference into structured marketplace records that an agent can inspect or pass downstream.

Actor identity: khadinakbar/goofish-scraper

Search Goofish for "Sony A7 III", return the newest used listings under 12000 CNY, and include the seller card for each item. Give me the dataset rows with item URL, price, condition, city, and position so I can compare options.

Output interpretation for agents:

  • mode identifies which input path produced the record.
  • itemUrl is the direct public page to inspect.
  • seller provides the seller card when surfaced by the source.
  • searchQuery and position help trace each record back to the originating search.
  • scrapedAt helps separate current run output from older dataset rows.

Provenance and scope:

  • Records come from public Goofish pages and Goofish-surfaced data.
  • Search output is one record per returned listing.
  • Detail mode can add the full description, all images, view count, want count, and the full seller card.
  • Seller mode returns the seller profile plus that seller's active listings.

Pagination and cost guidance:

  • maxResults sets the hard cap for returned and charged items.
  • Search and seller workflows can be narrowed with price range, condition, and freshness filters.
  • For cost-aware agent flows, start with a smaller maxResults, then widen only when needed.
  • Detail enrichment uses the higher per-listing event, so enable it when the extra fields are useful for the task.

JavaScript example with Apify API and dataset readback

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({
token: process.env.APIFY_TOKEN,
});
const run = await client.actor('khadinakbar/goofish-scraper').call({
searchQuery: 'Sony A7 III',
maxResults: 10,
sortBy: 'newest',
fetchDetails: false,
});
const dataset = await client.dataset(run.defaultDatasetId).listItems();
for (const item of dataset.items) {
console.log(item.itemId, item.title, item.price, item.itemUrl);
}

Best results and outcome guidance

Use the most direct input for the task:

  • Start with searchQuery when you need discovery by topic or model name.
  • Use itemIds or an item URL when you already know the exact listing.
  • Use sellerIds or a seller URL when you want one seller's active listings.
  • Use sortBy: newest for fresh inventory checks.
  • Use priceMin, priceMax, condition, and publishedWithinDays to shape search results before review.
  • Enable fetchDetails when the task benefits from full description text, all images, and richer seller information.

Continue the workflow

Design note

I found that the output contract includes a dedicated scrapedAt field, which makes each record easy to trace to a specific capture time in the dataset.

FAQ

Can I use this Actor with a Goofish search keyword only?

Yes. searchQuery is a supported input path and the Actor auto-detects search mode.

Can I send a Goofish item URL instead of an ID?

Yes. startUrls accepts item URLs, seller URLs, and search URLs, and the mode is detected from each URL.

Can I scrape seller pages and seller listings together?

Yes. sellerIds and seller URLs are supported, and seller mode returns the seller profile plus active listings.

Can I enrich search results with detail-page fields?

Yes. Set fetchDetails: true to add detail-page data such as full description, all images, view count, want count, and the full seller card.

How do I control the number of billed records?

Use maxResults as the hard cap, and combine it with filters such as price range, condition, and freshness.

Responsible use

Use this Actor for lawful access to public Goofish content and for workflows that respect applicable terms, privacy rules, and platform policies. Keep usage focused on public marketplace data, review seller information thoughtfully, and handle any personal or identifying information with care.