I built this actor; it's a paid tool on Apify with a free trial credit.

Search Alibaba for a product and you get 48 product cards per page. What you actually want to know is who is behind them: is it a factory or a trading company, has a third party inspected it, does it answer messages, does it sell much online, and is "yoga mat" really its business or just one listing in a sports-goods shop?

All of that is on the search cards already, spread over a dozen badges and tooltips. I wrote Alibaba Supplier Search Scraper to collapse a keyword's results into one row per supplier with those signals as plain fields. This post shows how to call it from Python and Node, what a row looks like, and a small scoring script that re-ranks suppliers by trust instead of by search position.

How it works

Alibaba's search page loads its results from a JSON endpoint. The actor calls that endpoint over plain HTTPS (no browser, no login), reads up to 20 pages per keyword (48 products each), groups the products by supplier and keeps the supplier card: business type, years on Alibaba, Verified / Verified PRO / Gold / Trade Assurance, inspection company, store rating with its three sub-scores, response rate, online transactions, Alibaba's online revenue band, staff, factory size, main products and export markets. Next to that it adds what the supplier sells for your keyword: how many matching products, how many of those are ads, price range, lowest MOQ, total sold and up to 5 sample products.

Filters (Trade Assurance only, manufacturers only, minimum years / rating / reviews / staff, country, price, MOQ) are applied before saving, and suppliers dropped by a filter are never charged. No contact names, phones or emails are collected; each row has contactSupplierUrl, Alibaba's own inquiry form.

Calling it from Python

