GlobalSources Scraper | B2B Products & Suppliers avatar

GlobalSources Scraper | B2B Products & Suppliers

Pricing

from $2.20 / 1,000 results

Go to Apify Store
GlobalSources Scraper | B2B Products & Suppliers

GlobalSources Scraper | B2B Products & Suppliers

Scrape GlobalSources (www.globalsources.com) B2B products, manufacturers, and supplier profiles. Search by keyword, browse categories, enrich PDP details, and export Excel/CSV/JSON. Unofficial — not affiliated with GlobalSources.

Pricing

from $2.20 / 1,000 results

Rating

0.0

(0)

Developer

kane liu

kane liu

Maintained by Community

Actor stats

1

Bookmarked

2

Total users

1

Monthly active users

42 minutes ago

Last modified

Share

Scrape Global Sources B2B products, manufacturers, and supplier profiles — including guest-visible phones and emails on company-profile — then download structured trade data as Excel, CSV, or JSON.

Use this Actor as a practical GlobalSources data API for Asia-focused supplier research, product sourcing, and catalog monitoring. Choose a mode, set a keyword, and get Dataset rows with product IDs, titles, company names, FOB/price strings, MOQ, images, PDP URLs, and outreach fields (phones, emails, street / 门牌) when enrichDetails (default true) follows {short}.manufacturer.globalsources.com/company-profile_{homepageId}.htm.

  • Scrape product search (/manufacturers/{keyword}.html with ?pageNum=N, ~80 rows/page via Nuxt searchList)
  • Browse category hubs (/category/1-…_{id}/) — these are marketing landings, not the 80-row SERP
  • Pull product detail pages and supplier manufacturer pages (*.manufacturer.globalsources.com)
  • enrichDetails defaults to true — after PDP/homepage, the worker opens company-profile (customModuleDetails Visit Us / Hotline) for phones, emails, street, and contact person
  • Extract productId, title, companyName, price, MOQ, image, URL, supplierShortName, plus phones / emails / address / person after enrich
  • Export to Excel / CSV / JSON, or connect Make, n8n, Zapier, Python, or the Apify API
  • Pay per event — Actor start + each Dataset result; platform usage is included (you do not pay separate Apify compute on top)

Unofficial tool. This Actor is not affiliated with, endorsed by, or sponsored by Global Sources / GlobalSources.com. It collects publicly reachable product and supplier surfaces and does not log in, click Inquire / Chat / Register, submit RFQs, or access private buyer accounts. There is no Show phone / View Mobile button on measured pages — numbers are already plaintext on company-profile, or that supplier left the slots empty.


What does the GlobalSources Scraper do?

GlobalSources Scraper lets you extract structured B2B product and supplier data from www.globalsources.com without running your own proxy and browser fleet. Give it a keyword, category URL/ID, product URL, or supplier homepage, then start a run.

Under the hood, the Actor:

  1. Validates your input (mode, lang, query, URLs)
  2. Enforces free-tier caps when you are on a free Apify plan
  3. Fetches public GlobalSources listing and detail pages (Nuxt SSR payloads; www needs an unlock rung because bare HTTP is an Imperva shell)
  4. When enrichDetails is on (the default), follows the live manufacturer company-profile URL for outreach fields
  5. Normalizes product / supplier rows into a clean Dataset
  6. Writes INPUT_ECHO, RUN_SUMMARY (and ERROR_SUMMARY on failure) to the key-value store

You run it like any other Apify Actor — schedule it, call it from the API, or plug it into automations.


What GlobalSources data can I extract?

DataProduct search (searchList)Category hubProduct PDPSupplier + company-profile
productId / URL✅ (~80/page)a few topProd onlyrelated products*
title / productNamehub titlescompany name
companyName / supplierShortName✅ (title / companyName / org.name; supplierName may be null)
price / FOB display stringvaries
minOrderQuantity (MOQ)varies
image / primaryImageUrlvarieslogo / media*
lang / surface✅ (surface may be omitted on profile rows)
phones / emails本站无 until enrich本站无usually empty strings✅ after enrich, or 本站无
street / 门牌本站无 (country only)本站无often yes✅ on profile / PDP
person本站无本站无本站无Management and/or Visit Us

