Coupang Scraper - Products, Prices & 20+ Fields avatar

Coupang Scraper - Products, Prices & 20+ Fields

Pricing

from $1.50 / 1,000 results

Go to Apify Store
Coupang Scraper - Products, Prices & 20+ Fields

Coupang Scraper - Products, Prices & 20+ Fields

Scrape Coupang.com products by keyword, category or URL. Extract 20+ fields including title, brand, price, discount, ratings, reviews, availability, delivery, images, full descriptions, product URLs and image galleries.

Pricing

from $1.50 / 1,000 results

Rating

5.0

(1)

Developer

Abot API

Abot API

Maintained by Community

Actor stats

2

Bookmarked

294

Total users

49

Monthly active users

a day ago

Last modified

Share

Coupang Scraper: Product Listings, Prices & Reviews

Coupang Scraper turns Coupang, South Korea's largest online marketplace, into structured product data. Search by keyword or category, walk pasted search, category or product URLs, or pull customer reviews for a list of product IDs. Every listing returns 30+ fields covering price, discount, rating, delivery badges and stock signals, with an optional detail-page fetch for brand, full description, image gallery and a spec table. Export to JSON, CSV or Excel, or pull results straight into your app through the API.

Why This Scraper?

  • Three ways to get data. Search by keyword or category, walk pasted search, category or product URLs, or pull customer reviews for a list of product IDs.
  • 30+ fields per listing, from price and discount to delivery badges, stock signals and a full spec table when detail fetch is on.
  • Filters apply everywhere. Price range, Rocket Delivery and minimum rating narrow both a live search and a pasted category or search URL walk.
  • Two-speed detail fetch. Leave it off for a fast, cheap core pull, or turn it on for brand, description, gallery and specs at roughly 5x the cost per item.
  • Localized to Korea. Prices in KRW and delivery promises match exactly what Korean shoppers see.
  • Built for schedules. Incremental mode returns only new, updated and reappeared listings on recurring runs, and stock-level signals never falsely trigger an "updated" flag.

Use Cases

  • Price monitoring and repricing: track price, discount and stock across a category or saved search over time.
  • Marketplace research: compare Rocket Delivery coverage, ratings and seller counts across competing listings.
  • Voice-of-customer analysis: pull reviews filtered by star rating to study complaints or praise for a product.
  • Catalog and content teams: enrich a product feed with images, specs and descriptions via detail-page fetch.
  • Deal tracking: monitor isOnSpecial and savingsAmount across a watched search or category.

Data You Get

Sample shape: values are illustrative placeholders, not from a live listing.

FieldExample
productId / vendorItemId / itemIdthe three identifiers Coupang assigns to a single listing
title"Sample Product Title"
brand"Sample Brand" (only when fetchDetails = true)
url"https://www.coupang.com/vp/products/0000000001?itemId=0&vendorItemId=0"
image / imagesone thumbnail URL, plus the full gallery array (gallery only when fetchDetails = true)
price / originalPrice3490 / 5500
discountPercent / isOnSpecial / savingsAmount36 / true / 2010
unitPrice"(1개당 1,745원)", Coupang's own per-unit price string
currency"KRW"
rating / reviewCount4.7 / 120
rocketDelivery / rocketFresh / rocketGlobaltrue / false / false
tomorrowDeliverytrue
freeShipping / shippingCosttrue / 0 (only when fetchDetails = true)
deliveryInfo"내일(목) 도착 보장", Coupang's own delivery-promise text
availability"InStock" (only when fetchDetails = true)
isSponsoredfalse
usedMinPrice / usedListingCountlowest price and count of used-condition listings for the same product, when Coupang shows one
categoryId / categoryPath"178155" / "가전디지털 > 컴퓨터 > 노트북"
descriptionfull seller description text (only when fetchDetails = true)
specskey-value spec table, about 11 entries (only when fetchDetails = true)
buyableQuantity / almostSoldOut / otherSellerCountstock-level signals read from the product page (only when fetchDetails = true)
query"노트북", the search term that produced this row (search mode, or a pasted search URL)
scrapedAt"2026-01-01T00:00:00.000Z"

Incremental mode (below) adds changeType, changedFields, firstSeenAt and lastSeenAt to every row. Reviews mode returns a different record type: 29 fields per review, including title, content, rating, date, helpful counts, photos, videos, vendor name, the variant purchased, and Coupang's own structured survey answers.

