52wmb API52wmb.com ↗
Search 52wmb.com's global trade directory by product keyword, company name, or HS code. Retrieve company trade profiles with shipment counts, HS codes, and monthly trends.
What is the 52wmb API?
The 52wmb.com API provides two endpoints for querying a global buyer and supplier trade directory. The search_companies endpoint returns up to 30 company summaries per search — filterable by country and company type — while get_company delivers a full trade profile including top-5 HS codes, top-5 traded products, shipment counts, activity scores, and a trailing 12-month monthly trend.
curl -X GET 'https://api.parse.bot/scraper/bfc54783-0722-4351-923f-9342445bcc36/search_companies?query=coffee&search_type=product&company_type=buyer' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace 52wmb-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: 52wmb Trade Company SDK — search suppliers, drill into a profile."""
from parse_apis.api_52wmb_com_api import (
TradeCompany, SearchType, CompanyType, Sort, CompanyNotFound,
)
client = TradeCompany()
# Search for coffee buyers, sorted by shipment count.
for summary in client.company_summaries.search(
query="coffee",
search_type=SearchType.PRODUCT,
company_type=CompanyType.BUYER,
sort=Sort.BILL_COUNT,
limit=5,
):
print(summary.name, summary.country, summary.trade_count)
# Drill down: take the first result and fetch its full profile.
hit = client.company_summaries.search(
query="nestle", search_type=SearchType.COMPANY_NAME, limit=1,
).first()
if hit is not None:
# Navigate from summary to full detail via typed instance method.
company = hit.details()
print(company.name, company.country_en, company.trade_count)
# Inspect top products and HS codes.
for prod in company.top_products:
print(f" product: {prod.product} share: {prod.share_percent}%")
for hs in company.top_hs_codes:
print(f" hs_code: {hs.hs_code} shipments: {hs.trade_count}")
# Monthly trade trend.
trend = company.monthly_trends
print(f"trend period: {trend.start_month} to {trend.end_month}")
for m in trend.months[:3]:
print(f" {m.month}: {m.trade_count} shipments, weight={m.weight}")
# Point lookup by known id (using values discovered from the search above).
if hit is not None:
try:
detail = client.companies.get(
company_id=hit.company_id, company_type=hit.company_type,
)
print(detail.name, detail.star_rating, detail.activity_score)
except CompanyNotFound:
print("company no longer available")
print("exercised: company_summaries.search / details / companies.get")
Searches the 52wmb company directory and returns the first result page: up to 30 company summaries (one row per company) plus the site's total match count. The site only exposes the first 30 results without an account, so there is no further pagination; narrow the search with country or a more specific query instead. total_matches is the site's count and is capped at 10001 (total_is_capped=true means 'more than 10000'). company_type selects the buyer or supplier search channel; each returned row carries its own company_type (a supplier-channel search can still surface buyer records) and that row value is the one to pass to get_company. A query with no matches returns an empty companies list with total_matches 0. One upstream request per call.
| Param | Type | Description |
|---|---|---|
| sort | string | Result ordering. |
| queryrequired | string | Search text: a product keyword (e.g. coffee), a company name fragment, or a numeric HS code, depending on search_type. |
| country | string | Company country filter as the English country name in lower case (e.g. germany, united states). Omitted = all countries. An unrecognized name yields an empty result. |
| search_type | string | Which field the query is matched against. |
| company_type | string | Search channel: buyer (importers) or supplier (exporters). |
{
"type": "object",
"fields": {
"sort": "ordering applied",
"query": "echo of the search text",
"country": "country filter applied, or null",
"returned": "integer number of rows in companies (max 30)",
"companies": "array of company summaries: company_id (string), company_type (buyer|supplier), name, country, trade_count (integer shipments), activity_score (integer), star_rating (0-5 in 0.5 steps), has_contact (boolean), latest_trade_description (string or null), data_updated_to (YYYY-MM-DD)",
"search_type": "echo of search_type",
"company_type": "search channel used",
"total_matches": "integer site-reported match count (capped at 10001)",
"total_is_capped": "boolean, true when total_matches hit the site cap"
},
"sample": {
"data": {
"sort": "default",
"query": "coffee",
"country": null,
"returned": 30,
"companies": [
{
"name": "keurig green mountain",
"country": "united states",
"company_id": "24439569",
"has_contact": false,
"star_rating": 3.5,
"trade_count": 84125,
"company_type": "buyer",
"activity_score": 77,
"data_updated_to": "2026-09-13",
"latest_trade_description": "COFFEE PERU ARABICA GREEN COFFEE GRADE 1"
}
],
"search_type": "product",
"company_type": "buyer",
"total_matches": 10001,
"total_is_capped": true
},
"status": "success"
}
}About the 52wmb API
Search the Directory
The search_companies endpoint accepts a query string matched against product keywords, company name fragments, or numeric HS codes, controlled by the search_type parameter. You can narrow results with a country filter (plain English country name, lowercase) and a company_type filter to separate importers (buyer) from exporters (supplier). Each row in the companies array includes company_id, name, country, trade_count, and company_type. The total_matches field reports the site's aggregate match count, capped at 10001 when results exceed that threshold (total_is_capped: true).
Company Trade Profiles
Pass a company_id from search results to get_company to retrieve that company's full public profile. The response includes identity fields (name, name_cn, address, country_en, country_cn), aggregate trade metrics (trade_count, star_rating, has_contact), and structured trade data: the top-5 HS codes and top-5 product categories each with shipment counts and share percentages. A 12-month trailing trend array provides month-by-month shipment count, quantity, and weight data.
Pagination and Coverage Notes
The search_companies endpoint returns a maximum of 30 results per call and does not support offset-based pagination. To cover more of the result set, narrow queries using the country, company_type, or search_type parameters rather than trying to page through. Contact details (has_contact: true) are gated behind site membership and are not exposed in API responses.
The 52wmb API is a managed, monitored endpoint for 52wmb.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when 52wmb.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official 52wmb.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Identify importers for a specific product by searching with
company_type=buyerand a keyword or HS code - Build a supplier shortlist for a given country using the
countryfilter onsearch_companies - Track a specific company's trade activity over 12 months using the monthly trend data from
get_company - Classify trading partners by their top-5 HS codes and product categories returned in
get_company - Assess a company's trade volume and star rating before initiating outreach
- Cross-reference exporter activity by querying the same HS code with
company_type=supplieracross multiple countries
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does 52wmb.com offer an official developer API?+
What does `get_company` return about a company's trade activity?+
Can I retrieve more than 30 results from `search_companies`?+
total_matches field shows how many records match on the site (capped at 10001). To surface different companies, narrow the search using country, company_type, or a more specific query.Does the API expose contact details for companies?+
has_contact boolean in get_company indicates whether the site holds contact information for a company, but the contact data itself is members-only on 52wmb.com and is not included in the API response. You can fork this API on Parse and revise it to add an endpoint if that data becomes accessible.Can I retrieve full shipment-level records or individual trade transactions?+
search_companies and aggregated trade profiles from get_company, including monthly trends and top HS codes, but not individual shipment records. You can fork this API on Parse and revise it to add a shipment-detail endpoint.