Made-in-China Products & Suppliers Scraper avatar

Made-in-China Products & Suppliers Scraper

Pricing

from $0.03 / 1,000 item extracteds

Go to Apify Store
Made-in-China Products & Suppliers Scraper

Made-in-China Products & Suppliers Scraper

Collect public Made-in-China product listings with names, links, price and MOQ text, images and available supplier names. Export listing rows to CSV, Excel or JSON.

Pricing

from $0.03 / 1,000 item extracteds

Rating

0.0

(0)

Developer

Fetch Cat

Fetch Cat

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 hours ago

Last modified

Share

Collect public Made-in-China product listings from a keyword or listing URLs and export rows for sourcing research. Results contain product names and links, available price/MOQ text, images and supplier names—not detailed supplier profiles or contact information.

Quick start

  1. Enter a product keyword, or clear the keyword field and paste public listing URLs.
  2. Start with maxItems: 20 and maxPages: 1.
  3. Run the Actor and inspect the dataset before increasing the limits. Export it as CSV, Excel or JSON.
{
"query": "solar panel",
"maxItems": 20,
"maxPages": 1,
"proxyConfiguration": { "useApifyProxy": true }
}

Automatic proxy settings try direct access first, then the default managed route if direct access is challenged or unavailable, with one residential route if the managed connection fails or its response is challenged. Explicit direct, managed-group/country and custom proxy settings keep their selected route. See RUN_SUMMARY in the run's key-value store for per-listing outcomes and incomplete requests.

Prefer a video guide? This short Apify walkthrough shows you how to set up and run an Actor. It uses a different Actor, but the setup steps are the same.

What you get

One listing-derived product row with a source link, visible product name and available supplier name, card image, price and minimum-order text. Numeric values use the first parsed number rather than normalized commercial terms. No product-detail enrichment, contact collection or independent supplier verification is included.

Who is it for?

  • Procurement researchers assembling product links for manual sourcing review.
  • Wholesale comparison teams retaining visible prices and order quantities with their units and limits.
  • Supplier-research analysts following available supplier names and links without treating badges as verification.
  • Data teams importing card-level product records into their own sourcing spreadsheets.

How you can use the data

  • Build a small solar-panel research list. Use the existing keyword with twenty saved rows and one generated page. Keep productName, productUrl, sourceUrl and available supplierName so a buyer can inspect the original listing rather than rely on an automated recommendation.
  • Review visible commercial terms before comparing. Export priceRaw and moqRaw beside parsed numeric values. Price parsing recognizes visible US-dollar text and keeps its first number, while MOQ units are not normalized. This does not identify the cheapest equivalent offer.
  • Use an exact listing without an extra keyword source. Supply the existing solar-panel listing URL and clear the keyword prefill. Supplied URLs are requested once, and the page limit governs generated keyword pages rather than expanding each pasted listing.
  • Apply an order-quantity lower bound carefully. A minimum MOQ skips known parsed values below the threshold, but unknown quantities remain. Review those rows yourself. Repeated product URLs are saved only once across the run.

Input settings

SettingAPI keyBehavior
Search queryqueryUses the public search form to discover the canonical listing, then follows its Next links. With neither a nonempty query nor start URLs, searches for solar panel.
Start URLsstartUrlsEach public listing URL is requested once. Accepts strings or objects with url.
Maximum itemsmaxItemsMaximum saved rows, default 20.
Maximum pagesmaxPagesGenerated keyword pages, default 1. Does not paginate supplied URLs.
Minimum MOQminMoqSkips rows with a parsed MOQ below the number. Unknown MOQ is retained. Units are not normalized.
Include detailsincludeDetailsCurrently has no effect. No product-detail enrichment is performed.
Proxy configurationproxyConfigurationThe unqualified default { "useApifyProxy": true } tries direct first, then managed access on direct challenge/unavailability, with one residential route on a managed connection failure or challenge. Explicit direct, managed-group/country and custom proxy settings have no Actor-added fallback. See field help.
Legacy runtime valuemaxRuntimeSecsAccepted but ignored. Use Apify run timeout options instead.

If both query and startUrls are supplied, URL requests come first, followed by keyword pages, until the saved-row limit is reached. Clear the form's query prefill for URL-only input. Neither input is globally required because the existing keyword default remains supported.

For a listing URL, use this bounded input:

{
"startUrls": [{ "url": "https://www.made-in-china.com/products-search/hot-china-products/Solar_Panel.html" }],
"maxItems": 20,
"maxPages": 1,
"proxyConfiguration": { "useApifyProxy": true }
}

Output data

Each saved row represents a product link found in a listing. Values depend on the visible card content. They are not verified commercial offers.