How to Use

  1. Pick a mode: search (query and filters), url (walk pasted search, category or product URLs) or reviews (customer reviews by product ID).
  2. Fill in the fields for that mode, and set price, rating or Rocket Delivery filters if you want them.
  3. Set Max listings or Max pages to control run size and cost, then click Start.
  4. Download the dataset as JSON, CSV or Excel, or read it through the API.

Search by Korean keyword:

{
"mode": "search",
"queries": ["노트북"],
"maxPages": 3,
"maxListings": 60
}

Search by English keyword with filters and detail fetch:

{
"mode": "search",
"queries": ["wireless mouse"],
"minPrice": 10000,
"maxPrice": 50000,
"rocketOnly": true,
"minRating": 4,
"sortBy": "salePriceAsc",
"maxPages": 5,
"maxListings": 100,
"fetchDetails": true
}

Walk a category URL, with the same filters:

{
"mode": "url",
"urls": ["https://www.coupang.com/np/categories/178255", "https://www.coupang.com/np/categories/178255?page=2"],
"minPrice": 10000,
"rocketOnly": true,
"minRating": 4,
"maxPages": 2,
"maxListings": 120
}

Reviews for one or more products:

{
"mode": "reviews",
"productIds": ["8499380264"],
"maxReviewsPerProduct": 50,
"reviewSortBy": "DATE_DESC"
}

To scrape one specific product page directly, paste its /vp/products/ URL in urls under url mode and turn on fetchDetails.

Run it from your code

Python:

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("abotapi/coupang-scraper").call(run_input={"mode": "search", "queries": ["노트북"], "maxListings": 60})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["title"], item["price"])

JavaScript:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('abotapi/coupang-scraper').call({ mode: 'search', queries: ['노트북'], maxListings: 60 });
const { items } = await client.dataset(run.defaultDatasetId).listItems();

Or connect it to Make, Zapier, n8n, Google Sheets or webhooks from the Integrations tab.

Specials, was-price & discount

Every listing carries price (what you pay), originalPrice (the strike-through was-price, when Coupang shows one), discountPercent, isOnSpecial and savingsAmount (originalPrice minus price). These come straight off the search or category card and, when fetchDetails = true, are only ever upgraded by the product detail page, never overwritten: a detail page may lower price further (a genuinely cheaper price on the product page) but can never raise it above the card's sale price or null out a real card-derived discount. A non-discounted item always reports originalPrice: null, isOnSpecial: false and savingsAmount: null, never fabricated.

There is no dedicated "specials category" input. Coupang's own daily-deals hub renders as a client-side banner and ad widget system rather than a product grid, so it carries no product links or price data to parse, and the page is not reliably reachable on repeat navigation. Rather than point an input at markup that cannot be parsed, this actor surfaces the was-price and discount fields on every listing returned by search, category browse or URL mode, including a keyword search for a term like "특가" or "골드박스," which is the reliable way to reach discounted items today.

Resume and incremental updates

Two different tools for two different jobs: pick the one that matches what you are actually doing.

Resume (resumeFromRunId) continues one specific interrupted run. Paste a previous run ID or dataset ID and the run skips products, or reviews in Reviews mode, already collected there, appending only new ones. Use it after a timeout or crash, or to keep extending one large walk-all pull across several runs without re-scraping, and re-billing, what you already have.

Incremental mode (incrementalMode) is for scheduling this actor daily or weekly against the same search, category or URL list and getting only what changed. The actor remembers its own state, keyed by mode plus queries, category, URLs and filters, or your own stateKey, so there is no run ID to paste. The first run returns everything as NEW; later runs return only NEW, UPDATED and REAPPEARED by default. Search and URL mode only: Reviews mode has no persistent per-review baseline.

Every row gets a changeType: NEW (first time seen), UPDATED (content changed, check changedFields for exactly which keys), UNCHANGED (identical to last run, only returned when emitUnchanged is on), REAPPEARED (was gone, now back), or EXPIRED (tracked previously, not found this run, only returned when emitExpired is on, and only after a run that scanned the full tracked search with no cap hit and no resume). emitUnchanged and emitExpired are both off by default because they return, and bill, extra rows; turn them on only when you specifically need that signal. firstSeenAt and lastSeenAt track when a product was first and most recently observed.

