Discover/Coupang API
live

Coupang APIcoupang.com

Access Coupang product recommendations and paginated customer reviews via API. Get pricing in KRW, ratings, discount rates, delivery info, and review summaries.

Endpoint health
verified 6d ago
get_product_recommendations
1/1 passing latest checkself-healing
Endpoints
2
Updated
26d ago

What is the Coupang API?

The Coupang API exposes 2 endpoints for retrieving product data from South Korea's largest e-commerce platform. Use get_product_recommendations to pull related products for one or more product IDs — with sale prices, discount rates, and delivery options — or use get_product_reviews to fetch paginated review data including rating distribution, individual review content, and survey answers.

Try it
Maximum number of products to return (5-15).
Comma-separated Coupang product IDs to get recommendations for. Each ID is a numeric string (e.g. '8499380264' or '8499380264,7991194687').
api.parse.bot/scraper/4efec4ec-d019-4a6a-a431-fb9d14f77a19/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/4efec4ec-d019-4a6a-a431-fb9d14f77a19/get_product_recommendations?max_count=10&product_ids=8499380264' \
  -H 'X-API-Key: $PARSE_API_KEY'
Python SDK · recommended

Typed, relational, agent-ready

A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.

  • Fully typed · autocompletes
  • Objects link to objects
  • Typed errors & pagination

Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:

uv add parse-sdk
uv run parse init
uv run parse add --marketplace coupang-com-api

uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.

"""
Coupang Product Recommendations & Reviews API Client
Get your API key from: https://parse.bot/settings
"""

import os
import sys
import requests
from typing import Optional, List
from dataclasses import dataclass
from datetime import datetime


@dataclass
class Product:
    """Represents a Coupang product"""
    product_id: int
    name: str
    sale_price: int
    original_price: int
    discount_rate: float
    rating: float
    review_count: int
    rocket_delivery: bool
    sold_out: bool
    url: str


@dataclass
class Review:
    """Represents a product review"""
    review_id: int
    rating: int
    title: str
    content: str
    reviewer: str
    review_date: int
    helpful_count: int
    item_name: str
    image_count: int


class ParseClient:
    """Client for interacting with Parse API (Coupang Product & Review endpoints)"""
    
    def __init__(self, api_key: Optional[str] = None):
        """
        Initialize the Parse API client.
        
        Args:
            api_key: API key for authentication. If not provided, reads from PARSE_API_KEY env var.
        
        Raises:
            ValueError: If no API key is provided or available in environment.
        """
        self.base_url = "https://api.parse.bot"
        self.scraper_id = "4efec4ec-d019-4a6a-a431-fb9d14f77a19"
        self.api_key = api_key or os.getenv("PARSE_API_KEY")
        
        if not self.api_key:
            raise ValueError("API key must be provided or set in PARSE_API_KEY environment variable")
    
    def _call(self, endpoint: str, method: str = "POST", **params) -> dict:
        """
        Make a request to the Parse API.
        
        Args:
            endpoint: The endpoint name (e.g., 'get_product_recommendations')
            method: HTTP method ('GET' or 'POST')
            **params: Query/body parameters
        
        Returns:
            Response JSON as dictionary
        
        Raises:
            requests.exceptions.RequestException: If the API request fails.
        """
        url = f"{self.base_url}/scraper/{self.scraper_id}/{endpoint}"
        headers = {
            "X-API-Key": self.api_key,
            "Content-Type": "application/json"
        }
        
        try:
            if method.upper() == "GET":
                response = requests.get(url, headers=headers, params=params, timeout=30)
            elif method.upper() == "POST":
                response = requests.post(url, headers=headers, json=params, timeout=30)
            else:
                raise ValueError(f"Unsupported HTTP method: {method}")
            
            response.raise_for_status()
            return response.json()
        except requests.exceptions.RequestException as e:
            print(f"API request failed: {e}", file=sys.stderr)
            raise
    
    def get_product_recommendations(
        self,
        product_ids: str = "8499380264",
        max_count: int = 15
    ) -> dict:
        """
        Get recommended products based on one or more product IDs.
        
        Args:
            product_ids: Comma-separated Coupang product IDs (default: "8499380264")
            max_count: Maximum number of products to return, 5-15 (default: 15)
        
        Returns:
            Dictionary with 'title', 'total_products', and 'products' array
        """
        return self._call(
            "get_product_recommendations",
            method="GET",
            product_ids=product_ids,
            max_count=max_count
        )
    
    def get_product_reviews(
        self,
        product_id: str,
        page: int = 1,
        size: int = 10,
        sort_by: str = "ORDER_SCORE_ASC"
    ) -> dict:
        """
        Get paginated reviews for a specific Coupang product.
        
        Args:
            product_id: Coupang product ID (required)
            page: Page number for pagination (default: 1)
            size: Number of reviews per page (default: 10)
            sort_by: Sort order - 'ORDER_SCORE_ASC', 'ORDER_SCORE_DESC', or 'DATE_DESC'
        
        Returns:
            Dictionary with 'rating_summary', 'reviews' array, and pagination info
        """
        return self._call(
            "get_product_reviews",
            method="GET",
            product_id=product_id,
            page=page,
            size=size,
            sort_by=sort_by
        )