FieldsMeaning
productName, productUrl, productIdListing link text, absolute URL and best-effort ID.
priceRaw, priceMin, priceMax, currencyVisible US-dollar price text, its first parsed number, the upper bound when a range is shown, and USD when matched. Otherwise null.
moqRaw, moqValueMOQ text and first parsed number. May be null.
imageUrl, imageUrlsFirst available card image. The array contains at most that one image.
supplierName, supplierUrlSupplier link text and URL when found in the card.
supportsOem, supportsSample, hasVideoText-mention indicators: true or null, not verified services or media downloads.
isAuditedSupplier, isDiamondMember, memberDurationYearsBest-effort badge mentions and membership-year number.
sourceUrl, searchQuery, pageNumber, scrapedAtSource context and extraction timestamp. Page number is null for supplied URLs.
extractionStatusAlways listing. Not a page-health or completeness diagnosis.

moqUnit, category, supplierLocation and businessType are currently always null. properties is empty, and certifications and missingFields are empty arrays. These fields do not establish detail coverage or diagnose missing content.

Shape-only excerpt showing empty optional fields—not an observed product or evidence of extraction:

{
"priceRaw": null,
"moqValue": null,
"supplierName": null,
"supplierLocation": null,
"extractionStatus": "listing",
"missingFields": []
}

Download your results

Open your run's dataset, choose Export and select JSON, CSV or Excel. JSON keeps nested fields together. CSV and Excel are useful when you want to review the records in a spreadsheet.

See Apify's download and export guide for the available formats and field options.

Pricing

The start event is charged once per run, including runs without saved products. The item event applies to each saved product row.

Use small saved-row and generated-page caps to bound requested work. See the live Pricing tab for current rates and discounts.

Tips for best results

  • Keep the first keyword search to one page. Check actual card fields before expanding requested work.
  • Clear the keyword prefill for URL-only input. Otherwise URL requests come first and keyword pages can add more work.
  • Retain raw price and MOQ text. The first parsed number is not a normalized offer or compatible unit.
  • Review unknown MOQ values separately. They survive the lower-bound filter rather than being verified matches.
  • Open product and supplier links before sourcing decisions. Text mentions and badges do not independently verify suppliers or services.

Limits and caveats

Only public Made-in-China listing information is supported without login credentials. Private accounts, messages, orders, emails and phone numbers are not collected. This Actor is not affiliated with Made-in-China and does not provide detailed supplier profiles or verified commercial offers.

Listing URLs are requested once before generated keyword pages. With no query or URLs, the existing solar-panel keyword default applies. The page cap affects generated searches, not supplied-URL expansion. Results are not sorted. Product URLs are deduplicated across the run, and keyword pagination follows the site's available Next links up to the page cap.

Minimum MOQ is a lower bound, not a maximum acceptable order quantity. Unknown quantities remain and units are not normalized. Price parsing keeps the first matched US-dollar number and the upper bound when a range is displayed. It does not normalize units or calculate landed cost. Only the first card image is available. Supplier and badge fields are best-effort visible text, and OEM, sample and video flags are mentions rather than verified capabilities or downloads.

Include details currently has no effect and product-detail enrichment is not performed. The accepted legacy runtime input is ignored in favor of Apify run timeout options. The always-empty fields and extractionStatus described in Output do not diagnose page health or completeness.

Explicit no-matches and missing/unavailable listing responses succeed empty with a reason in RUN_SUMMARY. Blocking or unrecognized markup is not treated as no matches: if no requested listing completes, the run fails. Mixed batches preserve useful rows and report incomplete requests as partial in the summary and warnings. Storage and billing errors remain fatal. An empty successful run is not evidence that a blocked route was repaired.

Requests have a 30-second cap, no hidden HTTP retries, at most three routes per listing under Automatic settings (direct, managed, residential), each with at most one canonical search-redirect recovery on that same route (six bounded requests total, excluding redirects), and a four-minute independent processing deadline. Inspect RUN_SUMMARY and warnings before using partial exports.

Automation and integrations

Save your settings for next time

Once you have an input that works for you, save it as an Apify task. This keeps your settings together so you can use them again without filling in the form from scratch.

Run on a schedule

Need fresh results regularly? You can schedule the Actor or a saved task to run at a time that suits you.

Each scheduled run collects the data again. If you want to compare results or highlight changes, add that step in your own workflow.

Send results to your other tools

Use n8n, Make or Zapier to connect this scraper to the rest of your workflow. For example, you could pass its results to an AI assistant or add records to a spreadsheet. Follow the Apify integration guides for your chosen tool.

For a custom connection, an Apify webhook can notify your app when a run finishes or fails. Your app can then fetch the results or handle the failure.

API usage

Want to collect this data from your own app or automation? The examples below send input to the scraper and show how to collect its results.

The Node.js and Python examples wait for the run to finish before reading its results. The cURL example starts the run and returns its details. Wait for that run to finish, then use its defaultDatasetId to fetch the results.

For setup instructions, see Apify's JavaScript client guide, Python client guide and Actor runs API reference.

cURL

