# Goofish Scraper 闲鱼 Xianyu (Idlefish)—Search, Prices & Seller (`axon-studio/goofish-xianyu-scraper`) Actor

\[100% No Cookie / No Login — $4.5/1k] All-in-one Goofish (闲鱼 / Xianyu / Idlefish) C2C marketplace API. Extract newest listings, CNY prices, want counts, 50+ item details, HD images, seller shop inventory, Sesame Credit & buyer reviews. Auto EN/Pinyin→ZH translation.

- **URL**: https://apify.com/axon-studio/goofish-xianyu-scraper.md
- **Developed by:** [Axon Studio](https://apify.com/axon-studio) (community)
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.80 / 1,000 item scrapeds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

### Goofish Scraper 闲鱼 Xianyu (Idlefish) — Listings, Prices & Sellers

Scrape **Goofish / Xianyu / 闲鱼 / Idlefish**, Alibaba's biggest second-hand marketplace in China. You get real listing prices in CNY ¥, "I Want" counts, views, condition tags, full descriptions, HD images, item specifications, seller Zhima credit levels and buyer reviews. Data comes straight from the official `www.goofish.com` H5 MTOP gateway.

You can type queries in English, Pinyin or Chinese (`Labubu`, `huananzhi`, `pop mart`, `iPhone`). The built-in localizer turns them into the Chinese terms Goofish sellers actually use, which fixes the "0 results" problem many competing scrapers have. Users on the Apify Free plan ($5 monthly credit) can extract up to 1,111 Goofish (Xianyu) listings per month for free.

### What Can This Goofish (Xianyu) Scraper Do? (Features)

| Feature | Description |
| --- | --- |
| 4 extraction modes | Keyword search, item details, seller shop listings, seller profile & reviews |
| Bilingual auto-localization | English & Pinyin brand dictionary (Labubu, Pop Mart, Huananzhi, DJI, Leica, LV, Rolex…) plus a Google Translate fallback |
| Deep detail enrichment | 50+ fields per listing via `mtop.taobao.idle.pc.detail`, fetched with 5 concurrent requests |
| Deal-sniper filters | Newest-first sorting, price range, published within 1/3/7/14 days, verified-recent (excludes bumped old posts) |
| Trust filters | Free shipping (包邮), brand new (全新), official inspection (验货宝), Zhima credit excellent (芝麻信用极好) |
| Region filter | Filter by seller province/city in Chinese or English (`广东` / `Guangdong`) |
| Gets past pagination limits | Rotates sort orders and bilingual query variants when a search runs out of pages, with strict `itemId` deduplication |
| Seller intelligence | Optional cascade: one seller profile record (credit, verification, good rate, recent reviews) per unique seller |
| Delta mode | Scheduled runs return only listings you haven't seen before |
| Real-time streaming | Results are pushed to the dataset in batches of 10, even if the run is aborted or times out |
| No made-up data | Returns only genuine matches. No filler rows and no sentiment guessing |

### How to Scrape Goofish (Xianyu) in 3 Easy Steps

1. **Choose a mode.** Pick `search`, `item_details`, `seller_items` or `seller_profile`.
2. **Add your targets.** Enter keywords (any language), Goofish search URLs, item IDs/URLs or seller IDs/profile URLs. Set filters like price range, `newest` sorting or `free_shipping`.
3. **Run and export.** Click **Start**, then download results as JSON, CSV, Excel or HTML, or pull them through the Apify API.

### Goofish & Xianyu Scraper Use Cases

- **Cross-border arbitrage:** compare Chinese second-hand prices for Labubu, Pop Mart, Pokemon cards, Leica cameras or RTX GPUs against eBay, Mercari and StockX.
- **Deal sniping:** run `newest` + `publishedWithin: 1d` searches on a schedule to catch under-priced listings within minutes.
- **Market research:** track demand (`wantCount`, `viewCount`) and price distribution for designer toys, anime goods (谷子), luxury bags and sneakers.
- **Seller due diligence:** check Zhima credit, real-name verification, good rate and recent buyer reviews before buying.
- **Resale analytics:** follow a competitor's shop inventory and pricing changes with `seller_items`.

### Input

| Mode | What it does | Required input |
| --- | --- | --- |
| `search` | Search Goofish listings by keyword or search URL | `searchQuery` and/or `searchUrls` |
| `item_details` | 50+ deep fields per listing | `itemIds` |
| `seller_items` | All active listings of a seller | `sellerIds` |
| `seller_profile` | Seller credit profile + recent buyer reviews | `sellerIds` |

| Field | Type | Default | Description |
| --- | --- | --- | --- |
| `mode` | enum | `search` | `search`, `item_details`, `seller_items`, `seller_profile` |
| `searchQuery` | array of strings | `["Labubu", "iPhone"]` | Keywords in English, Pinyin or Chinese |
| `searchUrls` | array of strings | `[]` | Goofish search URLs. The `q` keyword is parsed automatically |
| `detailLevel` | enum | `full` | `full` enriches each listing with the detail API. `fast` returns search feed fields only |
| `sortBy` | enum | `default` | `default`, `newest`, `wants`, `price_asc`, `price_desc` |
| `minPrice` | number | – | Minimum price in CNY ¥ (checked at the API and again locally) |
| `maxPrice` | number | – | Maximum price in CNY ¥ (checked at the API and again locally) |
| `publishedWithin` | enum | `any` | `any`, `1d`, `3d`, `7d`, `14d` |
| `verifiedRecentOnly` | boolean | `false` | Exclude old listings that sellers re-polished (擦亮) to the top |
| `quickFilters` | enum | `none` | `none`, `free_shipping`, `brand_new`, `inspected`, `credit_excellent` |
| `regionFilter` | string | `""` | Seller province/city, e.g. `广东`, `上海`, `Guangdong`, `Shanghai` |
| `autoLocalize` | boolean | `true` | Translate English/Pinyin brand names into Chinese search terms |
| `itemIds` | array of strings | `[]` | Numeric item IDs or `https://www.goofish.com/item?id=...` URLs |
| `sellerIds` | array of strings | `[]` | Seller userIds or `https://www.goofish.com/personal?userId=...` URLs |
| `includeSellerProfiles` | boolean | `false` | Add one `seller_profile` record per unique seller (search / item details) |
| `maxResults` | integer | `30` | Maximum number of primary records (1–5000) |
| `onlyNewResults` | boolean | `false` | Delta mode: emit only listings not seen in previous runs |
| `proxyConfiguration` | object | `{"useApifyProxy": false}` | Optional Apify Proxy or custom proxies |

```json
{
    "mode": "search",
    "searchQuery": ["Labubu", "iPhone"],
    "detailLevel": "full",
    "sortBy": "newest",
    "minPrice": 50,
    "maxPrice": 3000,
    "publishedWithin": "3d",
    "verifiedRecentOnly": false,
    "quickFilters": "free_shipping",
    "regionFilter": "Guangdong",
    "autoLocalize": true,
    "includeSellerProfiles": false,
    "maxResults": 100,
    "onlyNewResults": false
}
```

### Output

```json
{
    "mode": "search",
    "itemId": "850620703054",
    "title": "泡泡玛特 Labubu 心动马卡龙 搪胶毛绒 全新未拆",
    "price": 129.0,
    "originalPrice": 99.0,
    "itemStatus": "on_sale",
    "isSold": false,
    "wantCount": 41,
    "viewCount": 1288,
    "collectCount": 23,
    "conditionTag": "全新",
    "freeShipping": true,
    "inspectTag": null,
    "regionEn": "Guangdong",
    "regionName": "广东 深圳",
    "sellerId": "2206538690418",
    "sellerNick": "潮玩小铺",
    "sellerAvatar": "https://img.alicdn.com/bao/uploaded/i4/O1CN01...jpg",
    "sellerCreditLevel": "卖家信用极好",
    "sellerGoodRate": "99%",
    "sellerSoldCount": 356,
    "description": "全新未拆，官方渠道购入，支持验货……",
    "categoryId": "50023914",
    "categoryName": "潮玩盲盒",
    "specifications": {"品牌": "泡泡玛特", "成色": "全新"},
    "images": ["https://img.alicdn.com/bao/uploaded/i4/O1CN01...jpg"],
    "videoUrl": null,
    "createdAtIso": "2026-10-28T09:12:44Z",
    "itemUrl": "https://www.goofish.com/item?id=850620703054",
    "queryUsed": "拉布布 Labubu",
    "source": "mtop_search",
    "detailEnriched": true,
    "scrapedAt": "2026-10-28T17:20:01Z"
}
```

#### Output Field Definitions

| Field | Description |
| --- | --- |
| `mode` | Mode that produced the record |
| `itemId` | Goofish listing ID |
| `title` | Listing title |
| `price` / `originalPrice` | Selling price / original price in CNY ¥ |
| `itemStatus` / `isSold` | Availability status (`on_sale` or `sold`) and boolean sold flag |
| `wantCount` | Number of "I Want" (想要) clicks |
| `viewCount` / `collectCount` | Page views / favorites |
| `conditionTag` | Condition badge (全新, 几乎全新, 轻微使用痕迹 …) |
| `freeShipping` | Free shipping (包邮) |
| `inspectTag` | Supports official inspection (验货宝) |
| `regionName` / `regionEn` | Seller location in Chinese / English province name |
| `sellerId`, `sellerNick`, `sellerAvatar` | Seller identity |
| `sellerCreditLevel` | Zhima / seller credit badge |
| `sellerGoodRate`, `sellerSoldCount` | Positive rate and sold count, when exposed |
| `description` | Full long-form description |
| `categoryId`, `categoryName`, `specifications` | Category and structured attributes (brand, model, condition…) |
| `images`, `videoUrl` | HD image URLs and product video |
| `createdAtIso` | Publish time (ISO 8601, UTC) |
| `itemUrl` | Direct goofish.com listing URL |
| `queryUsed`, `source`, `detailEnriched` | Matched query, data channel, whether detail enrichment succeeded |
| `sellerSignature`, `sellerVerified`, `sellerReviews`, `sellerFollowers` | Only in `seller_profile` records |

### Automated Goofish Deal & Arbitrage Monitoring (Schedules & Delta Mode)

1. Create a task with `sortBy: "newest"`, `publishedWithin: "1d"` and your price limits.
2. Turn on `onlyNewResults` (delta mode). Seen `itemId`s are stored in a named key-value store (`goofish-xianyu-delta`), so each run returns only new listings.
3. Add an Apify **Schedule** (for example every 15 minutes) and connect a webhook, Slack, Google Sheets or Make/Zapier integration to get instant alerts.

#### Optional Logged-in Session

Goofish sometimes protects its search and detail gateways with a login slider. Set the **environment variable** `GOOFISH_COOKIE_POOL` (Actor settings → Environment variables, marked as secret) to one full browser cookie string per line to unlock the full search and detail APIs. Without it, or if every pooled session expires, the scraper switches to anonymous `_m_h5_tk` token mode automatically. In that case, search falls back to the public goofish.com feed channels and keeps **only** listings that genuinely contain your keyword.

### How Much Does It Cost to Scrape Goofish (Xianyu)? (Pricing)

This Actor uses **pay-per-event** pricing:

| Event | Price |
| --- | --- |
| `actor-start` | charged once per run (negligible) |
| `item-scraped` | $0.0045 per dataset record ($4.50 per 1,000) |

Cascaded seller profile records count as billed records. They do not use up your `maxResults` quota of primary listings. You only pay for records that actually reach your dataset. With the $5 Free plan credit you can collect about 1,111 listings per month.

### FAQ & Legal Compliance

#### Can I search in English?

Yes. With `autoLocalize` on, `labubu` becomes `拉布布 Labubu`, `huananzhi` becomes `华南金牌` and `pop mart` becomes `泡泡玛特`. Unknown English terms go through Google Translate. The original term is also searched, so you get results for both.

#### Why did I get fewer results than `maxResults`?

The scraper never pads results. If Goofish only has 37 real matches for your filters, you get 37 records.

#### Is scraping Goofish legal?

This Actor only collects publicly visible listing and seller information. You are responsible for following Goofish's terms of service, Chinese and local data protection laws (PIPL, GDPR) and copyright rules. Do not use personal data for spam or other unlawful purposes.

### More Chinese Social Intelligence & E-Commerce Scrapers by Axon Studio

- [Weibo Scraper](https://apify.com/axon-studio/weibo-scraper) – posts, comments and trending topics from Sina Weibo.
- [Bilibili Scraper](https://apify.com/axon-studio/bilibili-scraper) – videos, danmaku, comments and creator stats from Bilibili.
- [Black Cat Complaints Scraper](https://apify.com/axon-studio/blackcat-complaints-scraper) – consumer complaints from Sina Black Cat (黑猫投诉).

# Actor input Schema

## `mode` (type: `string`):

Select the primary extraction mode: search second-hand listings by keywords/URLs, extract 50+ deep fields for specific item IDs/URLs, fetch all active listings from a seller shop, or extract seller credit profiles and buyer reviews.

## `searchQuery` (type: `array`):

Enter one or more keywords, brand names, model numbers, or anime IP names (e.g., 'Labubu', 'iPhone', 'RTX 4090', 'Pop Mart', 'Leica'). When Auto-Localize is enabled, English and Pinyin queries are automatically mapped to high-recall Chinese Goofish search terms.

## `searchUrls` (type: `array`):

Optional list of direct Goofish search URLs (e.g., https://www.goofish.com/search?q=Labubu). The scraper automatically parses the 'q' query parameter and merges it with your search queries.

## `detailLevel` (type: `string`):

Choose 'full' (default) to enrich every discovered search listing concurrently via the Goofish Item Detail API (full long-form description, all HD images, specifications dict, view counts, and seller credit metrics), or 'fast' to return search feed fields rapidly.

## `sortBy` (type: `string`):

Sort Goofish search results by Comprehensive Relevance, Newest Published First (essential for deal sniping and arbitrage), Most Wants (highest buyer demand), or Price Ascending / Descending.

## `minPrice` (type: `number`):

Optional minimum listing price in Chinese Yuan (CNY ¥). Applied both at the MTOP API query layer and strictly verified during local item parsing.

## `maxPrice` (type: `number`):

Optional maximum listing price in Chinese Yuan (CNY ¥). Applied both at the MTOP API query layer and strictly verified during local item parsing.

## `publishedWithin` (type: `string`):

Filter listings by how recently they were published on Goofish (Last 24 hours, 3 days, 7 days, or 14 days).

## `verifiedRecentOnly` (type: `boolean`):

When enabled, excludes older listings that sellers artificially bumped/re-polished ('擦亮') and retains only genuinely newly created items.

## `quickFilters` (type: `string`):

Apply Goofish trust and condition badges: Free Shipping (包邮), Brand New (全新), Official Inspection / Yanhuobao (验货宝), or Zhima Credit Excellent (芝麻信用极好).

## `regionFilter` (type: `string`):

Filter listings by seller shipping province or city in either Chinese or English (e.g., '广东', '上海', '北京', '浙江', 'Guangdong', 'Shanghai', 'Beijing', 'Zhejiang').

## `autoLocalize` (type: `boolean`):

Automatically translates and expands English/Pinyin brand and IP queries (e.g. 'huananzhi' -> '华南金牌', 'pop mart' -> '泡泡玛特', 'genshin' -> '原神', 'lv' -> '路易威登') using the built-in Goofish dictionary and Google Translate fallback for maximum Chinese marketplace recall.

## `itemIds` (type: `array`):

Provide numeric Goofish item IDs (e.g., '850620703054') or full item URLs (e.g., 'https://www.goofish.com/item?id=850620703054') when using 'item_details' mode.

## `sellerIds` (type: `array`):

Provide Goofish seller userIds or profile URLs (e.g., 'https://www.goofish.com/personal?userId=...') when using 'seller_items' or 'seller_profile' mode.

## `includeSellerProfiles` (type: `boolean`):

When enabled during 'search' or 'item_details' mode, automatically fetches and emits a dedicated 'seller_profile' record (including Zhima credit, good rate, and recent buyer reviews) for each unique seller encountered.

## `maxResults` (type: `integer`):

Maximum number of primary records (listings or seller profiles) to collect across the run.

## `onlyNewResults` (type: `boolean`):

When enabled, persists seen itemId values in a named Apify Key-Value Store across scheduled runs and outputs only newly discovered listings.

## `proxyConfiguration` (type: `object`):

Configure proxy routing for Goofish MTOP requests. Direct connection works out-of-the-box; enable Apify Proxy if running high-volume concurrent tasks.

## Actor input object example

```json
{
  "mode": "search",
  "searchQuery": [
    "Labubu",
    "iPhone"
  ],
  "searchUrls": [],
  "detailLevel": "full",
  "sortBy": "default",
  "publishedWithin": "any",
  "verifiedRecentOnly": false,
  "quickFilters": "none",
  "regionFilter": "",
  "autoLocalize": true,
  "itemIds": [],
  "sellerIds": [],
  "includeSellerProfiles": false,
  "maxResults": 30,
  "onlyNewResults": false,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `dataset` (type: `string`):

Dataset containing extracted Goofish second-hand listings, CNY prices, want counts, item specifications, seller credit metrics, and buyer reviews.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "searchQuery": [
        "Labubu",
        "iPhone"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("axon-studio/goofish-xianyu-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "searchQuery": [
        "Labubu",
        "iPhone",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("axon-studio/goofish-xianyu-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "searchQuery": [
    "Labubu",
    "iPhone"
  ]
}' |
apify call axon-studio/goofish-xianyu-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,axon-studio/goofish-xianyu-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/qzwz3f7V1xA7q2Jbs/builds/UUfrnV6bY8JeF0Fd4/openapi.json
