# Alibaba Supplier & Manufacturer Scraper (`apt_marble/alibaba-supplier-scraper`) Actor

Turn any Alibaba supplier storefront or product link into a verified company record: legal entity name, business licence registration number, registered capital, registered address, certifications, export markets and trade terms. Know exactly who you are buying from before you order.

- **URL**: https://apify.com/apt\_marble/alibaba-supplier-scraper.md
- **Developed by:** [Hamza](https://apify.com/apt_marble) (community)
- **Categories:** E-commerce, Lead generation
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $6.00 / 1,000 supplier records

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?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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

## Alibaba Supplier & Manufacturer Scraper

Give this actor a list of Alibaba supplier storefronts — or just links to
products you are interested in — and it returns one complete company record per
supplier: who the company legally is, what it is certified to do, how it trades,
and the entry from its public business licence. It is built for sourcing teams,
importers, trading agents and compliance staff who need to know exactly who is
on the other side of an order before they place one.

The part nothing else gives you is the **business registry block**: the legal
company name, the registration number, the registered capital, the legal form,
the authority that issued the licence, the issue and expiry dates and the
registered address — exactly as the supplier published them.

No account and no login are needed. Just add your suppliers and run it.

***

### What you can do with it

- **Vet a supplier before you order.** Confirm the trading name on the
  storefront matches the legal entity on the business licence, and check the
  registered capital, the legal form and the registration address.
- **Build a qualified manufacturer shortlist.** Pull a dozen candidate factories
  per run into one table with business type, year established, staff numbers,
  factory size, certifications, export markets and on-time dispatch rate side by
  side, and add the next dozen in the next run.
- **Enrich a list of product links.** Paste product links from a sourcing
  spreadsheet and get back the company behind each one, resolved automatically.
- **Screen for compliance and KYC.** Export legal entity names and registration
  numbers straight into a supplier onboarding or sanctions-screening workflow.
- **Re-check an approved supplier list.** Run the same list monthly and see a
  changed registration, an expiring licence, a lost certification or a shifted
  capability profile.
- **Separate real factories from resellers.** The record states whether the
  business type was independently checked, who audited the company, and whether
  it passed an on-site inspection.

***

### What you get

One row per supplier. Abridged real example:

```json
{
  "supplierName": "Shandong Jianha Baofa Heavy Industry Machinery Co., Ltd.",
  "supplierId": 273706047,
  "subdomain": "jianha",
  "minisiteUrl": "https://jianha.en.alibaba.com/",
  "country": "CN",
  "province": "Shandong",
  "location": "Shandong, China",
  "operationalAddress": "1299-6 Tengfei East Road, Shannan Street, Economic Development Zone, Zaozhuang, Shandong, China",
  "businessType": "Manufacturer, Trading Company",
  "businessTypeVerified": true,
  "yearEstablished": 2022,
  "yearsOnPlatform": "5",
  "employeesBand": "11 - 50 People",
  "verifiedEmployeeCount": 39,
  "factorySize": "3,000-5,000 square meters",
  "annualOutputValue": "US$10 Million - US$50 Million annual output value",
  "annualRevenue": "Confidential",
  "mainProducts": ["Hydraulic Press Machine", "Swivel Axis Press Machine", "Die Casting Machine"],
  "mainMarkets": [
    { "market": "Eastern Europe", "revenueSharePercent": 30 },
    { "market": "North America", "revenueSharePercent": 10 }
  ],
  "mainMarketsTop3": ["Eastern Europe", "North America", "South America"],
  "deliveryTerms": ["FOB", "CIF"],
  "paymentMethods": ["T/T", "L/C"],
  "paymentCurrency": "USD",
  "contractManufacturing": ["OEM Service Offered", "Design Service Offered"],
  "productionServices": ["Drawing-based customization", "Full customization"],
  "qualityAssurance": ["Finished product inspection", "Quality traceability"],
  "certifications": ["ISO9001"],
  "productCertifications": ["CE"],
  "responseTime": "≤2h",
  "reorderRate": 40,
  "onTimeDeliveryRate": 100,
  "storeRating": null,
  "storeRatingMax": 5,
  "storeReviewedOrderCount": 0,
  "goldSupplier": true,
  "onsiteCheckPassed": true,
  "supplierAssessmentPassed": true,
  "tradeAssuranceEnabled": true,
  "auditedBy": "SGS Group",
  "verifiedIdentity": "Custom Manufacturer",
  "capabilityTags": [
    { "tag": "On-site technical support", "description": "Suppliers who provide expatriate engineer services, as assessed by independent third parties." }
  ],
  "categoryRank": {
    "statement": "#6 most popular in Hydraulic Presses",
    "position": 6,
    "category": "Hydraulic Presses"
  },
  "hasVerifiedCredentials": true,
  "businessRegistry": {
    "legalCompanyName": "Shandong Jianha Baofa Heavy Industry Machinery Co., Ltd.",
    "registrationNumber": "91370481MA7KDQWF66",
    "registeredCapital": "RMB 5,000,000",
    "legalForm": "Limited Liability Company(Invested Or Controlled By Natural Person)",
    "issuingAuthority": "Tengzhou City Administration for Market Regulation",
    "countryTerritory": "China",
    "yearEstablished": "2022",
    "dateOfIssue": "2022-03-09",
    "expiryDate": null,
    "expiryAsPublished": "长期",
    "registrationIsIndefinite": true,
    "registeredAddress": "1299-6 Tengfei East Road, Shannan Street, Economic Development Zone Zaozhuang Shandong China",
    "taxRegistrationNumber": null
  },
  "readCountry": "US",
  "scrapedAt": "2026-08-09T18:44:12.000Z"
}
```

***

### Input reference

| Field | Type | Default | What it does |
| --- | --- | --- | --- |
| `supplierUrls` | list of text | *(required)* | One entry per supplier. A storefront address (`jianha.en.alibaba.com`), a full storefront link, or a product link (`https://www.alibaba.com/product-detail/…`) which is resolved to the company that sells it. |
| `country` | select | `us` | Which country's version of the site to read. Company records are published the same way everywhere, so this rarely changes what comes back. |
| `includeTradeProfile` | boolean | `true` | On: also return business type, year established, staff numbers, main products, export markets with revenue share, revenue band, factory size, certifications, delivery and payment terms, response and reorder rates. Off: return only the company identity and its business registry entry, which is quicker and lets one run cover more suppliers. |
| `includeLegalRepresentative` | boolean | `false` | Adds the legal representative named on the business licence, and the licence scan. This is personal data about a named individual — see *Limits* below. |
| `maxSuppliers` | integer | `10` (max `12`) | How many suppliers to look up in this run. |

***

### Output fields

| Field | Meaning |
| --- | --- |
| `supplierName`, `supplierId`, `subdomain`, `minisiteUrl` | Company identity and where its storefront lives. |
| `inputTarget`, `inputType` | The entry you supplied and whether it was a storefront or a product link. |
| `country`, `province`, `location`, `operationalAddress` | Where the company operates. |
| `businessType`, `businessTypeVerified` | Manufacturer, trading company, or both — and whether that was independently checked. |
| `yearEstablished`, `yearsOnPlatform` | Company age and how long it has traded on the marketplace. |
| `employeesBand`, `verifiedEmployeeCount` | Self-declared staff band, plus the headcount an auditor counted. |
| `factorySize`, `annualOutputValue`, `annualRevenue`, `tradeShows` | Production scale as published. |
| `mainProducts` | What the company sells. |
| `mainMarkets`, `mainMarketsTop3` | Export markets, with each market's share of revenue where the company discloses it. |
| `deliveryTerms`, `paymentMethods`, `paymentCurrency` | Incoterms, accepted payment types and settlement currency. |
| `contractManufacturing`, `productionServices`, `qualityAssurance` | OEM/ODM options, customisation depth and inspection practices. |
| `certifications`, `productCertifications` | Management-system certificates and product certificates. |
| `responseRate`, `responseTime`, `reorderRate`, `onTimeDeliveryRate`, `quotationPerformance` | The company's service record. |
| `storeRating`, `storeRatingMax`, `storeReviewedOrderCount` | The rating of the whole storefront, not of any single product. |
| `goldSupplier`, `paidMember`, `onsiteCheckPassed`, `supplierAssessmentPassed`, `avCheckPassed`, `tradeAssuranceEnabled`, `auditedBy`, `verifiedIdentity` | Verification tier and who carried out the audit. |
| `capabilityTags` | Audited capability statements, each with the definition the auditor used. |
| `categoryRank` | Ranking position inside a named category, when the company holds one. |
| `description`, `advantageDescription` | The company's own profile text. |
| `hasVerifiedCredentials` | True when a business licence entry with a registration number was published. |
| `businessRegistry` | Legal company name, registration number, registered capital, legal form, issuing authority, country, year established, issue date, expiry date (plus the expiry exactly as published and a flag for licences with no end date), registered address and tax registration number. |
| `productPageProfile` | Extra company facts carried on a product page, present only when you supplied a product link: dispatch guarantees, trade-assurance cover, the audited "verified information" statements with who verified each one, and — where the company publishes them — its six-month order value and order count. The order value is given as the exact figure in US dollars, alongside the rounded band the site displays. |
| `readCountry`, `sectionsRead`, `scrapedAt` | Which country the record was read as, which parts of the company profile contributed, and when. |

A field the company has not disclosed comes back empty. It is never filled with
a zero, a dash or a blank string — an undisclosed reorder rate and a reorder
rate of zero are very different facts about a supplier.

Every run also writes a summary record with the suppliers collected, the ones
that turned out to have no public company profile, the ones that could not be
read, and the ones that were never reached.

***

### Pricing

Pay per event.

| Event | Charged when |
| --- | --- |
| Supplier record | Once for every company record added to your results. |
| Verified credentials | Once more when that record includes the company's business licence entry. |

A supplier who publishes no business licence entry still gives you the full
company record and is charged only the first event.

**Worked example.** Ten suppliers, nine of which publish a licence entry:
ten supplier records plus nine credential events. At the listed prices that is
under nine cents for the whole run.

***

### Limits & what this actor cannot do

- **There are no e-mail addresses and no phone numbers.** Alibaba does not
  publish supplier e-mail addresses or telephone numbers on the public company
  pages at all, so this actor never returns them and never guesses them. What
  it sells is verified company credentials, not a contact list. To reach a
  supplier, use the storefront link in every record.
- **Written company reviews are not available.** Where a storefront rating and a
  reviewed-order count are published they are returned, but the review text
  behind them is not published to visitors and is not returned. Ratings are the
  storefront's, never a single product's.
- **A run covers up to 12 suppliers.** The site serves company profiles slowly
  and limits how many one visitor may read in a row. For longer lists, split
  them across several runs or schedule them.
- **If the site stops serving profiles part-way through a run**, the run stops
  cleanly, tells you which suppliers were never reached, and asks you to try
  those again in about half an hour. It never reports an unfinished run as a
  complete one.
- **Not every supplier publishes a business licence entry.** Those records come
  back with `hasVerifiedCredentials` set to false and no `businessRegistry`
  block at all, which is reported as "not published" rather than as a failure —
  and is charged as an ordinary record, not as a credentialed one.
- **A supplier's six-month trading figures are published by some companies and
  not others.** Where they exist they are returned with the exact value in US
  dollars next to the rounded band the site shows. Where the company does not
  publish them the fields come back empty, never as zero.
- **A storefront that arrives in an unfamiliar form is reported as a failure**,
  not as a company with no public profile. The two are kept apart on purpose: a
  live company must never be filed as absent.
- **Registry values are returned exactly as published.** Registered capital
  arrives as its published string (for example `RMB 5,000,000`), and a licence
  with no end date arrives with the site's own wording preserved alongside a
  flag, instead of being forced into a date that would be wrong.
- **The legal representative is a named individual.** The name printed on a
  company's business licence, and the licence scan that shows it, are withheld
  unless you switch them on. If you do switch them on, you are responsible for
  handling that personal data in line with the privacy law that applies to you.
  Nothing else identifying a private person is ever returned — named sales
  staff, account handles and profile photos published on supplier pages are
  deliberately left out.
- **Everything is a snapshot.** Ratings, delivery rates, certifications and
  rankings keep changing after collection.
- **Suppliers that have removed their storefront** are reported as unavailable,
  which is kept separate from suppliers the run could not read.
- **Speed depends on the size of the job** and on how quickly the source site
  answers. No fixed throughput is promised.
- **The source site's terms govern automated access.** You are responsible for
  using the data lawfully and in line with those terms.

***

### FAQ

**Do I need an account on the source site?**
No. Nothing here needs an account of any kind.

**Does it need my login or password?**
No. There is nothing to sign in to and nothing to configure.

**Can I give it product links instead of supplier storefronts?**
Yes. A product link is resolved to the company that sells it, and that company's
record comes back with the extra facts the product page carries — the audited
capability statements, trade-assurance cover, and the six-month order value and
order count where that company publishes them.

**Can I schedule it?**
Yes. Schedule it on Apify like any other actor, for example to re-check an
approved supplier list every month and spot a changed registration or an expired
licence.

**Is the data complete?**
It is complete for what Alibaba publishes about a company. Every field a
supplier discloses publicly is returned; every field they withhold comes back
empty rather than invented. E-mail addresses, phone numbers and review text are
not published on these pages by anyone, so no tool can return them.

**Why is the registered capital text rather than a number?**
Because it is published with its own currency wording, and reducing it to a bare
number would either drop the currency or force a conversion the source never
made. You get the published value verbatim.

# Actor input Schema

## `supplierUrls` (type: `array`):

One entry per supplier. Each entry can be a supplier storefront address (jianha.en.alibaba.com), the full storefront link, or a product page link — a product link is resolved to the supplier who sells it.

## `country` (type: `string`):

Which country's version of the site to read. Company records are published the same way for every country, so this rarely changes what comes back.

## `includeTradeProfile` (type: `boolean`):

On: also return business type, year established, staff numbers, main products, export markets with revenue share, revenue band, factory size, certifications, delivery and payment terms, response and reorder rates. Off: return only the company identity and its business registry entry, which is quicker and lets one run cover more suppliers.

## `includeLegalRepresentative` (type: `boolean`):

Off by default. The legal representative named on a company's business licence is a private individual, and the licence scan shows that name too. Turn this on only if your use of the data covers personal data, and handle it in line with the privacy law that applies to you.

## `maxSuppliers` (type: `integer`):

How many suppliers to look up in this run. The site publishes supplier records slowly and limits how many one visitor may read in a row, so a run covers up to 12 suppliers. For longer lists, split them across several runs or schedule them.

## Actor input object example

```json
{
  "supplierUrls": [
    "jianha.en.alibaba.com",
    "syduansheetmac.en.alibaba.com"
  ],
  "country": "us",
  "includeTradeProfile": true,
  "includeLegalRepresentative": false,
  "maxSuppliers": 10
}
```

# Actor output Schema

## `supplierRecords` (type: `string`):

Every supplier record collected in this run.

## `datasetInConsole` (type: `string`):

Browse, filter and export the records.

## `runSummary` (type: `string`):

What was collected, what was unavailable and what could not be read.

# 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 = {
    "supplierUrls": [
        "jianha.en.alibaba.com",
        "syduansheetmac.en.alibaba.com"
    ],
    "country": "us",
    "includeTradeProfile": true,
    "includeLegalRepresentative": false,
    "maxSuppliers": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("apt_marble/alibaba-supplier-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 = {
    "supplierUrls": [
        "jianha.en.alibaba.com",
        "syduansheetmac.en.alibaba.com",
    ],
    "country": "us",
    "includeTradeProfile": True,
    "includeLegalRepresentative": False,
    "maxSuppliers": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("apt_marble/alibaba-supplier-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 '{
  "supplierUrls": [
    "jianha.en.alibaba.com",
    "syduansheetmac.en.alibaba.com"
  ],
  "country": "us",
  "includeTradeProfile": true,
  "includeLegalRepresentative": false,
  "maxSuppliers": 10
}' |
apify call apt_marble/alibaba-supplier-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,apt_marble/alibaba-supplier-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/2iEceeKNoutUZYc10/builds/uw1GARc5904l8zQul/openapi.json