*Supplier mode focuses on company-profile fields; product lists on the supplier site depend on available public Nuxt data. See Lead / Contact fields for types, sample sources, reveal cost, and honest gaps. /category/1-… is not the manufacturer SERP.


Lead / Contact fields

Every product / supplier item carries the lead keys below (or omits a catalog alias such as supplierName while still filling companyName). Empty values should be paired with leadAbsences so you know why a field is blank (本站无 = not on the public page, 闸门锁 = behind a form/login we do not submit, 未验证 = not measured). Nested address parts such as locality may simply be unset.

Contact source: full phone and email live on {short}.manufacturer.globalsources.com/company-profile_{homepageId}.htm inside Nuxt customModuleDetails (Visit Us / Hotline). Homepage JSON-LD Organization has no telephone, email, or PostalAddress — do not treat homepage JSON-LD as the contact source.

FieldTypeMeaning on GlobalSources
phones[{value, type, e164?}]Guest-visible numbers from company-profile modules after enrich. Measured easy-buy sample: landline (86-595) 2854 754 (Hotline / Services and Support) and mobile 86 - 15880782091 (Visit Us label Hotel Primary Tel). Copied to alias phone (first number). Manufacturer list cards have no phones until enrichDetails follows company-profile. PDP contactUsInfo.telephone / mobile / fax are often "". There is no Show phone / View Mobile click. Some suppliers (huangbo / xianghe class) leave these slots empty → phones=[] / 本站无. Never regex credit-code prefixes such as 91350521 as phones (those are 统一社会信用代码 / USCC).
emails[{value, type}]Guest-visible inbox from Visit Us E-mail Address on company-profile. Measured easy-buy sample: cindy@xiameneasybuygroup.com (type=work), also copied to alias email. List cards and typical PDP have no supplier email. huangbo / xianghe class: empty string slots → emails=[] / 本站无. The Actor does not invent inboxes. Platform /corporate/en/contact/ addresses (visit@globalsources.com, …) are Global Sources sales, not manufacturer leads.
address{street, unit, locality, region, postalCode, country, full}unit = 门牌. easy-buy Visit Us street: 107 Houliao, Xiang'an District, Xiamen, Fujian, China with unit=107. full may also concatenate registered office (Room 409, Office Building, No.258, Keji Road, Fengze District, Quanzhou City, Fujian Province) and production address. PDP contactUsInfo can already have street while telephone stays empty. List cards are country-only (supplierLocation=China) until enrich. locality / region / postalCode / country may be null even when street is filled. Alias addressText may be "".
geo{lat, lng}Coordinates. Measured company-profile row: lat/lng null. Recon found no map iframe. Treat as 本站无 / 未验证. Geo does not replace street.
person{name, role?}Contact person on company-profile. The same easy-buy profile publishes two people: Management Contact Person=Mr.chen, Weiping (role=Manager) — this is what the smoke row put in person — and Visit Us Cindy (Manager, Foreign Trade), whose inbox is cindy@xiameneasybuygroup.com. Legal representative Guo Li'e is a separate slot. The Actor does not merge all three into person. List / PDP typically have no person.
org{name, id?}Manufacturer. org.name = company title (easy-buy: Xiamen Yi Easy Buy Import and Export Trade Group Co.,Ltd). org.id = internal org / supplierId (2008855290824). homepageId is different (6008855290824 on homepage_*.htm / company-profile_*.htm). Do not mix the 6… URL id with the 2… org id.
web{website, socials[]}On the measured company-profile row, web.website (and alias website) is the manufacturer company-profile URL itself, not a proven off-platform site. socials was [] (未验证).
leadSourceenumsearch on manufacturer searchList cards; detail after PDP; entity when company-profile is merged (nuxt_company_profile).
leadRevealenumvisible when Visit Us / Hotline already contain plaintext (no click-reveal XHR). absent when that supplier left phone/email slots as "".
leadAbsencesobjectPer-subfield reason. Easy-buy smoke row had {} because phones, emails, and street were filled (geo still null). huangbo / xianghe class should record phones/emails 本站无. Empty "" slots are not login-gated.
companyProfileUrlstringLive {short}.manufacturer.globalsources.com/company-profile_{homepageId}.htm (easy-buy: …/company-profile_6008855290824.htm).
companyName / title / namestringFilled company title on profile rows. supplierName may be omitted or null on those rows — use companyName / org.name, not the catalog alias.
supplierId / homepageIdstringsupplierId / org.id = 2008855290824; homepageId = 6008855290824.
enriched / enrichedProfilebooleantrue when the worker followed PDP and/or company-profile.
phone / email / faxstring | nullConvenience aliases. fax was null on the measured row.
city / countrystringMay be "" on profile rows even when address.street is complete.
descriptionstringCompany-overview blurb from the profile page (may contain HTML entities such as &).
mainProductsarrayProduct names when present; [] on the measured supplier row.