from apify_client import ApifyClient client = ApifyClient("<YOUR_APIFY_TOKEN>") run = client.actor("rel8ble/alibaba-supplier-search-scraper").call(run_input={ "searchTerms": ["yoga mat", "yoga block"], "maxSuppliersPerSearch": 50, "tradeAssuranceOnly": True, # "manufacturersOnly": True,  # "minYearsOnAlibaba": 3,  # "minRating": "4.5", }) for s in client.dataset(run["defaultDatasetId"]).iterate_items(): if "supplierId" not in s: continue print(s["rank"], s["supplierName"], "|", "/".join(s["businessType"]), "|", s["verifiedBy"], "| rating", s["rating"], "| MOQ", s["lowestMoq"]) 

The same from Node:

import { ApifyClient } from 'apify-client'; const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' }); const run = await client.actor('rel8ble/alibaba-supplier-search-scraper').call({ searchTerms: ['yoga mat'], manufacturersOnly: true, tradeAssuranceOnly: true, maxSuppliersPerSearch: 20, }); const { items } = await client.dataset(run.defaultDatasetId).listItems(); console.log(items.filter((s) => s.supplierId).map((s) => `${s.supplierName} (${s.yearsOnAlibaba} yrs)`)); 

What a row looks like

The top yoga mat result from a run on 30 Oct 2026, trimmed to the fields used below:

{ "searchTerm": "yoga mat", "rank": 1, "supplierName": "Fuqing Shengde Ruibo Technology Co., Ltd.", "country": "China", "businessType": ["Trading Company"], "isManufacturer": false, "yearsOnAlibaba": 3, "goldSupplier": true, "tradeAssurance": true, "verifiedBy": "SGS", "rating": 4.4, "reviewCount": 14, "responseRatePct": 89.3, "onlineRevenueUsd": 220000, "employees": 10, "factorySizeSqm": 160, "mainProducts": "Yoga Mat, Exercise Mat, Yoga Block, Yoga Roller, Fitness Set", "exportCountries": [], "matchingProducts": 4, "sponsoredListings": 3, "productPriceMin": 2.8, "productPriceMax": 9.99, "lowestMoq": 100, "soldCountTotal": 3786 } 

These are the first five suppliers from that run:

rank supplier type years inspected by rating (reviews) response revenue band listings (ads) price lowest MOQ
1 Fuqing Shengde Ruibo Technology Trading 3 SGS 4.4 (14) 89.3% $220K+ 4 (3) $2.80-9.99 100
2 Xiamen Kejinqu Toy Products Trading 1 - 4.6 (22) 98.8% $50K+ 2 (2) $1.80-27.80 1
3 Wenzhou Qiangfeng Technology Manufacturer + Trading 5 - 4.7 (11) 98.8% $150K+ 7 (1) $3.99-14.60 2
4 Hefei Avant Fitness Trading 2 Intertek 4.8 (29) 99.1% $110K+ 3 (2) $0.15-10.60 1
5 Tianjin Xiqing District Baoya Trading Firm Trading 1 - 5.0 (1) 83.7% $1K+ 3 (0) $4.72-6.45 20

A few things stand out. All five are Gold Suppliers with Trade Assurance, so those two badges do not separate anyone here. Only one of the five lists itself as a manufacturer. The two that a third party inspected (SGS, Intertek) are both trading companies. Eight of the 19 matching listings are ads, and four of the five suppliers reached page 1 at least partly through ads. And the #5 result has a perfect 5.0 rating from a single review, a $1K+ revenue band and main products "badminton, football, clothes".

A trust score instead of search position

Search position mixes relevance, ads and Alibaba's own ranking. For a first shortlist I would rather sort by signals I can explain. A deliberately simple 0-10 score:

def trust_score(s): keyword = s["searchTerm"].lower() points = 0 points += 2 if s.get("verifiedBy") else 0 # inspected by SGS, TUV, Intertek ...  points += 2 if s.get("isManufacturer") else 0 points += 1 if (s.get("yearsOnAlibaba") or 0) >= 3 else 0 points += 1 if (s.get("rating") or 0) >= 4.5 and (s.get("reviewCount") or 0) >= 10 else 0 points += 1 if (s.get("responseRatePct") or 0) >= 95 else 0 points += 1 if (s.get("onlineRevenueUsd") or 0) >= 100_000 else 0 points += 1 if keyword in (s.get("mainProducts") or "").lower() else 0 points += 1 if s.get("exportCountries") else 0 return points def red_flags(s): keyword = s["searchTerm"].lower() flags = [] if (s.get("reviewCount") or 0) < 5: flags.append(f"only {s.get('reviewCount') or 0} reviews") if keyword not in (s.get("mainProducts") or "").lower(): flags.append("keyword not in main products") if s.get("onlineRevenueUsd") is not None and s["onlineRevenueUsd"] < 10_000: flags.append(f"revenue band ${s['onlineRevenueUsd']:,}+") if s.get("matchingProducts") and s.get("sponsoredListings") == s.get("matchingProducts"): flags.append("every listing is an ad") return flags 

Run over the five rows above, it reorders them like this:

score rank supplier type flags 8 3 Wenzhou Qiangfeng Technology Co., Ltd. Manufacturer/Trading Company - 7 4 Hefei Avant Fitness Co., Ltd. Trading Company - 5 1 Fuqing Shengde Ruibo Technology Co., Ltd. Trading Company - 3 2 Xiamen Kejinqu Toy Products Co., Ltd. Trading Company every listing is an ad 0 5 Tianjin Xiqing District Baoya Trading Firm Trading Company only 1 reviews; keyword not in main products; revenue band $1,000+ 

The #3 search result comes out on top: a manufacturer with 5 years on Alibaba, 98.8% response, a $150K+ revenue band, yoga mats as a main product, 7 matching listings with only one ad, and 8 export markets including the United States. Hefei Avant is a trading company, but Intertek-inspected, 4.8 from 29 reviews, 9,406 sold across its listings and shipping to 14 countries. The #1 result drops to third mostly because of its 89.3% response rate and no listed export markets.

The weights are mine; change them to match what you care about (a dropshipper cares about MOQ 1, a brand owner about factories and certificates). The point is that every input is a field in the row, so the ranking is explainable.

Going further

  • Pre-filter in the run instead of in Python: manufacturersOnly, verifiedSuppliersOnly, minYearsOnAlibaba, minRating, minReviews, maxMoq. Filtered suppliers are free.
  • Many keywords at once: with dedupeAcrossSearches on, a supplier that sells "yoga mat" and "yoga block" is one row, and matchedSearchTerms lists both.
  • Then go deeper on the shortlist: pass supplierUrl to my Alibaba Supplier Store Scraper for the full catalog, or sampleProducts[].url to the Alibaba Product Details Scraper for price ladders and lead times.

Pricing and limits

$0.60 per 1,000 suppliers, no start fee: a 50-supplier shortlist costs $0.03. Search pages, filtered-out suppliers, duplicates and failed requests are not charged. A 50-supplier cloud run took 35 seconds including start-up.

Limits: up to 20 search pages per keyword (about 960 products, usually 400-600 suppliers). This is search-card data, so address and detailed capabilities are on the supplier's own pages. Fill rates on 50 "yoga mat" suppliers: name, country, years, response rate, main products, price and MOQ on every row; rating 96%, revenue band 98%, verified 62%, export markets 52%, staff 46%. Alibaba matches keywords loosely, so check sampleProducts when precision matters.

Store page: https://apify.com/rel8ble/alibaba-supplier-search-scraper

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

This article was drafted with AI and published by me.