# Korea Hot Deals Scraper (`tindacloud/korea-hot-deals-scraper`) Actor

Collect the latest hot deals from Korean deal communities (Ppomppu, Clien, Dealbada, Eomisae) in one clean format: store, price, shipping, views, likes, link.

- **URL**: https://apify.com/tindacloud/korea-hot-deals-scraper.md
- **Developed by:** [Seungki Min](https://apify.com/tindacloud) (community)
- **Categories:** E-commerce, News
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.50 / 1,000 deals

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

## Korea Hot Deals Scraper

Get the latest **hot deals from Korea's biggest deal communities** in one clean, consistent dataset — store, price, shipping, popularity and link — without dealing with four different page layouts, EUC-KR quirks or Korean date formats.

### Sources

| Board key | Community | What it covers |
|---|---|---|
| `ppomppu` | Ppomppu (뽐뿌게시판) | Domestic deals — the largest Korean deal board |
| `ppomppu-overseas` | Ppomppu (해외뽐뿌) | Amazon, eBay and other overseas deals |
| `ppomppu-ali` | Ppomppu (알리뽐뿌) | AliExpress deals |
| `clien` | Clien (알뜰구매) | Tech-heavy deals, apps, events |
| `dealbada` | Dealbada (국내핫딜) | Domestic deals |
| `dealbada-overseas` | Dealbada (해외핫딜) | Overseas deals |
| `eomisae` | Eomisae (쇼핑정보) | Fashion, sneakers and shopping deals |

### Use cases

- **Price monitoring** — watch when a product or brand shows up on Korean deal boards (`keywords: ["에어팟", "AirPods"]`).
- **Reseller sourcing** — find underpriced items early; schedule the actor every 15–30 minutes.
- **Market & brand research** — which stores (Coupang, G마켓, 11번가, Naver…) run the most promotions, and which deals get traction.
- **Alerts & AI agents** — pipe results to Slack, Telegram, Google Sheets or an LLM via Apify integrations.

### Input

```json
{
  "boards": ["ppomppu", "clien", "dealbada"],
  "maxPagesPerBoard": 2,
  "keywords": ["맥북", "macbook"],
  "excludeKeywords": ["중고"],
  "minViews": 100,
  "maxResults": 200
}
```

- **boards** — leave empty for all boards.
- **maxPagesPerBoard** — Clien and Dealbada support multiple pages (~15–30 deals each). Ppomppu and Eomisae return only the newest page.
- **keywords / excludeKeywords** — matched against the title, case-insensitive. Filtering happens *before* results are saved, so you only pay for deals that match.
- **minViews** — simple popularity threshold.

### Output

```json
{
  "site": "dealbada",
  "board": "dealbada",
  "boardName": "국내핫딜",
  "store": "지마켓",
  "price": 18900,
  "currency": "KRW",
  "priceText": "18,900원",
  "shipping": "free",
  "title": "[지마켓]어포튀각 오리지널 청양고추 먹태맛 선택 12봉 (18,900원/무료)",
  "url": "https://www.dealbada.com/bbs/board.php?bo_table=deal_domestic&wr_id=571802",
  "postId": "571802",
  "author": "…",
  "category": "식품/건강",
  "postedAt": "2026-09-16T20:03:00+09:00",
  "views": 215,
  "likes": 0,
  "comments": 0,
  "thumbnail": "http://cdn.dealbada.com/data/editor/…jpg",
  "excerpt": null,
  "scrapedAt": "2026-09-16T11:40:12.000Z"
}
```

`store`, `price`, `currency` and `shipping` are parsed from the post title using the usual Korean deal format `[Store] Product (price/shipping)`. Posters don't always follow it, so these can be `null` — the raw `title` is always included. `shipping` is normalised to `free` / `paid` when recognisable. Some fields are not available on every board (e.g. Ppomppu has no thumbnail or comment count in its feed).

### Pricing

Pay per result: you are charged only for deals saved to the dataset. Set **Max results** or a spending limit on the run to cap cost.

### Notes

- Only public list pages are read — no login, no post bodies, no personal data beyond the public nickname shown on the board.
- The actor respects each site's crawl delay, so a full run across all boards takes about a minute.
- Site layouts change from time to time. If something breaks, open an issue on the actor page and it will be fixed.

### Proxy

Apify Proxy (datacenter) is on by default: one of the sites (Eomisae) returns 403 to foreign IPs. You can turn it off in the Advanced section if you do not need it.

# Actor input Schema

## `boards` (type: `array`):

Which Korean deal communities to collect. Leave empty for all.

## `maxPagesPerBoard` (type: `integer`):

How many list pages to read on Clien and Dealbada (about 15–30 deals per page). Ppomppu and Eomisae always return only the latest page.

## `keywords` (type: `array`):

Only keep deals whose title contains at least one of these (case-insensitive, Korean or English). Filtering happens before charging, so you only pay for matches.

## `excludeKeywords` (type: `array`):

Drop deals whose title contains any of these.

## `minViews` (type: `integer`):

Only keep deals with at least this many views — a simple popularity filter.

## `maxResults` (type: `integer`):

Stop after this many deals. You are charged per deal.

## `proxy` (type: `object`):

Apify Proxy is used by default because some of these sites block foreign IPs.

## Actor input object example

```json
{
  "boards": [
    "ppomppu",
    "clien",
    "dealbada"
  ],
  "maxPagesPerBoard": 1,
  "keywords": [],
  "maxResults": 200,
  "proxy": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `deals` (type: `string`):

All deals in a table view.

# 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 = {
    "boards": [
        "ppomppu",
        "clien",
        "dealbada"
    ],
    "keywords": [],
    "proxy": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("tindacloud/korea-hot-deals-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 = {
    "boards": [
        "ppomppu",
        "clien",
        "dealbada",
    ],
    "keywords": [],
    "proxy": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("tindacloud/korea-hot-deals-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 '{
  "boards": [
    "ppomppu",
    "clien",
    "dealbada"
  ],
  "keywords": [],
  "proxy": {
    "useApifyProxy": true
  }
}' |
apify call tindacloud/korea-hot-deals-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,tindacloud/korea-hot-deals-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/O4HOa1Aeoe7iNGKNY/builds/0BO97R0FIkmaA9Wpm/openapi.json
