# Chinagoods Image Search Scraper (`piotrv1001/chinagoods-image-search-scraper`) Actor

The Chinagoods Image Search Scraper finds Yiwu market products matching a photo — reverse image search returning wholesale prices in CNY, quantity price tiers, minimum order, sales, supplier, Yiwu booth location and similarity score — ideal for sourcing small commodities.

- **URL**: https://apify.com/piotrv1001/chinagoods-image-search-scraper.md
- **Developed by:** [FalconScrape](https://apify.com/piotrv1001) (community)
- **Categories:** E-commerce, Lead generation, AI
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $20.00 / 1,000 image searches

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

### 🚀 Chinagoods Image Search Scraper

Find Yiwu market products from a photo. The **Chinagoods Image Search Scraper** takes image URLs and returns the visually similar products on Chinagoods — the official online platform of the Yiwu International Trade City, the world's largest small-commodity wholesale market — with wholesale price in CNY, quantity price tiers, minimum order, sales, supplier, the supplier's **physical booth location in Yiwu** and a similarity score. Built for sourcing toys, accessories, household goods and other small commodities straight from Yiwu suppliers.

### ✨ Features

- 📷 **Photo in, products out**: Any direct image URL (JPG, PNG, WebP, GIF or AVIF up to 10 MB) or data: URL; one search per image.
- 🎯 **Similarity-ranked**: Each image returns Chinagoods's own set of visually similar products (usually 30–40, cut off by similarity), with a similarity score per match and the area of the photo that was matched.
- 💰 **Wholesale pricing**: Price per piece in CNY, quantity price tiers, minimum order quantity and market price.
- 🏬 **Supplier and booth**: Shop name, shop page, shop level and years on the market, plus the market district, gate, floor, street and booth number — ready for a visit to Yiwu.
- 📈 **Demand signals**: Units sold, orders, favourites, views, stock, video and new-product flags.
- 🔀 **Sorting**: Best match, sales, or price low/high — the same options as the Chinagoods image search page.
- 💸 **Pay per search**: One price per image searched — images that fail to load or return no matches are free.

### 🛠️ How It Works

1. **Paste image URLs** – Product photos from your catalogue, a competitor's store, or any page.
2. **Pick sort and depth** – Sort order and how many matches to keep per image.
3. **Run the scraper** – Get one row per matching product, grouped by the image that found it.

### 💰 Pricing

| Event        |    Price | What you get                                            |
| ------------ | -------: | ------------------------------------------------------- |
| Image search |    $0.02 | One image searched, its full set of matches (up to 100) |
| Actor start  | $0.00005 | Once per run                                            |

100 images cost $2.00 (plus $0.00005 per run). Images that cannot be loaded or return no matches are not charged.

### 📥 Input

| Field                | Type    | Description                                                                  |
| -------------------- | ------- | ---------------------------------------------------------------------------- |
| `imageUrls`          | array   | Image URLs (or data: URLs) to search with. Empty → an example image is used. |
| `maxResultsPerImage` | integer | Matches kept per image. Default `40`, maximum `100`.                         |
| `sort`               | string  | `best_match` (default), `sales`, `price_asc`, `price_desc`.                  |
| `proxyConfiguration` | object  | Keep the default.                                                            |

### 📊 Sample Output Data

One row per match. Example (two matches for one image):

```json
[
    {
        "searchImage": "https://cdnimg.chinagoods.com/aimg/mt/im/94168/0836187d1828cdc5a4e7f239959a132f.jpg",
        "position": 1,
        "productId": "2031181817163980802",
        "title": "Cartoon puppy cute side hair clips, children's bangs clips, women's duckbill clips, summer forehead broken hair clips",
        "url": "https://en.chinagoods.com/product/2031181817163980802",
        "image": "https://cdnimg.chinagoods.com/aimg/mt/im/94168/da68899bfbf67ded856e28fc9d364578.jpg",
        "images": [
            "https://cdnimg.chinagoods.com/aimg/mt/im/94168/da68899bfbf67ded856e28fc9d364578.jpg",
            "https://cdnimg.chinagoods.com/aimg/mt/im/94168/0836187d1828cdc5a4e7f239959a132f.jpg"
        ],
        "price": 0.49,
        "marketPrice": null,
        "currency": "CNY",
        "minOrderQuantity": 2,
        "priceTiers": [],
        "similarityScore": 98,
        "sold": null,
        "orderCount": 0,
        "favorites": 0,
        "views": 52,
        "stock": 1011324,
        "hasVideo": true,
        "isNew": false,
        "isAd": false,
        "foreignTrade": false,
        "categoryId": 4122,
        "shopId": 6320114,
        "shopName": "Shepherd boy accessories",
        "shopUrl": "https://en.chinagoods.com/store/6320114",
        "shopLevel": "LV1",
        "shopPoints": 334,
        "shopYears": 4,
        "market": "International Trade City District 1",
        "marketZone": "01",
        "boothLocation": "一区3号门2楼6街3266B",
        "gate": "3",
        "floor": "2",
        "street": "6",
        "boothNumber": "3266B",
        "detectedObject": {
            "x": 0,
            "width": 800,
            "y": 0,
            "height": 780
        },
        "scrapedAt": "2026-10-09T09:32:39.854Z"
    },
    {
        "searchImage": "https://cdnimg.chinagoods.com/aimg/mt/im/94168/0836187d1828cdc5a4e7f239959a132f.jpg",
        "position": 6,
        "productId": "1839581857311690754",
        "title": "hi, cat! Cute cat hair clips, girlish bangs, side clips of acrylic hair clips, duckbeak hair clips, hair accessories",
        "url": "https://en.chinagoods.com/product/1839581857311690754",
        "image": "https://cdnimg.chinagoods.com/img/ylbm/img/ibank/O1CN013GSbIE1ohl3FpQFgw_!!3547335257-0-cib.jpg",
        "images": [
            "https://cdnimg.chinagoods.com/img/ylbm/img/ibank/O1CN013GSbIE1ohl3FpQFgw_!!3547335257-0-cib.jpg",
            "https://cdnimg.chinagoods.com/img/ylbm/img/ibank/O1CN01JWnTpG1ohl3GdgdeG_!!3547335257-0-cib.jpg"
        ],
        "price": 1.2,
        "marketPrice": null,
        "currency": "CNY",
        "minOrderQuantity": 1,
        "priceTiers": [
            {
                "minQuantity": 1,
                "price": 1.4
            },
            {
                "minQuantity": 20,
                "price": 1.3
            },
            {
                "minQuantity": 100,
                "price": 1.2
            }
        ],
        "similarityScore": 75,
        "sold": null,
        "orderCount": 0,
        "favorites": 0,
        "views": 1,
        "stock": 2993796,
        "hasVideo": false,
        "isNew": false,
        "isAd": false,
        "foreignTrade": false,
        "categoryId": 4122,
        "shopId": 6303205,
        "shopName": "Yueya Accessories (Mizi Accessories",
        "shopUrl": "https://en.chinagoods.com/store/6303205",
        "shopLevel": "LV3",
        "shopPoints": 4545,
        "shopYears": 7,
        "market": "International Trade City District 1",
        "marketZone": "01",
        "boothLocation": "一区东扩8号门3楼7街103502A",
        "gate": "8",
        "floor": "3",
        "street": "7",
        "boothNumber": "103502A",
        "detectedObject": {
            "x": 0,
            "width": 800,
            "y": 0,
            "height": 780
        },
        "scrapedAt": "2026-10-09T09:32:39.854Z"
    }
]
```

Prices are in Chinese yuan (CNY) per piece, as listed on Chinagoods. `boothLocation` is the address as the market writes it; `gate`, `floor`, `street` and `boothNumber` are split out of it. `detectedObject` is the part of your photo (in pixels of the searched image, scaled to at most 800 px) that was matched.

Images that fail come back as `{ "searchImage": "...", "status": "image_error" | "failed" | "no_matches", "error": "..." }` rows and are not charged.

### 🔗 Use cases

- **Yiwu sourcing**: Turn a product photo into Yiwu wholesalers with per-piece prices, minimum orders and booth numbers.
- **Supplier comparison**: See every Yiwu shop that sells the same item, with price tiers, sales and shop level side by side.
- **Market visits**: Plan a buying trip with the district, gate, floor, street and booth of each supplier.
- **Price benchmarking**: Compare AliExpress, Alibaba or Amazon listings against the Yiwu wholesale price of the same product.

### 🔗 Related Actors

- [AliExpress Image Search Scraper](https://apify.com/piotrv1001/aliexpress-image-search-scraper) — the same photo search on AliExpress, with retail prices for your country.
- [Alibaba Image Search Scraper](https://apify.com/piotrv1001/alibaba-image-search-scraper) — search Alibaba.com suppliers by photo.
- [1688 Image Search Scraper](https://apify.com/piotrv1001/1688-image-search-scraper) — search China's domestic 1688 wholesale market by photo.
- [Yiwugo Image Search Scraper](https://apify.com/piotrv1001/yiwugo-image-search-scraper) — search the Yiwu wholesale market on Yiwugo by photo.
- [Yiwugo Listings Scraper](https://apify.com/piotrv1001/yiwugo-listings-scraper) — Yiwugo products by keyword, with supplier contacts.
- [Made-in-China Image Search Scraper](https://apify.com/piotrv1001/made-in-china-image-search-scraper) — search Made-in-China.com suppliers by photo, with US$ price ranges and MOQ.
- [Amazon Image Search Scraper](https://apify.com/piotrv1001/amazon-image-search-scraper) — find Amazon products that look like your photo.

Turn pictures into Yiwu suppliers — run the **Chinagoods Image Search Scraper** today! 🚀

# Actor input Schema

## `imageUrls` (type: `array`):

Photos to search with — direct image URLs (JPG, PNG, WebP, GIF or AVIF, up to 10 MB) or data: URLs. One search per image.

## `maxResultsPerImage` (type: `integer`):

Matches to return per image. Chinagoods returns one set of visually similar products per image, usually 30–40, cut off by similarity.

## `sort` (type: `string`):

Order of the matches, as on the Chinagoods image search page.

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

Keep the default. Each search runs on a fresh proxy session.

## Actor input object example

```json
{
  "imageUrls": [
    "https://cdnimg.chinagoods.com/img/ylbm/img/ibank/O1CN012RXqV81NBFIM7sEDT_!!3845871531-0-cib.jpg",
    "https://cdnimg.chinagoods.com/aimg/mt/im/94168/0836187d1828cdc5a4e7f239959a132f.jpg"
  ],
  "maxResultsPerImage": 40,
  "sort": "best_match",
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `matches` (type: `string`):

No description

# 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 = {
    "imageUrls": [
        "https://cdnimg.chinagoods.com/img/ylbm/img/ibank/O1CN012RXqV81NBFIM7sEDT_!!3845871531-0-cib.jpg",
        "https://cdnimg.chinagoods.com/aimg/mt/im/94168/0836187d1828cdc5a4e7f239959a132f.jpg"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("piotrv1001/chinagoods-image-search-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 = {
    "imageUrls": [
        "https://cdnimg.chinagoods.com/img/ylbm/img/ibank/O1CN012RXqV81NBFIM7sEDT_!!3845871531-0-cib.jpg",
        "https://cdnimg.chinagoods.com/aimg/mt/im/94168/0836187d1828cdc5a4e7f239959a132f.jpg",
    ],
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("piotrv1001/chinagoods-image-search-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 '{
  "imageUrls": [
    "https://cdnimg.chinagoods.com/img/ylbm/img/ibank/O1CN012RXqV81NBFIM7sEDT_!!3845871531-0-cib.jpg",
    "https://cdnimg.chinagoods.com/aimg/mt/im/94168/0836187d1828cdc5a4e7f239959a132f.jpg"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call piotrv1001/chinagoods-image-search-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,piotrv1001/chinagoods-image-search-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/QDSnyEx6tSI5RIze2/builds/hkoEzT2KinC5Vjzdd/openapi.json