Reveal cost

There is no extra “unlock phone” click or XHR. Measured pages have no Show phone / View Mobile. Inquire Now / Chat with Us / Register exist; the Actor does not click them and does not submit RFQs. Numbers are either already plaintext on company-profile, or that supplier’s module left "".

What does cost extra time is enrichDetails (default true): one PDP fetch (street may appear here; telephone often empty) and one GET of company-profile_{homepageId}.htm for Visit Us / Hotline. Set enrichDetails: false only for thin list/PDP identity rows — that drops most outreach (list cards have no phones/emails/street).

Engine limitation (no secrets): www.globalsources.com with python / curl / generic UAs returns an Imperva Pardon Our Interruption HTML shell. {short}.manufacturer.globalsources.com with python/curl is CloudFront 403; a Chrome user-agent can download Nuxt. The hosted worker uses an unlock / browser rung. This Actor does not run Chrome on Apify. Do not parse the Pardon shell as listings.

Honest limitations

  • Homepage JSON-LD is not the contact source. Organization on homepage_{id}.htm has no telephone, email, or PostalAddress. Full outreach is on company-profile customModuleDetails.
  • No Show phone / View Mobile. After enrich, numbers are visible on company-profile or the slots are empty. The Actor does not click Inquire / Chat / Register.
  • PDP contactUsInfo.telephone / mobile / fax are often empty strings even when street is present. Do not expect PDP-only runs to fill phones/emails.
  • Manufacturer list cards (/manufacturers/{keyword}.html searchList) typically have 本站无 for phones, emails, and street until enrich follows company-profile. supplierLocation=China is not a 门牌. Body noise such as 570-1981 is not a phone.
  • Some suppliers (huangbo / xianghe class): phones + emails 本站无, street + legal person still present. Empty slots are "", not a login wall. Never regex 91350521… credit-code prefixes as phones.
  • /category/1-…_{id}/ is a marketing hub, not an 80-row SERP. It has CategoryData plus a handful of topProd — no searchList, no pageNum. List SERP is /manufacturers/{keyword}.html?pageNum=N (pageSize 80).
  • m. mobile was 未验证 this round. Prefer surface=www plus manufacturer subdomains.
  • Socials 未验证 (smoke web.socials=[]). Geo 本站无 / 未验证 (no map; lat/lng null).
  • Two names on one profile is normal. easy-buy Visit Us lists Cindy (inbox cindy@…); Management lists Mr.chen, Weiping. The smoke person field is the Management slot.
  • supplierName null is an alias quirk, not a missing company: title / companyName / org.name are filled.
  • Platform /corporate/en/contact/ phones and emails are Global Sources sales/fair hotlines, not supplier leads.
  • enrichDetails defaults true. README copies that still called it optional/off for PDP only are wrong — false skips company-profile and drops most outreach.