def parse_product(product_data: dict) -> Product:
    """Convert API product data to Product dataclass"""
    return Product(
        product_id=product_data['product_id'],
        name=product_data['name'],
        sale_price=product_data['sale_price'],
        original_price=product_data['original_price'],
        discount_rate=product_data['discount_rate'],
        rating=product_data['rating'],
        review_count=product_data['review_count'],
        rocket_delivery=product_data['rocket_delivery'],
        sold_out=product_data['sold_out'],
        url=product_data['url']
    )


def parse_review(review_data: dict) -> Review:
    """Convert API review data to Review dataclass"""
    return Review(
        review_id=review_data['review_id'],
        rating=review_data['rating'],
        title=review_data['title'],
        content=review_data['content'],
        reviewer=review_data['reviewer'],
        review_date=review_data['review_date'],
        helpful_count=review_data['helpful_count'],
        item_name=review_data['item_name'],
        image_count=review_data['image_count']
    )


def format_currency(amount: int) -> str:
    """Format amount as Korean Won"""
    return f"₩{amount:,}"


def print_product_info(product: Product, rank: int = None) -> None:
    """Print formatted product information"""
    status = "🚀" if product.rocket_delivery else "📦"
    sold = "❌ SOLD OUT" if product.sold_out else "✅ Available"
    rank_str = f"#{rank} " if rank else ""
    
    print(f"\n{rank_str}{status} {product.name[:60]}")
    print(f"   Price: {format_currency(product.sale_price)} (was {format_currency(product.original_price)})")
    print(f"   Discount: {product.discount_rate:.1f}% | Rating: ⭐ {product.rating}/5 ({product.review_count:,} reviews)")
    print(f"   Status: {sold}")


def print_review_info(review: Review) -> None:
    """Print formatted review information"""
    star_rating = "⭐" * review.rating + "☆" * (5 - review.rating)
    date_obj = datetime.fromtimestamp(review.review_date / 1000)
    date_str = date_obj.strftime("%Y-%m-%d")
    
    print(f"\n  {star_rating} {review.title}")
    print(f"     By: {review.reviewer} ({date_str})")
    content_preview = review.content[:80] + "..." if len(review.content) > 80 else review.content
    print(f"     \"{content_preview}\"")
    print(f"     👍 {review.helpful_count} helpful | 📷 {review.image_count} images")