buyableQuantity, almostSoldOut and otherSellerCount are treated as volatile stock-level signals and are excluded from the change-detection fingerprint, so a row never classifies as UPDATED purely because one of these three fields changed. If you are monitoring for a restock or low-stock alert, read the field itself on every run rather than relying on changeType.

Both features can combine: incrementalMode plus resumeFromRunId bootstraps a fresh incremental baseline from a prior resume-style pull's dataset, so nothing looks NEW again tomorrow, but only on a genuinely first run for that state key. If incremental state already exists, the run stops rather than silently mixing two different baselines.

When fetchDetails is on, a suppressed UNCHANGED product may still have had its detail page fetched, needed to compute the fingerprint, but it is never pushed and never billed the detail-enrichment surcharge; only products that actually reach the dataset are charged for enrichment.

Send results into your apps (MCP connectors)

Optionally pipe the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. This is an extra delivery step after the scrape: the Apify dataset is never changed.

What gets written to the connector: a condensed, human-readable summary of each record, not the full JSON. Each item becomes one entry with a title and its key fields flattened to plain text. The complete record always stays in the Apify dataset.

  1. Authorize a connector once under Apify → Settings → Integrations (Notion, Linear, Airtable, or Apify).
  2. Select it in the "Pipe results into your apps" input field. (If the picker is empty, you haven't authorized a connector yet.)
  3. For Notion, also set notionParentPageUrl to the page where items should be created.

The connection is mediated by Apify's MCP proxy, so this actor never sees your third-party credentials. Leave the field empty to skip.

Input Parameters

ParameterTypeDefaultDescription
modestringsearchsearch for query and filters, url for direct URL walking, reviews for customer reviews by product ID.
queriesarray["노트북"](Search mode) One or more Korean or English search terms.
categoryIdinteger(none)(Search mode) Optional category id to narrow the search. In URL mode the category comes from the pasted URL itself.
sortBystringscoreDesc(Search mode) One of scoreDesc, salePriceAsc, salePriceDesc, latest, saleCountDesc. A pasted URL keeps its own sort order.
urlsarraysample category URL(URL mode) One or more search, category or product URLs. The four filters below still apply to listings walked from a search or category URL; only a pasted product URL is returned unfiltered.
productIdsarraysample product ID(Reviews mode) One or more product IDs or product URLs.
maxReviewsPerProductinteger50(Reviews mode) Reviews per product to fetch via the paginated review API.
reviewSortBystringORDER_SCORE_ASC(Reviews mode) ORDER_SCORE_ASC (Best) or DATE_DESC (Newest).
reviewRatingFilterinteger(none)(Reviews mode) Only return reviews with this exact star rating, 1 to 5.
minPriceinteger(none)(Search and URL modes) Minimum item price in KRW.
maxPriceinteger(none)(Search and URL modes) Maximum item price in KRW.
rocketOnlybooleanfalse(Search and URL modes) Keep only items eligible for Rocket Delivery.
minRatinginteger(none)(Search and URL modes) Minimum average rating, 1 to 5.
maxPagesinteger1Pages to walk per query or URL; each page returns up to 60 items.
maxListingsinteger0Stop after this many items in total, across all queries or URLs. 0 means no limit.
fetchDetailsbooleanfalseVisit each product page for brand, full description, image gallery, shipping, availability, specs and stock signals, at roughly 5x the cost of a lean run.
proxyobjectApify Residential, KRProxy configuration. Korean or Japanese residential is strongly recommended.
mcpConnectorsarray(none)Optional: send a summary of each record to apps you authorized under Integrations.
notionParentPageUrlstring(none)Notion connector only: page under which records are created.
maxNotifyListingsinteger50Cap on items written to each connector per run.
resumeFromRunIdstring(none)Continue one specific interrupted run. See "Resume and incremental updates" above.
incrementalModebooleanfalseReturn only new, updated and reappeared records on recurring search or URL-mode runs.
stateKeystring(auto)Name a monitoring campaign, or leave empty to derive one automatically from mode plus search, category, URL and filter settings.
emitUnchangedbooleanfalseAlso return (and bill) records unchanged since the last run.
emitExpiredbooleanfalseAlso return (and bill) records no longer found, after a complete, uncapped, non-resumed scan.

Output Example

Sample record: values are illustrative placeholders, not from a live listing.

{
"productId": "0000000001",
"vendorItemId": "0000000000",
"itemId": "0000000000",
"title": "Sample Product Title",
"brand": "Sample Brand",
"url": "https://www.coupang.com/vp/products/0000000001?itemId=0&vendorItemId=0",
"image": "https://thumbnail.coupangcdn.com/thumbnails/remote/230x230ex/sample.jpg",
"images": [
"https://thumbnail.coupangcdn.com/thumbnails/remote/492x492ex/sample-1.jpg",
"https://thumbnail.coupangcdn.com/thumbnails/remote/492x492ex/sample-2.jpg"
],
"price": 3490,
"originalPrice": 5500,
"discountPercent": 36,
"isOnSpecial": true,
"savingsAmount": 2010,
"unitPrice": "(1개당 1,745원)",
"currency": "KRW",
"rating": 4.7,
"reviewCount": 120,
"rocketDelivery": true,
"rocketFresh": false,
"rocketGlobal": false,
"tomorrowDelivery": true,
"freeShipping": true,
"shippingCost": 0,
"availability": "InStock",
"deliveryInfo": "내일(목) 도착 보장",
"isSponsored": false,
"usedMinPrice": null,
"usedListingCount": null,
"categoryId": "178155",
"categoryPath": "가전디지털 > 컴퓨터 > 노트북",
"description": "Full seller description text appears here when fetchDetails is true.",
"query": "노트북",
"scrapedAt": "2026-01-01T00:00:00.000Z"
}

Plan Requirement

Coupang serves Korean shoppers, and it accepts very little traffic from outside Korea. The actor needs Apify's residential proxy with country set to KR, which is already the default; keep it selected in the Proxy configuration field for reliable results.

FAQ

How much does it cost?

You pay per listing or review returned. Turning on Fetch product detail pages adds the detail-page enrichment charge per item. The Pricing tab shows the current rates. Use Max listings or Max pages to cap the cost of any run.

This actor collects only publicly available product and review data. You are responsible for how you use it: follow Coupang's terms and the laws that apply to you, and get legal advice if you plan commercial redistribution. Prices and availability change constantly and are not guaranteed accurate after you read them.

Can I get only new or changed listings on a schedule?

Yes. Schedule the actor from the Schedules tab and turn on Incremental mode. Each run then returns only new, updated and reappeared listings, and unchanged ones are not billed unless you turn on Emit unchanged.

Why does turning on detail fetch cost so much more?

Each enriched item adds one extra page visit, to fetch brand, description, gallery, specs and stock signals, so a detail-fetch run costs roughly 5x a lean run. Leave it off unless you need those specific fields.

Why did my run fail instead of returning an empty dataset?

In Reviews mode, if Coupang refuses every review request, the run is marked failed with a clear message, so "no reviews" is never confused with "nothing could be read." In search and URL mode, a query, category or URL that cannot be read is skipped with a warning in the run log, and the rest of the run continues. If you get an empty dataset, check the log and run it again in a few minutes.

Can I use it with AI agents or MCP?

Yes. Call it from any Apify integration or MCP client, and use the connector field to push results into Notion, Linear or Airtable.

🔗 Want more e-commerce data?

Pair this actor with these related scrapers from the same team:

🛒 Target AU Scraper
Scrape products and customer reviews from Target.com.au. Search by keyword or use...
🛒 Naver Shopping Scraper
Scrape Naver Shopping products by Korean or English keyword, or by URL. Returns 190+...
🛒 Gmarket.co.kr Scraper
Scrape Gmarket.co.kr product listings and customer reviews into clean JSON. Search by...
🛒 Zalando Scraper
Scrape Zalando products: name, brand, current and original price, discount, sizes...
🏷️ bol.com Scraper
Scrape bol.com products: title, price, list price and discount, EAN, brand, images...
🛒 Kogan.com Scraper
Scrape Kogan.com products with full details and customer reviews. Search by keyword or...

👉 Browse all abotapi scrapers

💬 Support & custom scrapers

  • 🐞 Found a bug or a missing field? Open a ticket on the Issues tab. We usually reply within hours.
  • 🛠️ Need another site, extra fields or a private build? Email abotapi@proton.me or message Telegram @abotapi.
  • ⭐ Enjoying it? A quick review on the actor page helps other users find it.