Export public Goofish (闲鱼 / Xianyu) marketplace search results to JSON, CSV, Excel, or your preferred integration. Search in Chinese or English and collect normalized listing, price, seller, location, image, category, and demand data.
Input example
{
"keywords": ["iPhone 15", "自行车"],
"maxItems": 20
}
Output example
{
"itemId": "123456789",
"url": "https://www.goofish.com/item?id=123456789",
"keyword": "iPhone 15",
"page": 1,
"position": 1,
"title": "iPhone 15 256G",
"price": 3999,
"currency": "CNY",
"area": "上海",
"sellerName": "example seller",
"wantCount": 12,
"labels": ["Apple/苹果"],
"freeShipping": true,
"isAuction": false,
"isVideo": false,
"scrapedAt": "2026-08-07T12:00:00.000Z"
}
What data it exports
| Field | Description |
|---|---|
itemId |
Public listing identifier |
url |
Public listing URL |
keyword |
Search term that produced the row |
page |
Search result page number |
position |
Listing position within the result page |
title |
Listing title |
price |
Numeric asking price |
currency |
Price currency, normally CNY |
area |
Public location shown on the result |
imageUrl |
Primary listing image URL |
sellerName |
Public seller display name |
sellerAvatarUrl |
Public seller avatar URL |
sellerId |
Public seller identifier when available |
wantCount |
Number of users showing interest |
publishedAt |
Posting time when available |
categoryId |
Public category identifier |
categoryName |
Public category name |
labels |
Listing and category labels |
freeShipping |
Whether free shipping is advertised |
isAuction |
Whether the result is an auction |
isVideo |
Whether the result includes video |
detailPageType |
Public listing-page type |
scrapedAt |
ISO collection timestamp |
Optional values are omitted when they are not present on a public search result. The Actor does not invent values.
Input settings
| Key | Description | Default |
|---|---|---|
keywords |
One or more Chinese or English search terms | required |
maxItems |
Total unique listings saved | 20 |
resultsPerPage |
Listings requested per page | 30 |
maxPagesPerKeyword |
Pagination safety limit per keyword | 20 |
maxItems applies across all keywords. Add several keywords when you want one combined, deduplicated export.
Who is it for?
- Resale analysts comparing asking prices and availability.
- Marketplace sellers researching competing listings and regions.
- Collectors and buyers monitoring niche products or brands.
- Data teams feeding structured marketplace rows into dashboards.
- Automation builders scheduling recurring exports and alerts.
- AI developers giving agents access to current public search results.
Use cases
Price monitoring
Schedule the Actor with the same keyword and compare price, area, and scrapedAt over time.
Product availability research
Collect listings for model names, brands, collectibles, parts, or local-language product terms.
Regional marketplace analysis
Group exported rows by area to compare supply and asking prices across public locations.
Seller and category research
Use seller summaries, labels, and categories to understand how relevant listings are presented.
Alerts and workflows
Connect an Apify schedule, webhook, Make, Zapier, n8n, Google Sheets, or your own API consumer.
Input recipes
Quick sample
{"keywords":["iPhone 15"],"maxItems":10}
Multiple Chinese keywords
{"keywords":["露营帐篷","公路自行车"],"maxItems":100}
Bounded pagination
{
"keywords": ["相机"],
"maxItems": 60,
"resultsPerPage": 30,
"maxPagesPerKeyword": 3
}
Tips and limits
- Use specific Chinese terms for the most relevant local results.
- Start with
maxItemsbetween 10 and 20 while testing a keyword. maxItemsis capped at 1,500 per run.- Public listings can change or disappear between runs.
- A broad keyword may produce less relevant rows than a model or category phrase.
- Optional fields depend on what Goofish exposes on each result.
- Results are deduplicated by listing identity across keywords and pages.
- Exported timestamps use ISO format for easier downstream processing.
Export Goofish Xianyu search data
Export Goofish Xianyu search data as JSON, CSV, Excel, XML, RSS, or JSONL from an Apify dataset. You can also:
- Schedule recurring runs in Apify Console.
- Trigger the Actor from an application through the API.
- Send run-finished webhooks to another service.
- Connect datasets to Google Sheets or cloud storage.
- Consume results from an AI agent through Apify MCP.
API usage: Goofish Xianyu search API
Use the Goofish Xianyu search API workflow below to run keyword searches programmatically and retrieve the resulting dataset. Replace $APIFY_TOKEN with an Apify API token stored securely in your environment.
cURL
curl -X POST "https://api.apify.com/v2/acts/fetch_cat~goofish-xianyu-search-scraper/runs?token=$APIFY_TOKEN" \
-H 'Content-Type: application/json' \
-d '{"keywords":["iPhone 15"],"maxItems":20}'
JavaScript
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('fetch_cat/goofish-xianyu-search-scraper').call({
keywords: ['iPhone 15'],
maxItems: 20,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
Python
import os
from apify_client import ApifyClient
client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('fetch_cat/goofish-xianyu-search-scraper').call(run_input={
'keywords': ['iPhone 15'],
'maxItems': 20,
})
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)
MCP and AI agents
Use Apify MCP to let Claude and other compatible agents run searches and consume structured results.
Add the hosted MCP server with the Claude CLI:
claude mcp add --transport http apify https://mcp.apify.com/?tools=fetch_cat/goofish-xianyu-search-scraper
Or add it to an MCP JSON configuration:
{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com/?tools=fetch_cat/goofish-xianyu-search-scraper"
}
}
}
Example prompts:
- “Search Xianyu for iPhone 15 listings and return the 20 lowest prices.”
- “Find public bicycle listings and group the results by area.”
- “Export current camera listings with seller and category fields.”
Support
For a reproducible issue, open the Actor Issues tab and include:
- the run URL,
- the input used,
- the expected behavior,
- the observed behavior, and
- a small public keyword that reproduces the problem.
This context makes diagnosis faster while avoiding account credentials or private data.