def main():
    """
    Practical workflow:
    1. Get product recommendations for a base product
    2. Filter and rank recommendations by value
    3. Get detailed reviews for top 3 candidates
    4. Display comparison and recommendations
    """
    
    # Initialize client
    client = ParseClient()
    print("=" * 80)
    print("🛒 Coupang Smart Product Finder")
    print("=" * 80)
    
    try:
        # Step 1: Get recommendations
        print("\n📊 Step 1: Fetching product recommendations...")
        print("-" * 80)
        
        base_product_id = "8499380264"
        recommendations = client.get_product_recommendations(
            product_ids=base_product_id,
            max_count=10
        )
        
        print(f"✅ Found {recommendations['total_products']} recommended products")
        print(f"   Category: {recommendations['title']}\n")
        
        # Parse all products
        products: List[Product] = []
        for product_data in recommendations['products']:
            product = parse_product(product_data)
            products.append(product)
        
        if not products:
            print("❌ No products found")
            return
        
        # Step 2: Filter and rank products
        print("\n📈 Step 2: Analyzing and ranking products...")
        print("-" * 80)
        
        available_products = [p for p in products if not p.sold_out]
        if not available_products:
            print("❌ No available products")
            return
        
        # Sort by rating first, then by discount rate
        ranked_products = sorted(
            available_products,
            key=lambda p: (-p.rating, -p.discount_rate)
        )
        
        print(f"Available products: {len(available_products)}/{len(products)}")
        print("\nTop 3 candidates for detailed review:")
        
        for idx, product in enumerate(ranked_products[:3], 1):
            print_product_info(product, rank=idx)
        
        # Step 3: Get detailed reviews for top 3 products
        print("\n\n🔍 Step 3: Fetching detailed reviews for top candidates...")
        print("-" * 80)
        
        top_candidates = ranked_products[:3]
        review_cache = {}
        
        for candidate in top_candidates:
            print(f"\n📚 Reviews for: {candidate.name[:50]}")
            print(f"   Product ID: {candidate.product_id}")
            
            try:
                reviews_response = client.get_product_reviews(
                    product_id=str(candidate.product_id),
                    page=1,
                    size=3,
                    sort_by="ORDER_SCORE_DESC"
                )
                
                review_cache[candidate.product_id] = reviews_response
                
                # Display rating summary
                rating_summary = reviews_response['rating_summary']
                print(f"\n   📊 Rating Summary:")
                print(f"      Average: ⭐ {rating_summary['average_rating']}/5")
                print(f"      Total Reviews: {rating_summary['total_reviews']:,}")
                
                # Show rating distribution
                if rating_summary.get('rating_distribution'):
                    print(f"      Distribution:")
                    for dist in rating_summary['rating_distribution']:
                        bar_length = int(dist['percentage'] / 5)
                        bar = "█" * bar_length
                        print(f"      {'⭐' * dist['rating']:5} {bar:<20} {dist['percentage']:3}% ({dist['count']:,})")
                
                # Display top reviews
                reviews = reviews_response.get('reviews', [])
                if reviews:
                    print(f"\n   💬 Recent reviews:")
                    for review in reviews[:3]:
                        print_review_info(parse_review(review))
                
            except Exception as e:
                print(f"      ⚠️  Could not fetch reviews: {e}")
        
        # Step 4: Final recommendation
        print("\n\n" + "=" * 80)
        print("🎯 FINAL RECOMMENDATION")
        print("=" * 80)
        
        best_overall = ranked_products[0]
        best_value = min(
            [p for p in ranked_products if p.rating >= 4.5],
            key=lambda p: p.sale_price,
            default=ranked_products[0]
        )
        
        print(f"\n🏆 Best Overall: {best_overall.name[:55]}")
        print(f"   Rating: ⭐ {best_overall.rating}/5 | Price: {format_currency(best_overall.sale_price)}")
        if best_overall.product_id in review_cache:
            total = review_cache[best_overall.product_id]['rating_summary']['total_reviews']
            print(f"   Based on {total:,} customer reviews")
        
        if best_value.product_id != best_overall.product_id:
            print(f"\n💰 Best Value: {best_value.name[:55]}")
            print(f"   Rating: ⭐ {best_value.rating}/5 | Price: {format_currency(best_value.sale_price)}")
            savings = best_overall.sale_price - best_value.sale_price
            if savings > 0:
                print(f"   Save {format_currency(savings)} vs. best overall!")
        
        # Show complete comparison table
        print("\n📋 Complete Ranking (Top 5):")
        print("-" * 80)
        print(f"{'Rank':<6} {'Name':<40} {'Price':<15} {'Rating':<10} {'Reviews':<10}")
        print("-" * 80)
        
        for idx, product in enumerate(ranked_products[:5], 1):
            name_short = product.name[:38]
            rating_display = f"⭐ {product.rating}/5"
            print(f"{idx:<6} {name_short:<40} {format_currency(product.sale_price):<15} "
                  f"{rating_display:<10} {product.review_count:,}")
        
        print("\n" + "=" * 80)
        print("✅ Analysis completed successfully!")
        print("=" * 80)
        
    except Exception as e:
        print(f"\n❌ Error: {e}", file=sys.stderr)
        sys.exit(1)


