# Korea Cross-Market Product Compare (`originpick/korea-cross-market-product-compare`) Actor

Compare the same product across Naver Shopping and Coupang using deterministic product matching, price comparison, and safe-skip protection.

- **URL**: https://apify.com/originpick/korea-cross-market-product-compare.md
- **Developed by:** [OriginPick](https://apify.com/originpick) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $490.00 / 1,000 product comparison 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

## Compare one product on Naver Shopping and Coupang

### 내 상품을 비교할 수 있나요?

| 상태 | 현재 안내 |
| --- | --- |
| ✅ 현재 권장 | 모델번호가 있고 양쪽 쇼핑몰에서 동일 모델로 판매되는 상품 |
| ⚠️ 조건부 | 색상·용량·구성·수량 등 옵션이 복잡한 상품. 같은 옵션임이 확인될 때만 가격을 비교합니다. |
| ⏳ 지원 범위 확대 예정 | 패션·식품·화장품·생활용품 등 옵션과 구성 차이가 많은 상품군 |

**과금 원칙:** OriginPick의 **$0.49 비교결과 이벤트는 `MATCH`가 default Dataset에 생성될 때만** 발생합니다. `AMBIGUOUS`, `NO_MATCH`, `SAFE_SKIP`은 default Dataset 비교결과를 만들지 않으므로 OriginPick의 $0.49 비교결과 이벤트가 발생하지 않습니다.

Naver/Coupang 조회에 사용하는 **하위 Source Actor 및 Apify 플랫폼 사용량은 별도**이며, 실행한 Apify 계정에 해당 Actor의 현재 가격 정책에 따라 청구될 수 있습니다. Source 비용은 OriginPick의 $0.49 비교결과 가격에 포함된 금액이 아닙니다.

**Enter a product name once. OriginPick searches both marketplaces, checks whether the listings are safely comparable, and returns a structured outcome.**

> **OriginPick MATCH result price: $0.49 per comparison result**
>
> If Apify displays **$490 / 1,000 product comparison results**, it means **1,000 × $0.49 = $490** for OriginPick MATCH result events.
>
> Source Actor and platform usage can be billed separately by Apify to the account that runs OriginPick. Check the current Apify pricing shown for those services before execution.

### Quick start

#### Start here — 3 simple steps

#### 1. Open the **Input** tab

Enter the product you want to compare.

Example:

```text
Samsung Galaxy Buds3 Pro SM-R630 Silver
```

Including an exact model number usually improves matching precision.

#### 2. Click **Start**

OriginPick searches Naver Shopping and Coupang using safeguarded source limits.

#### 3. Open the **Output** tab

Check the run outcome.

A successful run can return any of these four statuses:

- **MATCH** — a sufficiently safe same-product comparison was found. A comparison item is written to the default Dataset and the $0.49 OriginPick comparison-result event applies.
- **AMBIGUOUS** — plausible candidates exist, but the evidence is not strong enough to choose one safely. No default Dataset comparison item; no $0.49 OriginPick comparison-result event.
- **NO_MATCH** — marketplace candidates were evaluated, but no same-product pair passed the matching rules. No default Dataset comparison item; no $0.49 OriginPick comparison-result event.
- **SAFE_SKIP** — OriginPick intentionally stopped comparison because source data, eligibility, or safety conditions were not sufficient. No default Dataset comparison item; no $0.49 OriginPick comparison-result event.

All four statuses are available in the run's **OUTPUT** record. A non-MATCH status is not automatically a platform failure.

### What this Actor does

- Searches Naver Shopping and Coupang for the requested product
- Normalizes product titles, model numbers, options, and prices
- Applies deterministic same-product matching
- Compares prices only for sufficiently safe matches
- Rejects uncertain or conflicting candidates instead of forcing a match

### Inputs

The public Store/API contract contains only customer inputs:

#### 1. Product to compare

Enter the product name. Add the model number when you know it.

Example:

```text
Samsung Galaxy Buds3 Pro SM-R630 Silver
```

#### 2. Brand — optional

Use this only when the product name is ambiguous.

Example:

```text
Samsung
```

#### 3. Model number — optional

Enter the exact model identifier if you know it.

Example:

```text
SM-R630
```

For most users, the first field is enough.

### Output

`OUTPUT` is the authoritative run outcome for `MATCH`, `AMBIGUOUS`, `NO_MATCH`, and `SAFE_SKIP`.

When `MATCH` is found, the result can include:

- Naver Shopping product and price
- Coupang product and price
- price difference and cheaper source
- matching evidence and confidence
- data-quality status

Only a `MATCH` creates the billable comparison item in the default Dataset.

### Why a healthy run can be non-MATCH

OriginPick prioritizes reliable same-product comparison over always returning a price comparison. Non-MATCH outcomes can be caused by:

- conflicting model numbers
- conflicting colors, capacities, quantities, or options
- used/refurbished wording
- bundles or bulk packages
- partial components or accessories
- multiple plausible variants without enough evidence
- source data that is incomplete or unavailable

The safer choice is to return a non-MATCH outcome instead of presenting a misleading comparison.

### Pricing

- **OriginPick `MATCH` comparison-result event:** $0.49 per result
- **`AMBIGUOUS` / `NO_MATCH` / `SAFE_SKIP`:** no OriginPick $0.49 comparison-result event
- **OriginPick Actor start event:** may be shown separately by Apify
- **Naver/Coupang Source Actor and Apify platform usage:** separate from OriginPick's $0.49 result event and billed according to the executing account's current Apify pricing

Prices and third-party Actor pricing can change. Review the current Apify Pricing/Run cost information before production use.

### Which tabs should I use?

For normal use, you only need:

1. **Input** — enter the product
2. **Output** — read the run outcome
3. **Issues** — ask for help if behavior does not match this documentation

The **API** tab is for developers who want to integrate OriginPick into software or automation.

### Limitations

Marketplace search results, availability, and source pricing change over time. OriginPick does not guarantee that every query will produce a `MATCH`.

### Automatic handling

`AMBIGUOUS`, `NO_MATCH`, and `SAFE_SKIP` are automatic protection outcomes. They normally need no manual support when the reason recorded in `OUTPUT` matches the input and source data.

### Support

If you need help, open the **Issues** tab and include:

- the Actor run ID
- the product query
- what you expected to see

***

**OriginPick** builds practical data tools for structured marketplace data and reliable automated comparison.

OriginPick is an independent developer and is not affiliated with Naver or Coupang.

# Actor input Schema

## `query` (type: `string`):

Enter the product name. Include the exact model number when possible. Example: Samsung Galaxy Buds3 Pro SM-R630 Silver.

## `brandHint` (type: `string`):

Only use this when the product name is ambiguous. Example: Samsung.

## `modelHint` (type: `string`):

Enter the exact model identifier if you know it. Example: SM-R630.

## Actor input object example

```json
{
  "query": "삼성전자 갤럭시 버즈3 프로 SM-R630 실버",
  "brandHint": "Samsung",
  "modelHint": "SM-R630"
}
```

# Actor output Schema

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

No description

## `runStatus` (type: `string`):

Always-available run outcome. AMBIGUOUS, NO_MATCH, and SAFE_SKIP remain in OUTPUT without creating a default dataset comparison item.

# 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 = {
    "query": "삼성전자 갤럭시 버즈3 프로 SM-R630 실버"
};

// Run the Actor and wait for it to finish
const run = await client.actor("originpick/korea-cross-market-product-compare").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 = { "query": "삼성전자 갤럭시 버즈3 프로 SM-R630 실버" }

# Run the Actor and wait for it to finish
run = client.actor("originpick/korea-cross-market-product-compare").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 '{
  "query": "삼성전자 갤럭시 버즈3 프로 SM-R630 실버"
}' |
apify call originpick/korea-cross-market-product-compare --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,originpick/korea-cross-market-product-compare"
        }
    }
}
```

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/th5pt9jOrih9ez8aQ/builds/adoOUSaT0it9TcYfX/openapi.json