Why scrape GlobalSources?

Global Sources is a long-standing B2B marketplace connecting buyers with manufacturers and trading companies across electronics, consumer goods, industrial parts, and more. Teams scrape GlobalSources for supplier discovery, sourcing shortlists, price/MOQ monitoring, and assortment research:

  • Monitor keyword product search (/manufacturers/{keyword}.html?pageNum=N, ~80 rows/page)
  • Follow PDP pages and company-profile for phones, emails, and 门牌 (enrichDetails default on)
  • Collect supplier manufacturer pages — homepage for identity, company-profile for outreach
  • Feed CRM, BI dashboards, Google Sheets, BigQuery, or AI agents with clean rows
  • Avoid maintaining your own Imperva / residential browser stack

Compared with generic URL scrapers, this Actor returns GlobalSources-specific fields (productId, homepageId vs orgId, searchList prices/MOQ, company-profile phones/emails). Category hubs are not a substitute for manufacturer search.


More Actors like this

Need another B2B marketplace, Asia e-commerce site, or a different vertical? Use a dedicated Actor below for structured fields. Use this Actor for Global Sources (www.globalsources.com) products and suppliers.

Similar e-commerce & B2B scrapers

Prefer another specialized scraper?

If your target has a specialized Actor below, use that first — usually cheaper and more structured than a generic scrape.

Jobs & Freelance

Real Estate

Travel & Stays

Social & Content

Ads Intelligence

Local & Maps

General Tools

→ See the full catalog in Related Actors below, or browse apify.com/lentic_clockss.


How to scrape GlobalSources (no code required)

  1. Create a free Apify account
  2. Open GlobalSources Scraper
  3. Choose a mode: product_search (80-row SERP), category (marketing hub only), product, or supplier
  4. Enter a query (e.g. hydraulic cylinder, ball valve) — or a categoryUrl / categoryId, productUrls, or supplierUrls
  5. Set lang (default enus) and surface www (m. mobile is 未验证)
  6. Leave enrichDetails on (default true) so the worker follows company-profile. Set maxResults / maxPages. Turn enrich off only if you want thin identity rows without outreach.
  7. Click Start and download the Dataset as JSON, CSV, Excel, or JSONL

Start with maxResults: 5–15 to verify the query, then scale up. For phones and emails, use product_search / product / supplier with enrich on — not mode=category alone.


How much does it cost to scrape GlobalSources?

This Actor uses pay-per-event pricing. You are charged for:

EventPrice
Actor Start (apify-actor-start)$0.005 per start
Result (apify-default-dataset-item)$3.00 / 1,000 results ($0.003 each on FREE/BRONZE)

Platform usage costs are included — you do not pay separate Apify compute/proxy usage for this Actor on top of the event prices above (User pays platform usage costs = No).

Volume discount tiers (per result)

Tier$/1,000per result
FREE*$3.00$0.003
BRONZE$3.00$0.003
SILVER$2.60$0.0026
GOLD$2.20$0.0022
PLATINUM$2.00$0.002
DIAMOND$1.60$0.0016

*FREE matches BRONZE for this Actor.

Example cost estimates (FREE/BRONZE)

Results collectedApprox. event cost*
100~$0.31
1,000~$3.01
10,000~$30.01

*Assumes one Actor start at default memory billing for start events, plus $0.003 per Dataset item. Exact start billing can scale with allocated memory (one start event per GB, minimum one).

Free plan limits

On a free Apify plan, this Actor enforces developer limits of 10 runs and 200 results per run. Upgrade to a paid Apify plan for unlimited runs (event prices still apply). These limits are set by the Actor developer, not by Apify.


Input examples