if __name__ == "__main__":
    main()
All endpoints · 2 totalmissing one? ·

Get recommended products based on one or more Coupang product IDs. Returns related products that other shoppers viewed, with full pricing in KRW, ratings, discount rates, delivery options, and social proof indicators. The recommendation algorithm is collaborative filtering ("people who viewed X also viewed Y"). Products are returned up to max_count; fewer may be returned if insufficient recommendations exist.

Input
ParamTypeDescription
max_countintegerMaximum number of products to return (5-15).
product_idsstringComma-separated Coupang product IDs to get recommendations for. Each ID is a numeric string (e.g. '8499380264' or '8499380264,7991194687').
Response
{
  "type": "object",
  "fields": {
    "title": "string - recommendation section title in Korean",
    "products": "array of product objects with product_id, item_id, vendor_item_id, name, product_title, attributes, sale_price, original_price, discount_rate, currency, image, url, rating, review_count, rocket_delivery, rocket_wow, free_shipping, sold_out, has_coupon, social_proof",
    "total_products": "integer - number of products returned"
  },
  "sample": {
    "data": {
      "title": "이 상품을 검색한 다른 분들이 함께 본 상품",
      "products": [
        {
          "url": "https://www.coupang.com/vp/products/7991194687?vendorItemId=89258837393",
          "name": "갤럭시북4 15.6 코어I5 13세대 가성비 노트북",
          "image": "//thumbnail.coupangcdn.com/thumbnails/remote/292x292ex/image/vendor_inventory/b96e/example.jpg",
          "rating": 5,
          "item_id": 22212816611,
          "currency": "KRW",
          "sold_out": false,
          "attributes": "R-A51AG, WIN11 Home, 16GB, 512GB, 그레이",
          "has_coupon": false,
          "product_id": 7991194687,
          "rocket_wow": false,
          "sale_price": 1399000,
          "review_count": 3581,
          "social_proof": "만족했어요 3천+",
          "discount_rate": 30,
          "free_shipping": false,
          "product_title": "갤럭시북4 15.6 코어I5 13세대 가성비 노트북 한컴오피스팩 동봉",
          "original_price": 2019000,
          "vendor_item_id": 89258837393,
          "rocket_delivery": false
        }
      ],
      "total_products": 5
    },
    "status": "success"
  }
}

About the Coupang API

Product Recommendations

The get_product_recommendations endpoint accepts one or more numeric Coupang product IDs via the product_ids parameter (comma-separated) and returns up to 15 related products via max_count. Each product object includes product_id, item_id, vendor_item_id, name, product_title, attributes, sale_price, original_price, and discount rate, along with delivery options and social proof indicators. The title field returns the recommendation section label in Korean, reflecting the collaborative filtering logic Coupang uses for "other shoppers also viewed" groupings.

Product Reviews

The get_product_reviews endpoint takes a required product_id and supports pagination via page and size parameters. Results can be sorted using sort_by with values ORDER_SCORE_ASC, ORDER_SCORE_DESC, or DATE_DESC. Each response includes a rating_summary object with average_rating, total_reviews, and a rating_distribution array, plus an array of individual review objects containing review_id, rating, title, content, reviewer, review_date, helpful_count, item_name, and image_count. The total_pages and total_reviews fields support iterating through full review sets programmatically.

Coverage Notes

All pricing fields are denominated in Korean Won (KRW). Product and review data reflects Coupang's Korean marketplace. Identifiers like vendor_item_id and item_id are distinct from the top-level product_id and map to specific seller-SKU combinations within a listing.

