Mode: 🔐 Browser · Domain: coupang.com
| Command | Description |
|---|---|
opencli coupang search |
Search Coupang products with logged-in browser session |
opencli coupang product |
Read full product detail (price, rating, seller, delivery) for a product ID |
opencli coupang add-to-cart |
Add a product to the logged-in account's shopping cart |
# List rocket-shipping mice (rank, product_id, title, price, rating, ...)
opencli coupang search "마우스" --filter rocket --limit 10
# Round-trip: pick a product_id from search and pull full detail
opencli coupang product 7654321
# Pass a full product URL instead of an ID
opencli coupang product --url https://www.coupang.com/vp/products/7654321
# JSON output (any subcommand)
opencli coupang product 7654321 -f json
# Add to cart (write — must be logged in)
opencli coupang add-to-cart 7654321| Column | Type | Notes |
|---|---|---|
rank |
int | 1-based position within this query / page |
product_id |
string | Numeric Coupang product id; round-trips into coupang product |
title |
string | Product display name |
price |
int | null | Current selling price (KRW) |
unit_price |
string | Per-unit price label, e.g. (100ml당 1,200원) |
rating |
float | null | Average star rating |
review_count |
int | null | Number of reviews |
rocket |
string | Coupang-rocket badge label (로켓배송 / 로켓와우 / etc.) — empty string if no badge |
delivery_type |
string | 무료배송 / 일반배송 / empty |
delivery_promise |
string | 오늘도착 / 내일도착 / 새벽도착 / empty |
url |
string | Canonical product URL |
Always returns a single row (or throws):
| Column | Type | Notes |
|---|---|---|
product_id |
string | Numeric Coupang product id, normalised from input |
title |
string | null | Product display name; null if upstream did not provide |
price |
int | null | Current selling price (KRW) |
original_price |
int | null | Pre-discount price |
discount_rate |
int | null | Discount percent |
rating |
float | null | Average star rating |
review_count |
int | null | Number of reviews |
seller |
string | null | Vendor / seller name |
brand |
string | null | Brand label (when listed) |
rocket |
string | null | Coupang-rocket type label |
delivery_promise |
string | null | Arrival-window label |
image_url |
string | null | Primary product image |
url |
string | Canonical product URL |
null semantics: a null field means upstream did not expose that field on
this product (e.g. some items have no original_price). Failures (login wall,
page mismatch, page failed to render) raise typed errors instead of silently
returning empty rows — callers should treat any returned row as real data.
| Column | Type | Notes |
|---|---|---|
ok |
bool | Always true on success (failures throw) |
product_id |
string | Coupang product id added |
url |
string | Canonical product URL |
message |
string | Added to cart |
search --limit must be 1..50; out-of-range values throw ArgumentError
(no silent clamp to 50). search --page must be a positive integer. search --filter currently only accepts rocket; any other value throws
ArgumentError rather than being silently dropped during DOM lookup.
- Chrome running and logged into coupang.com
- Browser Bridge extension installed
searchandproductuse the logged-in browser session because Coupang's/np/searchJSON endpoint and product pages serve different (and often empty) responses to anonymous traffic.product's extractor tries three sources in order: JSON-LD Product schema,window.__INITIAL_STATE__/__NEXT_DATA__bootstrap globals, and finally a DOM fallback. The merged result is what's returned.- Authentication failures raise
AuthRequiredError; missing/empty results raiseEmptyResultErrorwith a helpful hint. No command silently returns[]when login is the actual reason.