# buyKOREA Scraper & API - Korean Suppliers, Products & Prices (`rel8ble/buykorea-scraper`) Actor

buyKOREA scraper and API (KOTRA): Korean B2B products and supplier leads by keyword. USD price tiers, MOQ, HS code, specs, business type, website, address, employees, revenue, year founded, export markets. Supplier profiles included. $1.50 per 1,000, no start fee. Only buyKOREA actor (7 Nov 2026).

- **URL**: https://apify.com/rel8ble/buykorea-scraper.md
- **Developed by:** [Giovanni Rich](https://apify.com/rel8ble) (community)
- **Categories:** Lead generation, E-commerce
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 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

## buyKOREA Scraper & API - Korean Suppliers, Products & Prices

**buyKOREA scraper** for importers, sourcing agents, distributors and B2B lead-gen teams: enter a product keyword such as `cosmetics`, `led lighting` or `auto parts` and get Korean B2B products and their suppliers from **buyKOREA.org**, the official B2B marketplace run by **KOTRA** (Korea Trade-Investment Promotion Agency), as clean JSON, CSV or Excel. Each row is one product with the **USD price tiers, MOQ, HS code, category and specs**, plus the supplier's profile: **business type, website, address, employees, annual revenue band, year established, main export markets and description**. Switch to **companies** mode for a pure **Korean supplier lead list**. Use it as a **Korean manufacturer directory scraper**, a **K-beauty supplier finder**, or an unofficial **buyKOREA API** from your own code, Make, Zapier or n8n.

It calls the same search API buyKOREA's own pages use, over plain HTTP, with **no browser and no login**. 50 products with supplier profiles took 20.4 seconds in a cloud run on 29 Oct 2026 and 12.4 seconds in a local run on 4 Nov 2026. **$1.50 per 1,000 results**, supplier profiles included, no start fee; the default 50-row run costs $0.075.

### What you get

- **Product**: name (English, plus Korean when different), model number, product URL, image, product class (Commercial / Materials / Services), category with code, **HS tariff code**, supplier keywords, summary, specification text.
- **Wholesale terms**: **USD price tiers** (`[{ maxQuantity, price, unit }]`), `priceMin` / `priceMax` as numbers, "price on request" flag, **MOQ** with unit, Halal flag, online-payment flag, views / inquiries / orders on buyKOREA, listing dates.
- **Supplier**: company name (English and Korean), buyKOREA storefront, **website**, **business type** (Manufacturer, Distributor, Trading Company...), **address**, country, **employees**, **annual revenue band (USD)**, **year established**, **main export markets**, main product categories, company description, logo.
- Owner / CEO names and seller staff logins are **not** collected.

### Sample output

Real rows from the default-input cloud run on 29 Oct 2026 (`cosmetics`, 50 products, 16 suppliers):

| Product | Price (USD) | MOQ | HS code | Supplier | Business type | Website | Founded |
|---|---|---|---|---|---|---|---|
| Malgledam Centella Asiatica Extract 1L | 8.34-10.01 | 50 Pieces | 330499 | THEAREUM INC | Manufacturer\&Distributor | theareum.co.kr | 2008 |
| Elliegrace Ellie Solution Mask Pack (Soothing & Wrinkle Care) 5sheets | on request | 10000 Boxes | 330420 | SCGLORY Co., Ltd. | Distributor | scglory.com | 2022 |
| FFE LES SENS DES MAINS Perfumed Hand Cream – ÉCLAT ROSE 40 mL | on request | 100 Pieces | 330499 | Korea Total Solution Co.,LTD | Distributor | ffebeauty.com | 2015 |
| WEGLAN k-ginseng repair glow ampoule | on request | 180 Pieces | 330499 | KIM HWASACO.,LTD. | Manufacturer\&Distributor | weglan.co.kr | 2024 |
| UAVO Lava Water Hydra Soothing Toner | on request | 66 Pieces | 330499 | CNL Corporation | Manufacturer\&Distributor | - | 2026 |

Fill rates on those 50 rows: HS code, MOQ, category, supplier address, business type and year established 100%, supplier website 94%, specifications 70%, employees 30%, revenue band 26%, published price 20% (most Korean suppliers quote on request).

### Use cases

- **Sourcing from Korea**: K-beauty, cosmetics raw materials, food (kimchi, ginseng, ramen), auto parts, machinery, electronics, medical devices, textiles. Compare MOQ and price tiers across suppliers.
- **Lead generation**: build lists of Korean manufacturers and exporters with website, size, founding year and export markets, then enrich or contact them through their own sites.
- **Trade and market research**: HS codes per product, which categories Korean exporters push, supplier size and age distribution.
- **Distributors and agencies**: find brands to represent in your market (the `mainMarkets` field shows where they already sell).

### Pricing

**$1.50 per 1,000 results** (pay per result), no start fee. Failed requests and filtered rows are never charged. The default 50-row run costs $0.075. Apify platform usage and proxies are included in the price; set a maximum cost per run in Apify to cap any run.

| You scrape | You pay |
|---|---|
| 20 products (prefilled run) | $0.03 |
| 50 products (default run) | $0.075 |
| 1,000 products | $1.50 |
| 10,000 products | $15.00 |

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

This is the only buyKOREA actor we found on the Store (search of 7 Nov 2026). The tradeKorea scrapers, the nearest Korean B2B alternatives, charge $2.80 (getascraper) and $3.00 + $0.00005 per run (scrapingmonkey) per 1,000; our own TradeKorea and GobizKOREA scrapers are $1.50.

### FAQ

**Is this the official buyKOREA API?** No. We found no public self-serve API for buyKOREA product and supplier search. This is an independent tool that reads the public buyKOREA website the same way its own search page does. It is not affiliated with KOTRA.

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

**Why do most products have no price?** Most Korean suppliers on buyKOREA quote on request. `priceOnRequest: true` marks them; use `onlyWithPrice` to keep priced products only.

**Are phone numbers and e-mails included?** buyKOREA shows direct contacts only to signed-in buyers, so they are not in structured fields. Many suppliers list a website, and some put contact details in their public company description.

**How many results can I get?** buyKOREA serves up to 10,000 results per keyword. Use several narrower keywords for more.

**Company search returns unrelated companies.** buyKOREA's company search matches any of a supplier's products loosely. For tight matches use products mode with `uniqueSuppliers: true`.

**Which proxy should I use?** The default Apify datacenter proxy works. No residential proxy is needed.

### Example inputs for common jobs

Supplier lead list (one row per company, only established firms with a website):

```json
{
    "searchTerms": ["cosmetics", "skin care"],
    "searchType": "companies",
    "maxResultsPerSearch": 200,
    "onlyWithWebsite": true,
    "minYearsInBusiness": 5
}
```

Products with public prices and small MOQs:

```json
{
    "searchTerms": ["led lighting"],
    "productType": "commercial",
    "onlyWithPrice": true,
    "maxMoq": 100,
    "sort": "lowPrice",
    "maxResultsPerSearch": 100
}
```

Raw materials and parts, one product per supplier:

```json
{
    "searchTerms": ["centella asiatica extract", "hyaluronic acid"],
    "productType": "materials",
    "uniqueSuppliers": true
}
```

One supplier's profile from its storefront URL:

```json
{ "searchTerms": ["https://buykorea.org/seller-home/2248110157"] }
```

### How to use

1. Open the actor and type one or more product keywords (English) into **Keywords**.
2. Pick **Products + supplier** (default) or **Companies (supplier leads)**.
3. Set **Max results per search** (start with 20) and any filters.
4. Click **Start**. Download the results as JSON, CSV, Excel or HTML, or read them through the API.

### Input

| Field | What it does |
|---|---|
| `searchTerms` | Keywords, buyKOREA search URLs (`?keyword=`) or seller-home URLs. Default `["cosmetics"]`. |
| `searchType` | `products` (default) or `companies`. |
| `maxResultsPerSearch` | Rows per keyword, default 50, 0 = all buyKOREA serves (max 10,000 per keyword). |
| `scrapeProfiles` | Read each supplier's "Our Company" page once (default true). Off = faster, search data only. |
| `productType` | `commercial` (default), `materials`, `services`, `all`. |
| `sort` | `newest` (default), `popularity`, `lowPrice`, `highPrice`, `AtoZ`, `ZtoA`. |
| `uniqueSuppliers` | One product per supplier. |
| `onlyWithPrice`, `maxPrice`, `maxMoq`, `halalOnly` | Product filters. |
| `onlyWithWebsite`, `minYearsInBusiness` | Supplier filters (read profiles). |

Filtered-out rows are never charged. Bad inputs (non-buyKOREA URLs, product pages) are listed in the `RUN_SUMMARY` record and cost nothing.

### Output example

One product row from the default run (long text shortened here):

```json
{
    "searchTerm": "cosmetics",
    "position": 3,
    "rowType": "product",
    "productId": "3790021",
    "productName": "Malgledam Centella Asiatica Extract 1L",
    "productUrl": "https://buykorea.org/ec/prd/selectGoodsDetail.do?goodsSn=3790021",
    "productType": "Commercial",
    "category": "Essences & Serums",
    "categoryCode": "003001005001",
    "hsCode": "330499",
    "keywords": ["Centella Asiatica Extract", "Cica", "Soothing Care", "Skin Conditioning", "Hydrating"],
    "currency": "USD",
    "priceMin": 8.34,
    "priceMax": 10.01,
    "priceTiers": [
        { "maxQuantity": 999, "price": 10.01, "unit": "pcs" },
        { "maxQuantity": 10000, "price": 8.34, "unit": "pcs" }
    ],
    "priceOnRequest": false,
    "moq": 50,
    "moqUnit": "Pieces",
    "halalCertified": false,
    "listedAt": "2026-10-16T14:56:13+09:00",
    "supplierId": "BK_2248110157",
    "supplierName": "THEAREUM INC",
    "supplierNameKorean": "주식회사 더아름",
    "supplierUrl": "https://buykorea.org/seller-home/2248110157",
    "website": "https://www.theareum.co.kr/default/",
    "businessType": "Manufacturer&Distributor",
    "mainProductCategories": [
        "[Commercial] Beauty > Skin Care > Skin & Toner > Skin & Toner",
        "[Commercial] Beauty > Skin Care > Essences & Serums > Essences & Serums"
    ],
    "address": "THEAREUM INC 21-10 Gogol-gil 83beon-gil, Deogyang-gu, Goyang-si, Gyeonggi-do 10265",
    "country": "REPUBLIC OF KOREA",
    "yearEstablished": 2008,
    "companyDescription": "The Areum Co., Ltd. is a specialized company engaged in the research, development, manufacturing, and distribution of cosmetic ingredients...",
    "profileScraped": true,
    "scrapedAt": "2026-10-29T17:36:41.000Z"
}
```

Company rows (`searchType: "companies"`) carry the same supplier fields plus `productCount`, up to 25 `productNames` / `productIds`, `hsCodes` and `registeredAt`; product fields are null.

### Integrations

Results land in an Apify dataset: export to CSV / Excel / JSON, call the actor from the Apify API or Python / JavaScript clients, or connect it to Make, Zapier, n8n, Google Sheets, Airtable and webhooks. AI agents can call it through the Apify MCP server: give it keywords, get structured Korean supplier data back.

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", "led lighting", "auto parts", "kimchi", or buyKOREA URLs: a search (https://buykorea.org/comm/buyer/search.do?keyword=cosmetics) or a supplier storefront (https://buykorea.org/seller-home/2248110396, gives one company row). Default \["cosmetics"] (demo).

## `searchType` (type: `string`):

"products" (default) = one row per product with price tiers, MOQ, HS code and the supplier profile. "companies" = one row per Korean supplier matching the keyword (website, employees, revenue, founding year, products) for lead lists.

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

Optional. Rows saved per keyword, 0-10000. Default 50; 0 = as many as buyKOREA serves (up to 10,000 per keyword). You pay per row, so start with 20.

## `scrapeProfiles` (type: `boolean`):

Default true. Reads each supplier's "Our Company" page once per run and adds business type, address, website, employees, annual revenue, year established, main markets, main categories and description. Turn off for the fastest export (product and search data only).

## `productType` (type: `string`):

Products search only. "commercial" (default, finished goods), "materials" (raw materials, parts, components), "services" or "all".

## `sort` (type: `string`):

Order of the buyKOREA results. Default "newest". lowPrice / highPrice apply to products only.

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

Products search only. true = keep only the first product of each supplier (a supplier lead list). Default false.

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

Products only. Skip "price on request" products. Default false.

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

Products only. Skip products whose lowest published price is above this. Omit for no limit.

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

Products only. Skip products whose minimum order quantity is above this, e.g. 100 for small test orders. Omit for no limit.

## `halalOnly` (type: `boolean`):

Products only. Keep only products registered as Halal certified. Default false.

## `onlyWithWebsite` (type: `boolean`):

Keep only rows whose supplier lists a homepage (reads profiles). Default false.

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

Keep only suppliers founded at least this many years ago (reads profiles). Default 0.

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

Optional, advanced. Parallel requests, 1-20. Default 8.

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

Optional, advanced. Retries per failed request, 0-20. Default 5.

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

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

## Actor input object example

```json
{
  "searchTerms": [
    "cosmetics"
  ],
  "searchType": "products",
  "maxResultsPerSearch": 20,
  "scrapeProfiles": true,
  "productType": "commercial",
  "sort": "newest",
  "uniqueSuppliers": false,
  "onlyWithPrice": false,
  "halalOnly": false,
  "onlyWithWebsite": false,
  "minYearsInBusiness": 0,
  "maxConcurrency": 8,
  "maxRequestRetries": 5,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

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

One row per product (with its supplier profile) or per company.

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

Per-search counts, totals on buyKOREA, stop reasons and invalid inputs.

# 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": [
        "cosmetics"
    ],
    "maxResultsPerSearch": 20,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

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

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

```

## MCP server setup

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