{
"mode": "product_search",
"query": "bluetooth speaker",
"lang": "enus",
"surface": "www",
"maxResults": 20,
"maxPages": 2
}

Category hub (not the 80-row SERP)

/category/1-…_{id}/ returns L2 taxonomy plus a handful of topProd cards. It is not searchList. Prefer product_search for supplier lists.

{
"mode": "category",
"categoryUrl": "https://www.globalsources.com/category/1-industrial-supplies-for-sale-price_48659/",
"lang": "enus",
"maxResults": 10
}

Product detail (PDP)

PDP often has street but empty contactUsInfo.telephone. Keep enrichDetails true (default) so the worker still opens company-profile.

{
"mode": "product",
"productUrls": [
"https://www.globalsources.com/Hydraulic-cylinder/Single-Acting-Hydraulic-cylinders-1226081829p.htm"
],
"maxResults": 5
}

Supplier homepage (follows company-profile when enrich is on)

{
"mode": "supplier",
"supplierUrls": [
"https://easy-buy.manufacturer.globalsources.com/homepage_6008855290824.htm"
],
"maxResults": 3
}

Multiple keywords

{
"mode": "product_search",
"searchQueries": ["usb hub", "hdmi cable", "power bank"],
"lang": "enus",
"maxResults": 40
}

Coverage matrix

DimensionCoverage
Surfaceswww.globalsources.com · {short}.manufacturer.globalsources.com · m. 未验证
Modesproduct_search · category (hub, not SERP) · product (PDP) · supplier
Pagination/manufacturers/{keyword}.html?pageNum=N (pageSize ~80; not ?page=)
Category/category/1-{slug}_{id}/ marketing hub (CategoryData + few topProd; no searchList)
Languageslang query (default enus; other codes accepted when provided)
EnrichenrichDetails default true → PDP then company-profile_{homepageId}.htm (Visit Us / Hotline). false drops most outreach

Output example

Catalog identity on a manufacturer search card (phones/emails still 本站无 until enrich):

{
"type": "product",
"productId": "1226081829",
"title": "Hydraulic cylinders Single-Acting Tie-Rod Welded Rotary",
"url": "https://www.globalsources.com/Hydraulic-cylinder/Single-Acting-Hydraulic-cylinders-1226081829p.htm",
"supplierShortName": "easy-buy",
"lang": "enus",
"source": "nuxt_searchList"
}

Lead fields on the same supplier after mode=supplier + enrichDetails (source=nuxt_company_profile; homepageId 6008855290824org.id 2008855290824; supplierName omitted):

{
"type": "supplier",
"source": "nuxt_company_profile",
"title": "Xiamen Yi Easy Buy Import and Export Trade Group Co.,Ltd",
"companyName": "Xiamen Yi Easy Buy Import and Export Trade Group Co.,Ltd",
"supplierShortName": "easy-buy",
"homepageId": "6008855290824",
"supplierId": "2008855290824",
"companyProfileUrl": "https://easy-buy.manufacturer.globalsources.com/company-profile_6008855290824.htm",
"url": "https://easy-buy.manufacturer.globalsources.com/company-profile_6008855290824.htm?lang=enus",
"phones": [
{ "value": "(86-595) 2854 754", "type": "landline" },
{ "value": "86 - 15880782091", "type": "mobile" }
],
"emails": [
{ "value": "cindy@xiameneasybuygroup.com", "type": "work" }
],
"address": {
"street": "107 Houliao, Xiang'an District, Xiamen, Fujian, China",
"unit": "107",
"locality": null,
"region": null,
"postalCode": null,
"country": null,
"full": "107 Houliao, Xiang'an District, Xiamen, Fujian, China | Room 409, Office Building, No.258, Keji Road, Fengze District, Quanzhou City, Fujian Province | 107 Houliao, Xiang'an District"
},
"geo": { "lat": null, "lng": null },
"person": { "name": "Mr.chen, Weiping", "role": "Manager" },
"org": {
"name": "Xiamen Yi Easy Buy Import and Export Trade Group Co.,Ltd",
"id": "2008855290824"
},
"web": {
"website": "https://easy-buy.manufacturer.globalsources.com/company-profile_6008855290824.htm",
"socials": []
},
"leadSource": "entity",
"leadReveal": "visible",
"leadAbsences": {},
"enriched": true,
"enrichedProfile": true
}

