# Coupang Product Search API — Prices, Ratings & Listings (`gauravlabs/coupang-product-search-api`) Actor

Search Coupang Korea (쿠팡) by keyword. Extract product IDs, KRW prices, ratings, images and search ranks. Bulk keywords and JSON/CSV export. $2 per 1,000 delivered listings; no startup fee. No cookies needed.

- **URL**: https://apify.com/gauravlabs/coupang-product-search-api.md
- **Developed by:** [Gaurav Kumar Choudhary](https://apify.com/gauravlabs) (community)
- **Categories:** E-commerce, Developer tools, Automation
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$2.00 / 1,000 delivered product listings

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

## Coupang Product Search API — Prices, Ratings & Listings

Search public Coupang Korea listings using Korean or English keywords. Receive one structured row per product/variant in each keyword's listing response. Export JSON, CSV or Excel without supplying Coupang cookies.

**$2 per 1,000 delivered listing rows ($0.002 each), with no startup fee.** Pay per product listing, not per keyword or API request. Ten delivered listings cost $0.02; 100 cost $0.20; 1,000 cost $2. Failed calls and empty searches create no listing-result event. A listing may have missing optional fields and still be a billable product row.

### Built for practical Coupang research

- Discover products by keyword for Korean-market catalogue research and price comparison.
- Keep product, item and vendor-item IDs for follow-up selected-product monitoring.
- Use numeric KRW prices and separate missing-data flags instead of silently invented values.
- Start with a small sample in the form, or use the same input through the API, schedules, Python or n8n.
- Set product/request caps and a run spending limit. One dataset row equals one listing event.

This tool covers listing-level discovery. It does not claim unlimited pagination, instant responses or richer product-detail sections than it returns.

### Start without code

1. Enter a keyword, for example `아이폰` or `마스크`.
2. Choose a maximum product count. Keep **Maximum API requests** at 2 for one keyword with an optional retry; increase it for several keywords.
3. Start the Actor and export the Product listings dataset. Check SUMMARY for delivery and request counts.

```json
{"keywords":["아이폰"],"maxProducts":20,"maxRequests":2,"requestTimeoutSecs":200}
```

### Returned fields

Product, item and vendor-item IDs; title; numeric KRW price; available original price and discount text; rating and review count; image and canonical product URL; keyword, search rank, ad flag, badges, available shipping/delivery text and missing-field flags. A missing value stays null; badge strings remain source text instead of invented Rocket eligibility.

The Actor removes duplicate product/variant records within each keyword's response. Products found for different keywords remain separate rows so their keyword and rank are preserved. `maxProducts` limits the total emitted rows.

### Scope and limitations

- Each API call retrieves one available listing response for a keyword. There is no automatic next-page scan, category crawling, price-range splitting or full-catalogue promise.
- Sorting, price filters and deep product enrichment are not supported by the current service contract. Use the separate Coupang Product Details Actor for selected-product lookups.
- Listing price and availability are snapshots, not guaranteed checkout conditions. `fetchedAt` is the lookup time; source freshness is not independently guaranteed.
- Missing price, rating, review count or image is listed in `incomplete`. Empty verified searches produce zero product rows.
- One optional retry per keyword handles completed HTTP 500/502/503/504 responses. Retries count toward `maxRequests` and check the run spending limit first. No automatic retry occurs for authentication, rate-limit, malformed-payload or network-timeout errors. Each keyword has a 280-second deadline including its retry. The API may internally attempt upstream retrieval twice; `maxRequests` counts service calls, not those internal attempts. Set `maxRequests: 1` for one keyword without retries.
- Backend errors have blank error-detail strings. Failed calls produce no paid product result. A batch with failures and no delivered rows fails; partial results remain available.
- The run-level cap is not a lifetime Free-account allowance. Normal configured pay-per-result pricing applies; no unlimited free-data allowance is promised.

### Developer usage

Use the same input JSON with the Apify API or `ApifyClient.actor('gauravlabs/coupang-product-search-api').call(...)`. Authenticate to Apify through its token header or SDK configuration; the service credential stays private. The output schema links directly to the default dataset and SUMMARY.

```python
import os
from apify_client import ApifyClient

client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('gauravlabs/coupang-product-search-api').call(
    run_input={'keywords': ['마스크'], 'maxProducts': 10, 'maxRequests': 2},
    memory_mbytes=128,
    timeout_secs=300,
)
for product in client.dataset(run['defaultDatasetId']).iterate_items():
    print(product)
```

Install `apify-client` to use this example. Export JSON for full nested data; use CSV/Excel for price and ranking analysis. A schedule reruns the search; historical price-series aggregation is not built into this Actor.

### Pricing and release status

Pricing is $2 per 1,000 delivered listing rows, with no startup or separate variant charge. Check the Apify run dialog for your spending limit and applicable platform terms. Temporary retrieval failures can still occur despite the bounded retry.

This Actor is not affiliated with Coupang. Use public product data lawfully and responsibly.

# Actor input Schema

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

Enter 1–100 Korean or English keywords. Each keyword retrieves one listing response; automatic deep pagination is not supported.

## `maxProducts` (type: `integer`):

Total product-row limit across all keywords. Set a small limit for your first test. The same product under different keywords is a separate ranked result.

## `maxRequests` (type: `integer`):

Hard ceiling on service calls per run, including one optional retry per keyword for temporary HTTP server errors. Default 2 allows a first call plus one retry. Use 1 to disable retries for a single keyword. The service can internally attempt an upstream request up to twice. This is not a lifetime quota.

## `requestTimeoutSecs` (type: `integer`):

Maximum time for one API call. A keyword including its optional retry has a 280-second deadline; the retry receives only the remaining time. Network timeouts are not retried.

## Actor input object example

```json
{
  "keywords": [
    "아이폰"
  ],
  "maxProducts": 50,
  "maxRequests": 2,
  "requestTimeoutSecs": 200
}
```

# Actor output Schema

## `products` (type: `string`):

No description

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

No description

# 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 = {
    "keywords": [
        "아이폰"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("gauravlabs/coupang-product-search-api").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 = { "keywords": ["아이폰"] }

# Run the Actor and wait for it to finish
run = client.actor("gauravlabs/coupang-product-search-api").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 '{
  "keywords": [
    "아이폰"
  ]
}' |
apify call gauravlabs/coupang-product-search-api --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,gauravlabs/coupang-product-search-api"
        }
    }
}
```

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/dPmetYagWHf5NKwmm/builds/saVmX200JlQDHpDxZ/openapi.json
