# TradeKorea Scraper & API - Korean Suppliers, FOB Prices & MOQ (`rel8ble/tradekorea-scraper`) Actor

TradeKorea scraper and API (KITA): Korea B2B exporters and products by keyword. FOB price, MOQ, HS code, specs, payment terms, lead time, business type, year established, employees, address, export markets. Supplier profiles included. $1.50 per 1,000, lowest on 7 Nov 2026, no start fee.

- **URL**: https://apify.com/rel8ble/tradekorea-scraper.md
- **Developed by:** [Giovanni Rich](https://apify.com/rel8ble) (community)
- **Categories:** Lead generation, E-commerce
- **Security:** Limited permissions
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$1.50 / 1,000 results

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?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## TradeKorea Scraper & API - Korean Suppliers, FOB Prices & MOQ

**TradeKorea scraper** for importers, distributors, sourcing agents and B2B lead-gen teams: enter an English product keyword such as `ramen`, `cosmetics`, `led light` or `car parts` and get Korean export products and the companies behind them from **tradeKorea.com**, the B2B marketplace run by the **Korea International Trade Association (KITA)**. Each row is one product with its **FOB price, MOQ, HS code, specs, payment terms and lead time**, plus the **Korean exporter's profile: business type, year established, employees, address, membership grade, export markets and main products**. Use it as a **Korean supplier database**, a **K-beauty / K-food sourcing list**, or an unofficial **tradeKorea API** from your own code, Make, Zapier, n8n or an AI agent.

It reads public pages over plain HTTP, with **no browser and no login**. **$1.50 per 1,000 results**, product pages and supplier profiles included, no start fee: the lowest of the 3 tradeKorea actors we found (7 Nov 2026). The default run (10 products) costs $0.015 in results.

### What you get

- **Product**: name, product URL, images, summary, description, brand, keywords, tradeKorea categories and category path, **HS code**, size, weight, stock, country of origin, OEM / ODM / OBM options, other specs (ingredients, material, certification, ...).
- **Trade terms**: FOB price as text and as numbers (`priceMin` / `priceMax`, `currency`, `priceUnit`), **MOQ** as a number with its unit, negotiable flags, payment terms (L/C, T/T, ...), transport modes, lead time and shipping time.
- **Supplier (Korean exporter)**: company name, supplier ID and profile URL, logo, **business type** (Manufacturer, Trading Company, Distributor, ...), **year established**, **membership grade** (Biz / Pro / VIP), years as a tradeKorea member, verification marks (e.g. TRADE DEAL), **main export markets**.
- **Company profile** (read once per supplier): **address**, employee range, product categories, main products, company introduction. Person names (company presidents) are not collected.

### Sample output

Real rows from a 30-product cloud run (keyword `ramen`, 2026-10-29):

| Product | FOB price | MOQ | Supplier | Business type | Est. | Employees |
|---|---|---|---|---|---|---|
| Samyang Buldak Ramen | $ 32 ~ 38 / Carton | 80 Cartons | NAVA GLOBAL | Trading Company | 2025 | - |
| Samyang Hot Chicken Ramen Big Bowl 4 fla | $ 32 ~ 38 / Carton | 50 Cartons | Kimsprice Co.,Ltd | Trading Company | 2002 | 1-50 |
| Ramen | $ 0.63 / Piece | 23,040 Pieces | AFES Co Ltd | Manufacturer | 2003 | 1-50 |
| THE HAN KITCHEN RAMYUN(INSTANT NOODLES,  | $ 18.5 / Carton | 90 Cartons | UNIONE CO.,LTD. | Trading Company | 2016 | 1-50 |
| CRECHEF Instant Food Cooker (Ramen Cooke | $ 520 / Piece | 1 Piece | CRECHEF CO.,LTD. | Manufacturer | 2012 | 1-50 |
| Beef Bone (Gomtang) Ramen Soup | $ 70 / Box | 10 Boxes | MS industry Co.,Ltd. | Manufacturer | 1994 | 1-50 |
| Dae Jang Geum Instant Noodle Ramen | $ 0.79 / Piece | 140,000 Pieces | UNIKO CO., LTD | Manufacturer | 1996 | 51-100 |
| Black Bean (Jjajang) Ramen Soup | $ 55 / Bag | 10 Bags | MS industry Co.,Ltd. | Manufacturer | 1994 | 1-50 |

### Use cases

- **Find Korean manufacturers** for a product line (K-beauty, food, auto parts, electronics, machinery) and keep only `Manufacturer` with 10+ years in business.
- **Build a Korean exporter lead list**: one row per supplier with business type, year, employees, address and export markets.
- **Price and MOQ benchmarking** across Korean suppliers before you ask for quotes.
- **HS code research**: see which tariff codes Korean exporters file a product under.
- **Feed an AI sourcing agent** with structured supplier data through the Apify MCP server.

### Pricing

**$1.50 per 1,000 results** (pay per result), with **product pages and supplier profiles included** at no extra cost. No start fee. Filtered rows, duplicates and failed requests are never charged. Apify platform usage and proxies are included. Other tradeKorea actors on the Store (7 Nov 2026): getascraper $2.80 per 1,000 and scrapingmonkey $3.00 per 1,000 + $0.00005 per run, so this one is about half the price.

| You scrape | You pay |
|---|---|
| 10 products (default run) | $0.015 |
| 100 products | $0.15 |
| 1,000 products | $1.50 |
| 10,000 products | $15.00 |

The Apify free plan's $5 monthly credit covers about 3,300 results.

### FAQ

**Why is the price empty on some rows?**
Many Korean exporters list the FOB price as "Negotiable". Those rows keep `priceText: null` and `priceNegotiable: true`; turn on `onlyWithPrice` to skip them.

**Does it return phone numbers or e-mails?**
No. tradeKorea routes buyer contact through its inquiry form and does not publish supplier contacts on public pages. You get the supplier profile URL, address and company details instead.

**Is there an official tradeKorea API?**
We found no public self-serve API for tradeKorea product and supplier search; buyers contact exporters through its inquiry form. This actor reads the same public pages and is not affiliated with KITA.

**What does a typical run cost?**
A 200-exporter K-food lead list (`uniqueSuppliers: true`, `maxResultsPerSearch: 200`) costs $0.30. A weekly check of 5 keywords x 100 products is about $3.25 a month.

**Can I search in Korean?**
No. tradeKorea's English site only accepts English keywords; other input is reported in the run summary and skipped.

**Why can a run take a few minutes?**
tradeKorea drops connections from IPs that send many requests. The actor keeps concurrency moderate and moves to a fresh proxy IP when a connection hangs. In cloud tests on 29 Oct 2026, 30- and 50-product runs took 58 to 318 seconds with 0 failed requests, depending on how throttled the proxy IPs were. The default 10-product input took 18.2 seconds on 31 Oct 2026 and stops collecting after 40 seconds.

**Is it legal?**
It collects only public business information (products and company profiles) shown to any visitor without a login. Check that your use complies with tradeKorea's terms and the laws that apply to you.

### Example inputs for common jobs

Korean cosmetics manufacturers, one row per company:

```json
{ "searchTerms": ["cosmetics"], "maxResultsPerSearch": 100, "uniqueSuppliers": true, "businessTypes": ["Manufacturer"], "minYearsInBusiness": 10 }
```

Priced instant-noodle offers under $1 per piece:

```json
{ "searchTerms": ["instant noodle"], "onlyWithPrice": true, "maxPrice": 1, "maxResultsPerSearch": 50 }
```

A tradeKorea category URL, VIP sellers only:

```json
{ "searchTerms": ["https://www.tradekorea.com/total_search/search.do?search_category=12%5e1214%5e1214139&search_categoryname=Noodles+%26+Pastas"], "membership": ["VIP"] }
```

Fastest listing-only export (name, image, HS code, supplier name, member years):

```json
{ "searchTerms": ["led light", "car parts"], "maxResultsPerSearch": 0, "scrapeDetails": false }
```

### How to use

1. Open the actor and type one or more English product keywords (tradeKorea only accepts English), or paste tradeKorea search, category or product URLs.
2. Set **Max results per search** (default 10) and any filters.
3. Click **Start**. Download the dataset as JSON, CSV, Excel or HTML, or read it through the API.
4. The `RUN_SUMMARY` record in the key-value store lists per-search counts, the total tradeKorea has for each keyword, ignored inputs and stop reasons.

### Input

| Field | What it does |
|---|---|
| `searchTerms` | English keywords or tradeKorea search / category / product URLs. Default `["ramen"]`. |
| `maxResultsPerSearch` | Rows per keyword / URL. Default 10; 0 = all (60 per page). |
| `scrapeDetails` | Read product pages (price, MOQ, specs, trade terms, supplier block). Default true. |
| `scrapeCompanyProfiles` | Read each supplier profile once (address, employees, main products). Default true. |
| `uniqueSuppliers` | One row per supplier. |
| `onlyWithPrice`, `maxPrice`, `maxMoq` | Price / MOQ filters (USD FOB). |
| `minYearsInBusiness`, `minMemberYears` | Supplier age filters. |
| `membership`, `businessTypes`, `onlyWithCertification` | Supplier type filters. |
| `maxConcurrency`, `maxRequestRetries`, `proxyConfiguration` | Advanced. Default Apify datacenter proxy, concurrency 6. |

Filtered rows, duplicates and failed requests are never charged.

### Output example

One full row from a 29 Oct 2026 cloud run (long texts shortened here):

```json
{
    "searchTerm": "ramen",
    "position": 1,
    "productId": "855402",
    "productName": "Samyang Buldak Ramen",
    "productUrl": "https://www.tradekorea.com/product/detail/P855402/Samyang-Buldak-Ramen.html",
    "image": "https://web.tradekorea.com/product/665/2374665/Samyang_Buldak_Ramen_2.jpg",
    "hsCode": "1902",
    "supplierName": "NAVA GLOBAL",
    "supplierCountry": "South Korea",
    "memberYears": 1,
    "priceText": "$ 32 ~ 38 / Carton",
    "currency": "USD",
    "priceMin": 32,
    "priceMax": 38,
    "priceUnit": "Carton",
    "priceNegotiable": true,
    "moq": 80,
    "moqUnit": "Cartons",
    "moqText": "80 Cartons",
    "moqNegotiable": true,
    "summary": "Samyang Buldak",
    "brand": null,
    "keywords": [
        "samyang cup ramen",
        "samyang bulkdak"
    ],
    "categories": [
        "Noodles & Pastas"
    ],
    "categoryPath": [
        "Food & Beverage",
        "Foods",
        "Noodles & Pastas"
    ],
    "leadTime": null,
    "shippingTime": null,
    "paymentTerms": [
        "T/T"
    ],
    "transportation": [
        "Ocean Shipping"
    ],
    "size": "150 * 150 * 160 mm",
    "weight": "170 g",
    "stock": "330,000 Pieces",
    "countryOfOrigin": "South Korea",
    "productionMethods": [
        "OEM"
    ],
    "specifications": {},
    "images": [
        "https://web.tradekorea.com/product/665/2374665/Samyang_Buldak_Ramen_2.jpg",
        "https://web.tradekorea.com/product/666/2374666/Samyang_Buldak_Ramen_2.jpg"
    ],
    "description": "Key Features • Designed for quick and easy preparation, it brings the popular experience of authentic Korean street food directly to your home • The versatile b...",
    "supplierId": "257508",
    "supplierUrl": "https://www.tradekorea.com/companies/detail.do?businessno=257508",
    "supplierLogo": null,
    "yearEstablished": 2025,
    "membership": "PRO",
    "businessType": "Trading Company",
    "certifications": [],
    "mainExportMarkets": [
        "Guatemala"
    ],
    "detailScraped": true,
    "companyAddress": "nava, Yangju-si, Gyeonggi-do, Korea",
    "companyProductCategories": [
        "Candy",
        "Confectionery",
        "Instant Noodles",
        "Other Foods"
    ],
    "employees": null,
    "companyIntroduction": "NAVA GLOBAL: Connecting Excellent Korean Products to the Global MarketNAVA GLOBAL is a specialized export trading company that supplies high...",
    "mainProducts": [
        "Samyang Buldak Ramen",
        "Haitai beverage , Lotte beverage"
    ],
    "companyProfileScraped": true,
    "sourceUrl": "https://www.tradekorea.com/total_search/search.do?search_query=ramen&search_c_collection=product&search_viewCount=60",
    "scrapedAt": "2026-10-29T17:51:16.467Z"
}
```

### Integrations

Run it on an Apify schedule, through the Apify REST API, the JavaScript / Python clients, Make, Zapier, n8n, Google Sheets, or from AI agents via the Apify MCP server. Join runs on `productId` to track price changes, or on `supplierId` to keep a Korean supplier CRM up to date.

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

# Actor input Schema

## `searchTerms` (type: `array`):

Provide at least one. English product keywords, e.g. "cosmetics", "ramen", "led light", "car parts", or tradeKorea URLs: a search (https://www.tradekorea.com/total_search/search.do?search_query=cosmetics), a category (https://www.tradekorea.com/total_search/search.do?search_category=12%5e1214%5e1214139\&search_categoryname=Noodles+%26+Pastas) or one product (https://www.tradekorea.com/product/detail/P857249/OTTOGI-RAMEN.html). Default \["ramen"] (demo).

## `maxResultsPerSearch` (type: `integer`):

Optional. Products saved per keyword / URL, integer >= 0. Default 10; 0 = everything tradeKorea returns (60 per page). You pay per row.

## `scrapeDetails` (type: `boolean`):

Default true. Reads each product page for FOB price, MOQ, brand, specs, HS code, payment terms, lead time, images, description and the supplier block (year established, membership, business type, export markets). false = fastest listing-only export (name, image, HS code, supplier name, member years).

## `scrapeCompanyProfiles` (type: `boolean`):

Default true. Reads each supplier's profile once (cached per run) for address, employees, product categories, main products and the company introduction. Needs scrapeDetails.

## `uniqueSuppliers` (type: `boolean`):

Optional. true = keep only the first product of each supplier (a Korean exporter lead list). Default false = one row per product.

## `onlyWithPrice` (type: `boolean`):

Optional. Skip products whose price is only "Negotiable". Default false.

## `maxPrice` (type: `number`):

Optional. Skip products whose lowest listed price is above this. Products without a listed price are kept unless onlyWithPrice is on.

## `maxMoq` (type: `integer`):

Optional. Skip products whose minimum order quantity is above this number. Products with a negotiable MOQ are kept.

## `minYearsInBusiness` (type: `integer`):

Optional. Keep only suppliers established at least this many years ago (from the year established). Default 0.

## `minMemberYears` (type: `integer`):

Optional. Keep only suppliers with at least this many years of tradeKorea membership. Default 0.

## `membership` (type: `array`):

Optional. Keep only these seller grades, e.g. \["VIP", "Pro"]. Empty = all.

## `businessTypes` (type: `array`):

Optional. Keep only suppliers whose business type contains one of these words, e.g. \["Manufacturer"] or \["Trading Company", "Distributor"]. Empty = all.

## `onlyWithCertification` (type: `boolean`):

Optional. Keep only suppliers showing a tradeKorea verification mark (e.g. TRADE DEAL). Default false.

## `maxConcurrency` (type: `integer`):

Optional, advanced. Parallel requests, 1-20. Default 6 (tradeKorea starts dropping connections above about 8).

## `maxRequestRetries` (type: `integer`):

Optional, advanced. Retries per failed request (each on a new proxy session), 0-20. Default 5.

## `proxyConfiguration` (type: `object`):

Optional, advanced. Default Apify Proxy (datacenter), which works for tradeKorea.

## Actor input object example

```json
{
  "searchTerms": [
    "ramen"
  ],
  "maxResultsPerSearch": 10,
  "scrapeDetails": true,
  "scrapeCompanyProfiles": true,
  "uniqueSuppliers": false,
  "onlyWithPrice": false,
  "minYearsInBusiness": 0,
  "minMemberYears": 0,
  "membership": [],
  "businessTypes": [],
  "onlyWithCertification": false,
  "maxConcurrency": 6,
  "maxRequestRetries": 5,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `results` (type: `string`):

One row per product: FOB price, MOQ, HS code, specs, trade terms and the Korean supplier's company profile.

## `summary` (type: `string`):

Per-search counts, pages read, ignored inputs and stop reasons.

# 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 = {
    "searchTerms": [
        "ramen"
    ],
    "maxResultsPerSearch": 10,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("rel8ble/tradekorea-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 = {
    "searchTerms": ["ramen"],
    "maxResultsPerSearch": 10,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("rel8ble/tradekorea-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 '{
  "searchTerms": [
    "ramen"
  ],
  "maxResultsPerSearch": 10,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call rel8ble/tradekorea-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,rel8ble/tradekorea-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/tCkMNpubA10QBpMmB/builds/ry3DtGM0ULgZt1ZSc/openapi.json
