# EveryChina Scraper & API - China Suppliers, Products & MOQ (`rel8ble/everychina-scraper`) Actor

EveryChina scraper and API: China B2B suppliers, manufacturers, products by keyword. Price, MOQ, payment terms, supply ability, lead time, website, business type, year established, employees, sales. Pages and profiles included. $1 per 1,000, no start fee. Only EveryChina actor (7 Nov 2026).

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

## Pricing

$1.00 / 1,000 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/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

## EveryChina Scraper & API - China Suppliers, Products & MOQ

**EveryChina scraper** for importers, sourcing agents, Amazon / Shopify sellers and B2B lead-gen teams: enter a product keyword such as `yoga mat`, `led light` or `hydraulic baler` and get Chinese manufacturers and their products from **EveryChina.com** (the ECER group's China B2B marketplace) as clean JSON, CSV or Excel. Each row is one product with its **price, MOQ, payment terms, supply ability, delivery time, packaging and specs**, plus the supplier behind it: **membership level, years on EveryChina, city / province, website, business type, year established, employees, annual sales, company and factory address and main export markets**. Use it as a **China supplier finder**, a **Made-in-China / Alibaba alternative for supplier research**, or an unofficial **EveryChina API** from your own code, Make, Zapier or n8n.

It works over plain HTTP, with **no browser and no login**. A 20-product cloud run with product pages and company profiles took 61 seconds on 29 Oct 2026 (run `KO4J7tqRzADeSryaf`); the default 15-product input took 44.2 seconds in the cloud on 31 Oct 2026 and stops collecting after 30 seconds. **$1.00 per 1,000 results**, product pages and company profiles included, no start fee.

### What you get

- **Product**: name, supplier product page, www.everychina.com mirror URL, main image plus gallery, snippet, listing date, category, brand, model number, certification, place of origin, all other specs (label -> value), description, tags, video flag.
- **Trade terms**: **MOQ** as a number with its unit, **price** as listed plus `priceMin` / `priceMax` / `currency` / `priceUnit` numbers when the supplier publishes one, a "negotiable" flag when it does not, **payment terms**, **supply ability**, **delivery time**, packaging details.
- **Supplier**: company name, supplier ID, showroom URL, membership ("Verified Supplier", "Active Member", "Site Member"), years on EveryChina, headline ("Manufacturer from China"), city, province, country, own website.
- **Company profile** (read once per supplier): business types (manufacturer, exporter, trading company ...), brands, employee range, **year established**, **annual sales**, company address, factory address, main markets. Contact-person names are not collected.

### Sample output

Real rows from the 29 Oct 2026 cloud run for `yoga mat` (20 results):

| Product | Price | MOQ | Payment terms | Delivery | Supplier | Established | Employees |
|---|---|---|---|---|---|---|---|
| High Density Eco Friendly Yoga Mat Waterproof Natural Cork Yoga Mat | Negotiable | 2pcs | L/C, T/T, Western Union | as request | Xian Valentina Import & Export Co., Ltd. | 2019 | 20~50 |
| 12cm Inflatable Aqua Yoga Mat Leakage - Prevention CE Approved For Fitness | 150-230USD/PCS | 1 | Western Union | 5-8 DAYS | Guangzhou Green Sport Goods Co Ltd | 2009 | 100~150 |
| Eco Firendly TPE Non Slip Yoga Mat Exercise Fitness Mat For Yoga And Pilates | Negotiation | 500pcs | T/T, L/C, Western Union | 15-20 Days After Payment Received | Rise Group Co., Ltd | 2000 | 80~100 |
| yoga mats manufacturers, yoga mats factory, yoga mats supplier | $5 | 12 set | L/C, T/T | 7 days | RIZHAO POTESRI FITNESS EQUIPMENT CO., LTD | 2010 | 10~50 |
| Woven Label Printing Yoga Exercise Mat, Colorful Yoga Mat 80cm | negotiable | negotiable | T/T, PayPal, Western Union | 15-25 work days | Guangzhou JELS YOGA Sporting Goods Co., Ltd. | - | 100~120 |

Fill rates on those 20 rows: supplier, membership, business type, description, images 100%; employees, year established, company address, main markets 95%; MOQ 90%; price text, payment terms, packaging 85%; supply ability, delivery time, annual sales 80%; numeric price 40% (the rest quote "Negotiable"); website 15%.

### Use cases

- **Supplier discovery**: build a shortlist of Chinese manufacturers for a product, with size (employees, sales), age and export markets.
- **Price and MOQ benchmarking**: compare listed prices, MOQs and lead times across suppliers before you send RFQs.
- **B2B lead generation**: one row per supplier (`uniqueSuppliers`) gives a lead list of factories with website, province and business type.
- **Catalog export**: paste a supplier showroom URL to export that supplier's whole catalog with trade terms.
- **AI agents**: an agent can call this actor with a keyword and read back structured supplier data (see the MCP note below).

### Pricing

**$1.00 per 1,000 results** (pay per result), with **product pages and company profiles included**: trade terms, employees, year established and sales cost nothing extra. Filtered rows, duplicates and failed requests are never charged, and there is no start fee. The default 15-row run costs $0.015. Apify platform usage and proxies are included in the price.

| You scrape | You pay |
|---|---|
| 15 products (default run) | $0.015 |
| 100 products | $0.10 |
| 1,000 products | $1.00 |
| 10,000 products | $10.00 |

The Apify free plan's $5 monthly credit covers about 5,000 results.

This is the only EveryChina actor we found on the Store (search of 7 Nov 2026). Made-in-China is a different site with its own scrapers: the most-used charge $2.00 (scrapesage), $1.00 + $0.00005 per run (agenscrape) and $2.50 + $0.00005 per run (haketa) per 1,000 products, and a few charge less than this actor, down to about $0.04 + $0.005 per run (automation-lab).

### FAQ

**Why do many products say "Negotiable"?**
Most EveryChina suppliers quote on request. The actor keeps the text in `priceText`, sets `priceNegotiable: true`, and leaves the numeric fields null. Use `onlyWithPrice` to keep only products with a listed number.

**Are prices in US dollars?**
When a supplier lists a number it is nearly always USD (`currency: "USD"`); the currency is read from the price text.

**Does it collect e-mails or phone numbers?**
No. EveryChina hides them behind its inquiry form, and contact-person names are deliberately not collected. You get the company's website (when published), addresses and province.

**Why can't I use a category URL?**
EveryChina category pages (`/cf-...`) are landing pages, not product lists. Type the product keyword instead.

**Is there an official EveryChina API?**
We found no public API for EveryChina product and supplier search; buyers use the website and its inquiry form. This actor reads the same public pages.

**What does a typical run cost?**
A 200-supplier shortlist (`uniqueSuppliers: true`, `maxResultsPerSearch: 200`) costs $0.20. A weekly check of 5 keywords x 100 products is about $2.20 a month.

**It got slower than usual.**
EveryChina rate-limits bursts from one IP with a 429 or a verification page. The actor never solves those; it switches to a new proxy IP and retries, so a run can take longer (the 29 Oct 2026 cloud run ended with 0 failed requests out of 41).

**For AI agents (MCP):** input is a list of keywords or EveryChina URLs plus optional filters; output is one JSON row per product with supplier and company profile; typical cost is $0.02 for 20 rows; use it when you need Chinese manufacturers or wholesale trade terms for a product.

This actor is not affiliated with EveryChina or ECER. It reads public pages that EveryChina's robots.txt allows (read 4 Nov 2026).

### Example inputs for common jobs

Products with trade terms and company profiles (default):

```json
{ "searchTerms": ["yoga mat"], "maxResultsPerSearch": 15 }
```

A supplier lead list: verified manufacturers in business 10+ years, one row per supplier:

```json
{
  "searchTerms": ["hydraulic baler", "cnc machine"],
  "maxResultsPerSearch": 50,
  "uniqueSuppliers": true,
  "verifiedOnly": true,
  "manufacturersOnly": true,
  "minYearsInBusiness": 10
}
```

Small-batch sourcing: priced products with MOQ up to 100 and unit price up to $10:

```json
{ "searchTerms": ["led strip"], "maxResultsPerSearch": 100, "onlyWithPrice": true, "maxMoq": 100, "maxPrice": 10 }
```

One supplier's full catalog, or single products:

```json
{
  "searchTerms": [
    "https://hydraulicmetalbalers.sell.everychina.com/",
    "https://hydraulicmetalbalers.sell.everychina.com/p-121857874-2800-x-2000-x-1400mm-scrap-metal-baler-metal-recycling-equipment-6000kn.html"
  ],
  "maxResultsPerSearch": 0
}
```

Fastest listing-only export (name, snippet, supplier, membership, date; no product pages):

```json
{ "searchTerms": ["yoga mat"], "maxResultsPerSearch": 200, "scrapeDetails": false }
```

### How to use

1. Open the actor and type one or more product keywords (English) or paste EveryChina URLs into **Products**.
2. Set **Max results per search** (default 15; 0 = all, up to 1,000 per keyword).
3. Optionally set filters (verified only, manufacturers only, years in business, price, MOQ, website, one row per supplier).
4. Click **Start**. Download the dataset as JSON, CSV, Excel or HTML, or read it through the API.

### Input

| Field | Type | Default | What it does |
|---|---|---|---|
| `searchTerms` | array | `["yoga mat"]` | Keywords, search URLs (`https://www.everychina.com/site-yoga-mat`), product URLs or supplier showroom URLs. |
| `maxResultsPerSearch` | integer | 15 | Rows per keyword / URL. 0 = everything (20 per page, max 50 pages). |
| `scrapeDetails` | boolean | true | Read product pages (MOQ, price, trade terms, specs, supplier box). |
| `scrapeCompanyProfile` | boolean | true | Read each supplier's Company Profile once (employees, year established, sales, addresses, markets). |
| `uniqueSuppliers` | boolean | false | Keep only the first product per supplier. |
| `verifiedOnly` | boolean | false | Only "Verified Supplier" members. |
| `manufacturersOnly` | boolean | false | Only suppliers whose business type says manufacturer / factory. |
| `minYearsInBusiness` | integer | 0 | Only companies established at least this many years ago. |
| `onlyWithPrice` | boolean | false | Skip "Negotiable" products with no number. |
| `maxPrice` | number | - | Skip products whose lowest unit price is above this (listed currency, nearly always USD). |
| `maxMoq` | integer | - | Skip products whose MOQ is above this. |
| `onlyWithWebsite` | boolean | false | Only suppliers that publish their own website. |
| `maxConcurrency` | integer | 8 | Parallel requests. |
| `maxRequestRetries` | integer | 8 | Retries per failed / rate-limited request, each on a new proxy session. |
| `proxyConfiguration` | object | Apify Proxy | Datacenter proxy works; switch to RESIDENTIAL only if the log shows repeated blocks. |

Inputs that are not EveryChina keywords or URLs (other sites, category landing pages `/cf-...`, video pages) are skipped and listed in the `RUN_SUMMARY` record; they are never charged.

### Output example

One real row (description and lists shortened):

```json
{
  "searchTerm": "yoga mat",
  "position": 2,
  "productId": "107734002",
  "productName": "12cm Inflatable Aqua Yoga Mat Leakage - Prevention CE Approved For Fitness",
  "productUrl": "https://inflatablegymnasticsmat.sell.everychina.com/p-107734002-12cm-inflatable-aqua-yoga-mat-leakage-prevention-ce-approved-for-fitness.html",
  "listedDate": "2026-09-14",
  "category": "Aqua Yoga Mat",
  "brand": "Green",
  "modelNumber": "yogamat007",
  "certification": "ROHS CE",
  "placeOfOrigin": "CHINA",
  "moq": 1,
  "moqText": "1",
  "priceText": "150-230USD/PCS",
  "currency": "USD",
  "priceMin": 150,
  "priceMax": 230,
  "priceUnit": "pcs",
  "paymentTerms": "Western Union",
  "deliveryTime": "5-8 DAYS",
  "packagingDetails": "CARTON",
  "specs": { "Type": "Floating Workout Mat", "Material": "PVC and drop stitch", "Size": "220x85x15cm customized" },
  "supplierHeadline": "Manufacturer from China",
  "yearsOnEveryChina": 10,
  "city": "guangzhou",
  "province": "guangdong",
  "country": "china",
  "supplierName": "Guangzhou Green Sport Goods Co Ltd",
  "supplierUrl": "https://inflatablegymnasticsmat.sell.everychina.com/",
  "memberType": "Active Member",
  "businessTypes": ["Manufacturer", "Distributor/Wholesaler", "Agent", "Importer", "Exporter", "Trading Company", "Seller"],
  "brands": "Green",
  "employees": "100~150",
  "yearEstablished": 2009,
  "annualSales": "600000-1000000",
  "companyAddress": "#778 SHINAN AVENUE,NANSHA DISTRICT,GUANGZHOU CHINA",
  "mainMarkets": "North America,South America,Western Europe,Eastern Europe,Eastern Asia,Southeast Asia,Middle East,Africa,Oceania,Worldwide",
  "detailScraped": true,
  "profileScraped": true,
  "sourceUrl": "https://www.everychina.com/site-yoga-mat",
  "scrapedAt": "2026-10-29T17:44:48.751Z"
}
```

The dataset has three table views in the Apify console: **Overview** (product, price, MOQ, terms, supplier), **Supplier leads** (company profile) and **Pricing & MOQ** (numbers for comparison). A `RUN_SUMMARY` record lists per-keyword counts, pages read, ignored inputs and stop reasons.

### Integrations

Run it on an Apify schedule, through the Apify REST API, the JavaScript / Python clients, Make, Zapier, n8n, Google Sheets, or from AI agents via the Apify MCP server. Join runs on `productId` to track price changes, or on `supplierId` to build a supplier CRM.

Need a custom scraper or a ready dataset? Hire me on Fiverr: https://www.fiverr.com/rel8ble

# Actor input Schema

## `searchTerms` (type: `array`):

Provide at least one. English product keywords, e.g. "yoga mat", "led light", "hydraulic baler", or everychina.com URLs: a search (https://www.everychina.com/site-yoga-mat), one product (https://<supplier>.sell.everychina.com/p-121857874-....html) or a supplier showroom (https://<supplier>.sell.everychina.com/) to export that supplier's catalog. Default \["yoga mat"] (demo).

## `maxResultsPerSearch` (type: `integer`):

Optional. Products saved per keyword / URL, integer >= 0. Default 15; 0 = everything EveryChina returns (20 per page, up to 50 pages = 1,000 per keyword). You pay per row.

## `scrapeDetails` (type: `boolean`):

Default true. Reads each product page and adds MOQ, price, payment terms, supply ability, delivery time, packaging, brand, model, certification, origin, all specs, description, images, membership, city / province and the supplier website. Turn off for the fastest listing-only export (name, snippet, supplier, membership, date).

## `scrapeCompanyProfile` (type: `boolean`):

Default true (needs product pages). Reads each supplier's Company Profile once per run and adds business type, brands, employee range, year established, annual sales, company and factory address, main markets.

## `uniqueSuppliers` (type: `boolean`):

Optional. true = keep only the first product of each supplier (a supplier lead list). Default false = one row per product.

## `verifiedOnly` (type: `boolean`):

Optional. Keep only "Verified Supplier" members. Default false.

## `manufacturersOnly` (type: `boolean`):

Optional. Keep only suppliers whose business type says manufacturer / factory (reads the company profile). Default false.

## `minYearsInBusiness` (type: `integer`):

Optional. Keep only companies established at least this many years ago (reads the company profile). Default 0.

## `onlyWithPrice` (type: `boolean`):

Optional. Skip products quoted as "Negotiable" with no number. Default false.

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

Optional. Skip products whose lowest listed unit price is above this (in the listed currency, nearly always USD). Products without a price are kept unless "Only products with a price" is on.

## `maxMoq` (type: `integer`):

Optional. Skip products whose minimum order quantity is above this number, e.g. 100 for small-batch buying. Products without a listed MOQ are kept.

## `onlyWithWebsite` (type: `boolean`):

Optional. Keep only suppliers that publish their own website. Default false.

## `maxConcurrency` (type: `integer`):

Optional, advanced. Parallel requests, 1-20. Default 8 (each on its own proxy IP; EveryChina rate-limits bursts from one IP).

## `maxRequestRetries` (type: `integer`):

Optional, advanced. Retries per failed or rate-limited request (each on a new proxy session), 0-20. Default 8.

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

Optional, advanced. Default Apify Proxy (datacenter), which works for EveryChina. Switch to {"useApifyProxy": true, "apifyProxyGroups": \["RESIDENTIAL"]} only if the log shows repeated blocks.

## Actor input object example

```json
{
  "searchTerms": [
    "yoga mat"
  ],
  "maxResultsPerSearch": 15,
  "scrapeDetails": true,
  "scrapeCompanyProfile": true,
  "uniqueSuppliers": false,
  "verifiedOnly": false,
  "manufacturersOnly": false,
  "minYearsInBusiness": 0,
  "onlyWithPrice": false,
  "onlyWithWebsite": false,
  "maxConcurrency": 8,
  "maxRequestRetries": 8,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

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

One row per product: price, MOQ, payment terms, supply ability, lead time, specs and the supplier with its company profile.

## `summary` (type: `string`):

Per-search counts, pages read, ignored inputs and stop reasons.

# 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 = {
    "searchTerms": [
        "yoga mat"
    ],
    "maxResultsPerSearch": 15,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("rel8ble/everychina-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 = {
    "searchTerms": ["yoga mat"],
    "maxResultsPerSearch": 15,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("rel8ble/everychina-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 '{
  "searchTerms": [
    "yoga mat"
  ],
  "maxResultsPerSearch": 15,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call rel8ble/everychina-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,rel8ble/everychina-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/Es6LHz2cmfJj0ThOq/builds/0EhtqDivgegY6rJxb/openapi.json