The same profile’s Visit Us module also lists Cindy (Manager) next to that email. person here is the Management slot (Mr.chen, Weiping), not Cindy. geo is null (本站无 / 未验证). web.socials was empty (未验证).


FAQ

Is this an official Global Sources tool?

No. It is an unofficial third-party Actor and is not affiliated with Global Sources.

Do I need to log in or click Inquire?

No. The Actor only uses publicly reachable listing/detail pages. It does not automate Inquire Now, Chat, Register, or payment flows. There is no Show phone button to click.

Does this Actor return supplier phones and emails?

Often yes after enrich, from company-profile Visit Us / Hotline (e.g. easy-buy landline (86-595) 2854 754, mobile 86 - 15880782091, email cindy@xiameneasybuygroup.com). Not from homepage JSON-LD (no telephone/email there). Not from list cards until enrich. Not from typical PDP (contactUsInfo.telephone is often ""). Some suppliers leave those slots empty (huangbo / xianghe class) — that is 本站无, not a login wall. enrichDetails: false drops most outreach.

Why is pagination pageNum instead of page?

GlobalSources manufacturer search uses pageNum in the URL. Using ?page= does not advance the Nuxt searchList. /category/1-… is not this SERP — it is a marketing hub without searchList.

What happens on a free Apify plan?

You get up to 10 runs of this Actor and 200 results per run (limits set by the Actor developer). Paying Apify users are not capped by those run quotas; PPE event prices still apply.

Can I use this from the API / Standby?

Yes. Use normal Actor runs for production Dataset output. Standby exposes lightweight /health, /input-example, /openapi.json, and optional preview routes — see the Standby OpenAPI schema packaged with the Actor.


Tips for better runs

  • Prefer specific sourcing keywords (hydraulic cylinder, ball valve, solar inverter) over single vague words
  • Keep maxResults modest first; manufacturer pages return up to ~80 items per pageNum
  • enrichDetails defaults true — needed for company-profile phones/emails/门牌. Set false only when you want faster identity-only rows
  • For suppliers, prefer live homepage_*.htm URLs; the worker derives company-profile_{homepageId}.htm (do not mix homepageId 6… with orgId 2…)
  • Do not treat category hub URLs as a 80-row product list
  • Do not reuse README sample inputs for acceptance tests — use fresh random-valid queries

Integrations

  • Apify API / client — start runs and pull Dataset items programmatically
  • Schedules — re-run keyword monitors daily/weekly
  • Webhooks — notify your stack when a run finishes
  • Make / Zapier / n8n — push rows to Sheets, CRM, Slack, or warehouses

Standby (Live view)

When Standby is enabled:

  • GET / / GET /health — Actor readiness (no scrape)
  • GET /input-example — safe low-cost example input
  • GET /openapi.json — OpenAPI document
  • POST /search — optional Live-view preview (capped maxResults); persist production results with a normal Actor run

Full jobs should be launched as normal Apify Actor runs so Dataset rows plus INPUT_ECHO, RUN_SUMMARY, and ERROR_SUMMARY are persisted.


Runtime

SettingValue
Default memory1024 MB
Timeout default3600 s
StandbyEnabled (lightweight Live-view)
Free plan caps10 runs / 200 results per run

All 77 public Actors from [lentic_clockss]. Click a name to open the Store detail page.

Jobs & Freelance

Real Estate

E-commerce

Travel & Stays

Social & Content

Ads Intelligence

Local & Maps

General Tools

→ Browse the full profile: apify.com/lentic_clockss