curl -X POST 'https://api.apify.com/v2/acts/fetch_cat~made-in-china-products-suppliers-scraper/runs' \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H 'Content-Type: application/json' \
--data @- <<'JSON'
{
"query": "solar panel",
"maxItems": 20,
"maxPages": 1,
"proxyConfiguration": {
"useApifyProxy": true
}
}
JSON

Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('fetch_cat/made-in-china-products-suppliers-scraper').call({
"query": "solar panel",
"maxItems": 20,
"maxPages": 1,
"proxyConfiguration": {
"useApifyProxy": true
}
});
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/made-in-china-products-suppliers-scraper').call(run_input={'query': 'solar panel', 'maxItems': 20, 'maxPages': 1, 'proxyConfiguration': {'useApifyProxy': True}})
print(client.dataset(run['defaultDatasetId']).list_items().items)

API usage notes

This returns run metadata, not the finished dataset. Wait for completion and retrieve items using the returned defaultDatasetId.

MCP and AI agents

You can ask your AI assistant to collect data with Made-in-China Products & Suppliers Scraper and help you work with the results. The scraper returns the data, and your assistant can then summarize it, compare records or prepare notes.

Connect your assistant through the Apify MCP server. MCP gives your assistant a way to find this scraper, run it and read the results. Follow the official setup and sign-in guide for your app.

Easier setup with an Apify plugin

If you use a supported coding assistant, the official Apify plugin can set up the connection for you. It connects your assistant to Apify and includes instructions for common tasks. Follow the guide for your particular app.

Use Apify AI in Console

Prefer to keep everything in Apify? Open Apify AI in Console and ask it to find Fetch Cat's Made-in-China Products & Suppliers Scraper. You can describe the data you want and ask questions about the results.

Apify AI is currently in beta. It asks for confirmation before starting an Actor, and normal run charges apply.

Choose your assistant

Connect just this scraper

To keep your setup focused on this scraper, add this server configuration to a compatible MCP client:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=fetch_cat/made-in-china-products-suppliers-scraper"
}
}
}

Sign in to Apify when your client asks. If your client uses a Bearer token instead, follow its setup guide and keep the token in its secure configuration. Configuration formats vary by app, so use the linked guide if your client needs a different format.

Use Apify's general server

Already connected to the general Apify MCP server at https://mcp.apify.com? You can use it to find this scraper without adding another server. Ask your assistant to use Made-in-China Products & Suppliers Scraper by Fetch Cat, or give it the identifier fetch_cat/made-in-china-products-suppliers-scraper.

Your assistant can check the available settings and retrieve the results from the returned run. If the run is still working, it should follow that run rather than start it again. Both connection options use Apify's hosted service.

Example requests

  • “Use Fetch Cat’s Made-in-China Products and Suppliers Scraper to collect up to 5 solar panel listings from one generated page using the existing Apify Proxy setting. Keep product and supplier links with raw price and MOQ text for manual review, without requesting details.”
  • “Collect up to 5 products from https://www.made-in-china.com/products-search/hot-china-products/Solar_Panel.html with the keyword cleared and the existing Apify Proxy setting. Keep source links and card fields, and report empty output as uncertain rather than verified zero supply.”
  • “Retrieve up to 5 solar panel listings from one generated page with a minimum MOQ of 10 and the existing Apify Proxy setting. Retain raw quantity text and flag unknown MOQ separately, since the filter is a lower bound rather than a maximum order requirement.”

Normal Apify charges apply. Check the live Pricing tab before asking your assistant to run a larger batch.

Pay with x402

If your AI agent has a funded wallet, it can pay for Apify usage through x402. This experimental option lets an agent use Apify without a conventional account.

Apify AGI provides a prepaid API token with a spending cap after payment. Your agent can use that token to run this scraper through the Apify API or an authenticated MCP connection.

Some MCP setups also support paying for each request directly. That is a different payment option, so check the official guide for its availability.

Follow the official guide for wallet setup, supported payment options and current terms. Apify handles the payments. Keep wallet keys and payment tokens in your agent's secure configuration.

Other ways for agents to pay

Apify also supports MPP for prepaid access through AGI and Skyfire for eligible Actors. If your agent already uses one of these, see the agentic payment guide to choose the right setup.

FAQ

Why are fields empty?

Some fields are listing-dependent. Others are currently always empty as listed in Output. Enabling includeDetails does not change this.

Why did I receive no rows?

A page may have no matching product links, be inaccessible, or have a changed layout. Check the run warnings and the exact public listing URL. An empty run alone cannot distinguish these causes.

Can I filter suppliers by a maximum order quantity?

No. minMoq is a lower bound for the parsed number, not a maximum acceptable MOQ. Rows without a parsed value remain included.

Support and feedback

For custom additions or integrations, email hello@fetchcat.dev.

Found an error or have a feature request? Open an issue with the run URL, a non-sensitive input example and what you expected.

Need help sharing it? See Apify’s guide to sharing a run when reporting an issue. Sharing a run can give the developer access to its input, logs and results, so use a run that contains no sensitive data. Please leave out API tokens, passwords, cookies, private documents and personal data. Use a public sample URL or a redacted example instead.

Tried this scraper? We'd love to hear how it worked for you. Leave a review to help others choose the right tool and help us improve it. Your feedback means a lot to us.

Made with care for curious people, AI agents and the possibilities in data. ♥