# Made-in-China.com Scraper (`rastriq/made-in-china-scraper`) Actor

Scrape product listings, specs, pricing, MOQ, and supplier profiles from Made-in-China.com B2B marketplace.

- **URL**: https://apify.com/rastriq/made-in-china-scraper.md
- **Developed by:** [Rastriq](https://apify.com/rastriq) (community)
- **Categories:** E-commerce, Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

$2.00 / 1,000 product results

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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Made-in-China.com Scraper

Extract product listings, technical specifications, pricing, MOQ, and supplier profiles from [Made-in-China.com](https://www.made-in-china.com) — the world's largest B2B marketplace for Chinese manufacturers.

> **No browser required.** This Actor uses lightweight HTTP requests with TLS impersonation, making it fast, cost-efficient, and stable.

---

### What does it do?

Made-in-China.com hosts millions of industrial product listings across categories like construction machinery, automotive parts, electronics, chemicals, and more. This Actor lets you:

- Search any keyword and paginate through all results
- Extract prices, MOQ (Minimum Order Quantity), and payment terms per product
- Pull full technical specifications from product detail pages
- Enrich results with verified supplier company profiles (business type, employees, certifications)
- Fetch buyer reviews with ratings, text, country, and date

---

### Use cases

- **Price intelligence** — Track pricing and MOQ for machinery, parts, or commodities across thousands of suppliers
- **Supplier discovery** — Build lists of verified manufacturers for a specific product category
- **Market research** — Understand which countries source specific products, at what price points
- **Competitive analysis** — Monitor competitors' product portfolios and pricing
- **Procurement automation** — Feed supplier data into sourcing pipelines or ERP systems
- **Investment research** — Identify trending product categories and manufacturing hubs in China

---

### Output fields

Each result record contains:

| Field | Description |
|-------|-------------|
| `product_id` | Made-in-China internal product ID |
| `product_name` | Full product title |
| `product_url` | Direct URL to the product page |
| `price_min_usd` | Minimum price in USD |
| `price_max_usd` | Maximum price in USD (price range) |
| `price_type` | Pricing basis (FOB, EXW, CIF, etc.) |
| `moq_quantity` | Minimum Order Quantity — number |
| `moq_unit` | MOQ unit (Piece, Set, Kilogram, etc.) |
| `company_name` | Manufacturer/supplier name |
| `company_url` | Supplier's company profile URL |
| `properties` | Key attributes from search card (Type, Application, etc.) |
| `search_page` | Which result page this product appeared on |
| `specifications` | Full key-value spec table (when `fetch_product_detail` is enabled) |
| `payment_terms` | Accepted payment methods (L/C, T/T, PayPal, etc.) |
| `port` | Shipping port (e.g. "Shanghai, China") |
| `categories` | Breadcrumb category path |
| `image_urls` | Product image URLs (up to 10) |
| `supplier` | Full supplier profile object (when `fetch_supplier` is enabled) |
| `reviews` | Array of buyer reviews (when `fetch_reviews` is enabled) |

#### Supplier profile fields (when `fetch_supplier: true`)

| Field | Description |
|-------|-------------|
| `company_name` | Official company name |
| `business_type` | Manufacturer / Trading Company / Agent |
| `employees` | Employee count range |
| `year_established` | Year founded |
| `certifications` | ISO, CE, and other certifications |
| `is_verified` | Whether supplier has verified business license |
| `is_gold_member` | Gold membership status |
| `is_audited` | Third-party audit status |
| `product_count` | Number of products listed |

---

### Example input

```json
{
  "keyword": "hydraulic excavator",
  "max_pages": 5,
  "fetch_product_detail": true,
  "fetch_supplier": true,
  "fetch_reviews": false,
  "request_delay": 2.0
}
````

#### Example output record

```json
{
  "product_id": "YMcxQWmVONUe",
  "product_name": "Xe210wb Wheel Type Excavator Foton Lovol Excavator",
  "product_url": "https://oriemac.en.made-in-china.com/product/YMcxQWmVONUe/...",
  "price_min_usd": "110000.00",
  "price_max_usd": "120000.00",
  "price_type": "FOB",
  "moq_quantity": "1",
  "moq_unit": "Piece",
  "company_name": "Oriemac Machinery & Equipment (Shanghai) Co., Ltd.",
  "company_url": "https://oriemac.en.made-in-china.com/",
  "specifications": {
    "Model NO.": "XE210WB",
    "Bucket": "Backhoe",
    "Transmission": "Hydraulic Transmission",
    "Certification": "CE, ISO9001: 2000",
    "Operating Weight": "21000kg"
  },
  "payment_terms": "L/C, T/T, D/P, Western Union, Paypal",
  "port": "Shanghai, China",
  "categories": ["Engineering & Construction Machinery", "Excavator"],
  "supplier": {
    "business_type": "Manufacturer",
    "employees": "201-500",
    "is_verified": true,
    "is_gold_member": true
  }
}
```

***

### Performance & cost

| Mode | Products/run | Approx. run time |
|------|-------------|------------------|
| Search only (`fetch_product_detail: false`) | ~400 (10 pages) | ~2 min |
| Search + Product detail | ~400 | ~15–25 min |
| Search + Product + Supplier | ~400 | ~30–45 min |

Use residential proxies (CN) for best results — some pages may be restricted for datacenter IPs.

***

### Notes

- **Pagination**: `max_pages` controls how many search result pages to scrape. Each page contains approximately 40 product listings.
- **Deduplication**: Supplier profiles are fetched only once per unique company URL, even if the company appears multiple times in search results.
- **Rate limiting**: Use `request_delay` ≥ 1.5 seconds to avoid triggering anti-bot measures. The default is conservative and safe for most runs.
- **Proxy**: For large runs or when scraping from outside China, enabling residential proxies (CN) significantly improves success rate.

***

### Legal

This Actor accesses publicly available product and supplier information from Made-in-China.com's website in compliance with standard web scraping practices. It does not bypass login walls, paywalls, or any form of authentication. Users are responsible for ensuring their use of the extracted data complies with Made-in-China.com's Terms of Service and applicable data protection regulations.

# Actor input Schema

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

The product to search for on Made-in-China.com.<br><br><b>Pick from the dropdown, or type any term you want.</b><br><br>Tips for good results:<br>• Use <b>English</b> and <b>singular</b> form (<code>excavator</code>, not <code>excavators</code>)<br>• Use industrial / B2B terms (<code>hydraulic pump</code>, <code>CNC machine</code>, <code>injection molding machine</code>)<br>• Start broad, then refine (<code>solar panel</code> → <code>monocrystalline solar panel 450W</code>)<br>• Spaces are fine — they're URL-encoded automatically

## `max_pages` (type: `integer`):

Number of search-result pages to fetch. Each page returns ~40 products.<br><br><b>Start small:</b> 2 pages (~80 products) is enough to verify the output. Scale up once you're happy with the data.

## `fetch_product_detail` (type: `boolean`):

Visit every product page to extract full specifications, payment terms, shipping port and image URLs. <b>Recommended on</b> for most use cases. Turn off for quick listing-only scrapes.

## `fetch_supplier` (type: `boolean`):

Visit each unique supplier's company profile to extract business type, employees, year established, certifications and gold / verified membership status. Adds ~2× to run time. Useful for supplier discovery.

## `fetch_reviews` (type: `boolean`):

Fetch buyer reviews (rating, text, country, date) per product via the Made-in-China reviews API.

## `request_delay` (type: `number`):

Seconds to wait between HTTP requests. Higher = safer against rate limiting, lower = faster.

## Actor input object example

```json
{
  "keyword": "hydraulic excavator",
  "max_pages": 1,
  "fetch_product_detail": true,
  "fetch_supplier": false,
  "fetch_reviews": false,
  "request_delay": 1.5
}
```

# 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": "hydraulic excavator",
    "max_pages": 1,
    "fetch_product_detail": false
};

// Run the Actor and wait for it to finish
const run = await client.actor("rastriq/made-in-china-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": "hydraulic excavator",
    "max_pages": 1,
    "fetch_product_detail": False,
}

# Run the Actor and wait for it to finish
run = client.actor("rastriq/made-in-china-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).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": "hydraulic excavator",
  "max_pages": 1,
  "fetch_product_detail": false
}' |
apify call rastriq/made-in-china-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=rastriq/made-in-china-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Made-in-China.com Scraper",
        "description": "Scrape product listings, specs, pricing, MOQ, and supplier profiles from Made-in-China.com B2B marketplace.",
        "version": "0.1",
        "x-build-id": "EZmhzlh1qI0Sm1KZJ"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/rastriq~made-in-china-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-rastriq-made-in-china-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/rastriq~made-in-china-scraper/runs": {
            "post": {
                "operationId": "runs-sync-rastriq-made-in-china-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/rastriq~made-in-china-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-rastriq-made-in-china-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "keyword"
                ],
                "properties": {
                    "keyword": {
                        "title": "🔍 Search keyword",
                        "type": "string",
                        "description": "The product to search for on Made-in-China.com.<br><br><b>Pick from the dropdown, or type any term you want.</b><br><br>Tips for good results:<br>• Use <b>English</b> and <b>singular</b> form (<code>excavator</code>, not <code>excavators</code>)<br>• Use industrial / B2B terms (<code>hydraulic pump</code>, <code>CNC machine</code>, <code>injection molding machine</code>)<br>• Start broad, then refine (<code>solar panel</code> → <code>monocrystalline solar panel 450W</code>)<br>• Spaces are fine — they're URL-encoded automatically"
                    },
                    "max_pages": {
                        "title": "Pages to scrape",
                        "minimum": 1,
                        "maximum": 100,
                        "type": "integer",
                        "description": "Number of search-result pages to fetch. Each page returns ~40 products.<br><br><b>Start small:</b> 2 pages (~80 products) is enough to verify the output. Scale up once you're happy with the data.",
                        "default": 5
                    },
                    "fetch_product_detail": {
                        "title": "Fetch full product details",
                        "type": "boolean",
                        "description": "Visit every product page to extract full specifications, payment terms, shipping port and image URLs. <b>Recommended on</b> for most use cases. Turn off for quick listing-only scrapes.",
                        "default": true
                    },
                    "fetch_supplier": {
                        "title": "Fetch supplier profile",
                        "type": "boolean",
                        "description": "Visit each unique supplier's company profile to extract business type, employees, year established, certifications and gold / verified membership status. Adds ~2× to run time. Useful for supplier discovery.",
                        "default": false
                    },
                    "fetch_reviews": {
                        "title": "Fetch buyer reviews",
                        "type": "boolean",
                        "description": "Fetch buyer reviews (rating, text, country, date) per product via the Made-in-China reviews API.",
                        "default": false
                    },
                    "request_delay": {
                        "title": "Delay between requests",
                        "minimum": 0.5,
                        "maximum": 10,
                        "type": "number",
                        "description": "Seconds to wait between HTTP requests. Higher = safer against rate limiting, lower = faster.",
                        "default": 1.5
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