Reliability & maintenanceVerified

The Coupang API is a managed, monitored endpoint for coupang.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when coupang.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.

This isn't an official coupang.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.

Last verified
6d ago
Latest check
1/1 endpoint passing
Maintenance
Monitored & self-healing
Will this API break when the source site changes?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • Build a Coupang price tracker that monitors sale_price vs original_price and alerts on discount rate changes.
  • Aggregate rating_distribution data across competing products to compare customer sentiment before a purchasing decision.
  • Feed get_product_recommendations output into a comparison tool to surface alternative products shoppers commonly view together.
  • Scrape paginated reviews using page and total_pages to build a full review corpus for NLP sentiment analysis.
  • Extract helpful_count and image_count from reviews to filter for high-quality user-generated content.
  • Map vendor_item_id values to specific seller listings for multi-vendor price comparison on a single product.
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo1005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 req/min

One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.

Frequently asked questions
Does Coupang have an official public developer API?+
Coupang operates an affiliate and commerce API program for registered partners at developers.coupang.com, but it requires an approved partner account and has restricted access. The Parse API provides structured product and review data without requiring partner registration.
What does `get_product_recommendations` return beyond basic product names?+
Each product object includes sale_price, original_price, discount rate, vendor_item_id, item_id, delivery options, social proof indicators, and attributes. The title field also returns the Korean-language label for the recommendation section, which reflects the collaborative filtering group the products belong to.
Can I retrieve reviews in English or filter by verified purchase status?+
Review content is returned as written by Coupang shoppers, which is predominantly Korean. There is no verified-purchase filter exposed in the current endpoint parameters. The sort_by parameter supports sorting by score ascending, score descending, or most recent date. You can fork this API on Parse and revise it to add language filtering or additional review attributes.
Does the API cover product search or category browsing?+
Not currently. The API covers product recommendations by product ID and paginated product reviews. Product search by keyword or category browsing are not included. You can fork this API on Parse and revise it to add a search endpoint.
Are product availability or inventory fields returned?+
The recommendations endpoint returns pricing and delivery options but does not expose explicit stock or inventory count fields. Delivery option presence can serve as a proxy for availability in some cases. You can fork this API on Parse and revise it to surface inventory or in-stock status if that data is accessible on the product page.
Page content last updated . Spec covers 2 endpoints from coupang.com.
Related APIs in EcommerceSee all →
tw.coupang.com API
Search for products on Coupang Taiwan and browse by category, brand, or Rocket Delivery availability to find exactly what you're looking for. Get detailed product information, view homepage featured items, and discover deals across thousands of listings.
coppel.com API
Search and browse Coppel's product catalog by keyword to find items with prices, images, and detailed product information, with flexible sorting and pagination options. Get real-time access to Mexico's largest department store inventory to compare products and prices effortlessly.
banggood.com API
Search Banggood products and retrieve detailed information including prices, specifications, and customer reviews to help you discover items and make informed purchasing decisions. Perfect for monitoring inventory, comparing products, and staying updated on what's available across Banggood's catalog.
walmart.com API
Retrieve product data from Walmart.com including pricing, descriptions, availability, reviews, and category listings. Access real-time product information to search by keyword, look up items by ID or URL, and browse department categories.
chewy.com API
Search and browse pet products from Chewy.com, view detailed product information including prices and specifications, and read customer reviews to make informed purchasing decisions. Access comprehensive product catalogs and ratings all through a single integrated interface.
aliexpress.com API
Search for products across AliExpress and instantly access detailed information including product specs, customer reviews, and pricing to make informed purchasing decisions. Browse through product categories and retrieve complete product data directly from URLs to compare options and find exactly what you're looking for.
amazon.com API
Search and browse Amazon products, reviews, offers, and deals, then manage your shopping cart all through a single integration. Get detailed product information, seller profiles, and best sellers to compare prices and make informed purchasing decisions.
petco.com API
Browse and search the Petco product catalog, retrieve product details and customer reviews, get search suggestions, find nearby store locations, and discover current deals and promotions.