# Xianyu 闲鱼 Scraper (Goofish) - Listings & Prices | No Login (`clover_folktale/xianyu-scraper`) Actor

Search Xianyu 闲鱼 (Goofish) second-hand listings by keyword. Get price, original price, want count, publish time, location, tags, photos and link as clean JSON. Chinese keywords work. No login or cookies. Seller identity is not included. Export to JSON, CSV or Excel.

- **URL**: https://apify.com/clover_folktale/xianyu-scraper.md
- **Developed by:** [Silkline](https://apify.com/clover_folktale) (community)
- **Categories:** E-commerce, Lead generation
- **Features:** Limited permissions
- **Stats:** 1 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per event

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

**You put in:** `{"keyword": "iphone", "maxResults": 10}`

**You get back:** one record per listing with 22 fields. Three records from a real run on 2026-11-03, some of the fields:

| `title` | `price` | `wantCount` | `location` | `sellerGoodRate` |
|---|---|---|---|---|
| 苹果12pro国行 128g内存 蓝色 成色还算可以，电池7 4，屏… | 1550 | 8 | 河北 | 87 |
| 苹果18pro 256GB 电池100% 循环1次 10.28激活… | 8888 | 0 | 浙江 | 84 |
| 苹果11promax 256G 国行 深空灰 电池健康80% 插卡即… | 1250 | 0 | 北京 | 60 |

**You pay:** 100 listings cost $0.71 on the Bronze plan. Free Apify accounts get 2 trial runs of up to 10 results each, nothing charged.

Xianyu Scraper (闲鱼, Goofish) is a Xianyu API alternative that searches Xianyu, China's largest second-hand marketplace, by keyword and returns the public listings as clean, flat JSON. Every record has the listing ID, link, title, price as a number in CNY, the original price when the seller cut it, how many people want the item, publish time, location, tags, photos and more. Chinese keywords work. It is for resellers, price monitors, market researchers and AI and data teams, with no Xianyu account, API keys, proxies or cookies needed. Seller identity (ID, nickname) is not included. Pricing is pay-per-event: $0.007 per listing, plus a $0.01 start fee per run.

### What is Xianyu?

Xianyu (闲鱼, also called Goofish) is the second-hand marketplace of Alibaba. Individuals and small shops list used phones, cameras, clothes, books, collectibles and almost everything else, and buyers tap "want" (想要) to start a chat. Because prices are set by the seller and change often, Xianyu is a good place to see what used goods really sell for in China.

### What data can you get?

One record per listing, the same fields for every keyword.

| Field | What it contains |
|---|---|
| `listingId` | Xianyu listing ID |
| `url` | Link to the listing on goofish.com |
| `title` | The text the seller wrote as the listing title |
| `price` | Asking price in CNY (yuan), as a number |
| `originalPrice` | Price before the latest price cut (the price plus the cut the card shows); empty when the price was not cut |
| `priceDrop` | Amount of the latest price cut in CNY (the card's "已降110元"); empty when not cut |
| `wantCount` | Number of people who tapped "want" (想要); 0 when the card shows none |
| `publishedAt` | Publish time, ISO 8601 UTC |
| `location` | Province or city shown on the card |
| `shipping` | Shipping offer: 包邮 (free shipping), 仅自提 (pickup only), 包邮或自提; empty when none is shown |
| `tags` | Tags on the card as plain text: condition (几乎全新), brand, specification, seller credit, guarantees (验货宝), shipping perks |
| `isVideo` | True when the main media of the listing is a video |
| `isAd` | True for a sponsored result |
| `isAuction` | True for an auction listing |
| `categoryId` | Xianyu category ID |
| `coverUrl` | Cover image |
| `imageUrls` | All listing photos in order (the cover image for a video listing) |
| `sellerReviewCount` | Number of reviews the seller has, as the card shows it (a count only) |
| `sellerGoodRate` | Share of positive reviews of the seller in percent, as the card shows it |
| `searchKeyword` | The keyword the listing was found with |
| `position` | Rank of the listing in the search results, starting at 1 |
| `type` | Record type, always `listing` |

**Seller identity is not included.** Xianyu keeps the seller's ID and nickname encrypted in its search results, and this Actor does not return them. You get the listing and its public numbers, not who is selling.

#### How the data is shaped

- **Numbers you can use.** `price`, `originalPrice`, `priceDrop`, `wantCount` and `sellerGoodRate` are numbers, not text.
- **Flat fields.** One record per listing, with the photos as one list and the tags as one list of plain strings.
- **Ads are marked, not hidden.** Sponsored results come back in the same list with `isAd` set to `true`. Each returned listing is charged, ads included.

### How to use Xianyu Scraper

1. Open the Actor in Apify Console.
2. Type a **Keyword**, in Chinese or English.
3. Set **Max results** to the number of listings you want.
4. Click **Start**. When the run finishes, download the dataset as JSON, CSV or Excel, or read it through the Apify API.

The Actor also runs in seconds with an empty input: `{}` searches "iphone".

### Input

| Field | Type | Required | What it does | Default |
|---|---|---|---|---|
| `keyword` | string | Optional | Search keyword, Chinese or English | Falls back to `iphone` when empty |
| `maxResults` | integer | Optional | Maximum number of listings (1 to 1000). The run stops as soon as it is reached. You are charged per listing returned | `20` |

#### Example: used cameras

```json
{
  "keyword": "富士相机",
  "maxResults": 100
}
```

### Output example

The values below are illustrative.

```json
{
  "type": "listing",
  "listingId": "1095600000000",
  "url": "https://www.goofish.com/item?id=1095600000000",
  "searchKeyword": "iphone",
  "position": 5,
  "title": "iPhone 17 Pro Max 蓝色 256G 原装未拆 有盒线",
  "price": 6888,
  "originalPrice": 6998,
  "priceDrop": 110,
  "wantCount": 3,
  "publishedAt": "2026-10-28T02:06:26Z",
  "location": "江西",
  "shipping": "包邮或自提",
  "tags": ["细微磕碰划痕", "Apple/苹果", "256GB", "卖家信用极好", "验货宝", "包邮", "卖家包验货费"],
  "isVideo": false,
  "isAd": false,
  "isAuction": false,
  "categoryId": "50025386",
  "coverUrl": "https://img.alicdn.com/bao/uploaded/example-1.jpg",
  "imageUrls": [
    "https://img.alicdn.com/bao/uploaded/example-1.jpg",
    "https://img.alicdn.com/bao/uploaded/example-2.jpg"
  ],
  "sellerReviewCount": 288,
  "sellerGoodRate": 96
}
```

### How much does it cost?

The Actor uses pay-per-event pricing. These are the charge events and their prices:

| Event | Bronze | Silver | Gold and above | When it is charged |
|---|---|---|---|---|
| `run-start` | $0.01 | $0.01 | $0.01 | Once per run, charged when the first page of results has been fetched, even if it holds no listings. It is not charged when the run fails from the start, or when your spending limit cannot cover it. |
| `result` | $0.007 | $0.00631 | $0.00571 | For each listing returned |

Prices are in USD and depend on your Apify plan tier.

Worked examples (Bronze prices):

- **20 listings (the default run):** $0.01 + 20 x $0.007 = **$0.15**.
- **100 listings:** $0.01 + 100 x $0.007 = **$0.71**.
- **1000 listings:** $0.01 + 1000 x $0.007 = **$7.01**.

You never pay for more than `maxResults` items, you are never charged for items that were not delivered, and the run stops by itself if your spending limit is reached.

On the free Apify plan you get 2 free trial runs of this Actor with your own input, up to 10 results each, and nothing is charged; after that, runs return a stored sample dataset (a real result of the prefilled input). Use any paid Apify plan for full runs.

### Use cases

- **Resale and arbitrage research:** see what a used phone, camera or collectible really sells for in China, and how many people want it (`wantCount`).
- **Price monitoring:** run the same keyword on a schedule and track asking prices and price cuts (`priceDrop`) over time.
- **Market and trend research:** compare how many listings, at what prices and in which provinces (`location`) exist for a product family.
- **Sourcing leads:** find listings by condition and tags (`tags`) such as 全新 (brand new) or 验货宝 (inspection service).
- **AI and data projects:** clean, flat Chinese listing records with photos for price models, catalogs and recommendations.

### Why use this Xianyu scraper

- **No account, no cookies, no proxies.** You give a keyword; the Actor does the rest.
- **Chinese keywords work.** Search the way Xianyu users do.
- **You pay for data you get.** Per-result fees are charged only for records delivered to your dataset. A failed or empty run tells you why in its status message and whether anything was charged.
- **Try before paying.** On a free Apify plan you get 2 free trial runs with your own input, up to 10 results each, nothing charged.
- **Flat JSON records** ready for spreadsheets, databases and AI pipelines; export as JSON, CSV or Excel.

### Integrations and API

If you are looking for a Xianyu API, you can use this Actor like one. It is not an official Xianyu or Alibaba API and is not affiliated with Xianyu. You can start runs through the Apify API, schedule them in the Apify Console (for example a daily price check), and connect the results to webhooks and the integrations available on the Apify platform. Results are stored in a dataset you can download as JSON, CSV, Excel and other formats.

Python example with `apify-client`:

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("clover_folktale/xianyu-scraper").call(run_input={
    "keyword": "富士相机",
    "maxResults": 100,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)
```

#### Use it from AI agents (MCP, n8n, Make)

This Actor works as a tool for AI agents through the [Apify MCP server](https://docs.apify.com/mcp). Add it to Claude, Cursor or any MCP client with `https://mcp.apify.com?tools=clover_folktale/xianyu-scraper`, and the agent can search Xianyu and read the results itself. It also has ready-made integrations for n8n, Make and Zapier on the Apify platform.

### Tips and limits

- **Page size.** A search page holds 11 listings; large runs make one request per page. A listing seen twice in a run is returned once.
- **Fewer results than requested.** The listing ends when a page comes back empty, so a narrow keyword can return fewer listings than `maxResults`.
- **No filters or sorting.** The Actor returns Xianyu's default ranking for the keyword. Price range, region and sort options are not available yet.
- **Order can change between runs.** Xianyu mixes in ads and personalised ranking, so the same keyword can list items in a different order on a different day. `position` is the rank within the run.
- **Prices are in CNY.** `price` is the asking price in yuan at the time of the run.
- **Seller identity is not included.** There is no seller ID or nickname in the output. `sellerReviewCount` and `sellerGoodRate` are the review numbers the card shows for the seller.
- **No description text.** Search results carry the listing title, which on Xianyu is the text the seller wrote; there is no separate long description.
- **Fields that are often empty:** `originalPrice` and `priceDrop` are empty unless the seller cut the price; `shipping` is empty when the card shows no shipping offer; `tags` can be an empty list.
- **Free plan.** On the free Apify plan you get 2 free trial runs of this Actor with your own input, up to 10 results each, and nothing is charged; after that, runs return a stored sample dataset (a real result of the prefilled input). Use any paid Apify plan for full runs.

### FAQ

#### Do I need a Xianyu account, cookies or API keys?

No. You only need an Apify account to run the Actor.

#### Is it legal to scrape Xianyu?

The Actor returns only public listing data: what anyone sees on a Xianyu search results page. It returns no seller identity, no buyer data and no private data such as phone numbers or messages. You are responsible for how you use the data and for following the laws and terms that apply to you.

#### How fresh is the data?

Each run reads Xianyu at the time of the run.

#### Does it return the seller's name or ID?

No. Seller identity is not included. See the output fields above for what is returned.

#### How many results can I get?

Up to 1000 listings per run, set with `maxResults`. Narrow searches can return fewer.

#### Does it return listing details, chat or sold history?

No. This Actor returns the search result cards only: title, price, want count, publish time, location, tags, photos and link.

#### Can I schedule runs and export the data?

Yes. You can schedule runs in Apify, start them through the API, and export every dataset as JSON, CSV or Excel.

#### A field or filter is missing. What can I do?

Open an issue from the Actor page and it will be looked at.

### Support

Found a bug, a missing field or a feature you need? Open an issue on the **Issues** tab. We reply within 24 hours, and a mode that stops working is fixed within 24 hours. What changed and when is listed on the **Changelog** tab.

### Other tools by Silkline

Every tool below charges per result and needs no login or cookies.

#### E-commerce

- [Taobao Tmall 淘宝 Product Scraper - Prices, Sales & Shops](https://apify.com/clover_folktale/taobao-scraper)
- [1688.com 阿里巴巴 Wholesale Scraper - MOQ Prices & Suppliers](https://apify.com/clover_folktale/1688-scraper)
- [AliExpress 速卖通 Scraper - Products, Prices & Sold Counts](https://apify.com/clover_folktale/aliexpress-scraper)
- [JD.com 京东 Scraper - Shop Products & Buyer Reviews](https://apify.com/clover_folktale/jd-scraper)
- [Douyin Shop 抖音商城 Product Scraper - Sales, Commission & Shops](https://apify.com/clover_folktale/douyin-shop-scraper)
- [Amazon Product Scraper - Best Sellers, ASIN, Prices, Ratings](https://apify.com/clover_folktale/amazon-scraper)

# Changelog

This Actor's version history is a separate document: https://apify.com/clover_folktale/xianyu-scraper/changelog.md

# Actor input Schema

## `keyword` (type: `string`):

Search keyword, Chinese or English. Falls back to "iphone" when empty.

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

Maximum number of listings to return. A search page holds 11 listings. You are charged per listing returned.

## Actor input object example

```json
{
  "keyword": "iphone",
  "maxResults": 20
}
```

# Actor output Schema

## `results` (type: `string`):

All scraped items (JSON, CSV, Excel via the dataset API).

# 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 = {
    "keyword": "iphone"
};

// Run the Actor and wait for it to finish
const run = await client.actor("clover_folktale/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 = { "keyword": "iphone" }

# Run the Actor and wait for it to finish
run = client.actor("clover_folktale/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 '{
  "keyword": "iphone"
}' |
apify call clover_folktale/xianyu-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,clover_folktale/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/3KW4GCm7WkCWHb5Q6/builds/zRCEqcvq3QW6ByQmS/openapi.json
