쿠팡 파트너스 API 와 파이썬으로 검색 리스트 얻어와서 활용하기

쿠팡 파트너스 API + 파이썬으로 상품 정보 얻어오기

최근에 저는 “파이썬” 을 활용하여 여러 업무를 시도를 해보고 있습니다. 개발 경력 내내 “임베디드 소프트웨어” 쪽만 하다가 파이썬을 다뤄보니 다른 세계임이 확연히 느껴지고 있는 중입니다.

특히 파이썬으로는 “업무 자동화” 가 가능해지는데요, 파이썬을 사용하여 반복되거나 일정한 패턴의 일은 컴퓨터에게 맡겨놓고 나는 좀더 창의적인 일에 집중이 가능합니다.

파이썬 관련하여 이것저것 알아보다 우연히 “쿠팡 파트너스” 라는 제휴 마케팅 광고 프로그램을 알게 되었습니다. 또한 현재 코드도사에서는 “쿠팡 파트너스” 를 통해 제휴 마케팅을 하고 있고 수익을 창출하기 위해 시도도 하고 있는 중입니다.

그런데 쿠팡 파트너스에 “API” 가 있다는 사실을 알게 되었습니다. API라… 그러면 쿠팡 파트너스 API를 사용하면 제휴 마케팅이 좀더 수월해 지지 않을까? 라는 생각을 하게 되더군요. 역시 예상대로 API는 꽤 유용합니다.

쿠팡 파트너스 API는 자바, 파이썬, PHP, C#, Node.js 등을 통해 API 호출이 가능합니다. 마침 파이썬을 활용하고 있던 저로써는 충분히 시도해볼만한 부분이었습니다.

이번 시간에는 쿠팡 파트너스 API + 파이썬으로 손쉽게 쿠팡의 물품 정보를 얻어오는 부분에 대해 설명을 하고 소스 코드를 공유해볼까 합니다.

쿠팡 파트너스 API 활성화 방법

쿠팡 파트너스 API를 사용하려면 일정 조건이 필요합니다. 먼저 쿠팡 파트너스 회원이 되어야 하므로 해당 사이트에 가서 가입을 하면 됩니다.

가입 절차는 간단합니다. 특히 쿠팡의 회원이면 간단하게 가입이 가능하니 특별히 어려운 부분은 없습니다.

그런데… 쿠팡 파트너스의 API가 활성화 되기 위해서는 다음과 같은 조건이 필요합니다.

판매물품 총 금액이 “15만원” 이 넘어야 할 것

위의 그림에서도 보이듯이 판매 합산 금액이 15만원이 넘으면 최종 승인 조건이 되어서 “API 활성” 이 가능해 집니다.

그런 다음에 API 키 발급을 “생성” 하면 API 키가 발급이 되게 됩니다.

그럼 위와 같이 API 키가 발급됩니다. 키는 Access Key, Secret Key 로 발급이 되면 이 키는 노출이 되지 않도록 항상 주의해야 합니다. 이렇게 하면 API 사용이 가능합니다.

파이썬을 사용하여 물품 검색하여 정보 얻어오기

쿠팡 파트너스 API를 사용할 준비가 되었다면 이제 파이썬으로 소스 코드를 작성하면 됩니다. 제가 만들어 놓은 코드를 일단 한번 확인해 보겠습니다.

#-*- coding: utf-8 -*-

import hmac
import hashlib
from time import gmtime, strftime
import requests
import json
import urllib.request
from urllib.parse import urlencode
import datetime
import os
from time import sleep
import sys

class coupang:
    def __init__(self):
        self.method = 'GET'
        self.ACCESS_KEY = ""   # 쿠팡 API access key
        self.SECRET_KEY = ""   # 쿠팡 API Secret Key

        self.DOMAIN = "https://api-gateway.coupang.com"
        

    def run(self, keyword):
        # limit 은 상품제한 수
        limit = 10
        # URL 생성
        url = "/v2/providers/affiliate_open_api/apis/openapi/products/search?keyword=" + urllib.parse.quote(keyword) + "&limit=" + str(limit)
        
        # 인증정보 생성
        auth = self.generateHmac(self.method, url, self.SECRET_KEY, self.ACCESS_KEY)
        print(auth)
        # keyword로 검색한 상품정보 생성
        r = self.get_productsdata(self.method, auth, keyword)
        return r

    # HMAC 인증정보 생성
    def generateHmac(self, method, url, secretKey, accessKey):
        path, *query = url.split("?")
        datetimeGMT = strftime('%y%m%d', gmtime()) + 'T' + strftime('%H%M%S', gmtime()) + 'Z'
        message = datetimeGMT + method + path + (query[0] if query else "")

        signature = hmac.new(bytes(secretKey, "utf-8"),
                         message.encode("utf-8"),
                         hashlib.sha256).hexdigest()

        return "CEA algorithm=HmacSHA256, access-key={}, signed-date={}, signature={}".format(accessKey, datetimeGMT, signature)

    # Search API로 상품정보 생성                                                          
    def get_productsdata(self, request_method, authorization, keyword):
        limit = 10   # 상품 조회 최대 갯수는 10개임 
        URL = "/v2/providers/affiliate_open_api/apis/openapi/products/search?keyword=" + urllib.parse.quote(
        keyword) + "&limit=" + str(limit)

        url = "{}{}".format(self.DOMAIN, URL)
        response = requests.request(method=request_method, url=url, headers={   "Authorization": authorization,
        "Content-Type": "application/json;charset=UTF-8"})
        retdata = json.dumps(response.json(), indent=4).encode('utf-8')
        jsondata = json.loads(retdata)
        print(jsondata)
        data = jsondata['data']
        productdata = data['productData']
        
        return productdata

    def itemParser(self, keyword, productdata):
        limit = 10  # 최대는 10개
        i = 0

        while i < limit:
            print(productdata[i]['productId'])
            print(productdata[i]['productName'])
            print(productdata[i]['productPrice'])
            print(productdata[i]['productImage'])
            print(productdata[i]['productUrl'])
            print(productdata[i]['keyword'])
            print(productdata[i]['rank'])
            print(productdata[i]['isRocket'])
            print(productdata[i]['isFreeShipping'])



def test():
    keyword = '청소기'

    r = coupang()
    z = r.run(keyword)
    print(z)
    r.itemParser(keyword, z)

코드는 대략적인 흐름은 이렇습니다. coupang 이라는 class 에는 HMAC 인증 정보를 생성하고 쿠팡의 Search API를 호출하여 상품 데이터를 얻어오는 함수(method) 등이 구현되어 있습니다.

coupang class의 run( )에 키워드를 넣고 실행하면 상품의 추천 순위 데이터가 1~10위까지 나타나게 됩니다.

참고로 Search API 는 1시간에 최대 10번을 호출할 수 있습니다.

위 문서는 쿠팡 파트너스 API의 공식 가이드 문서중 Search API 에 대한 설명입니다. 1시간에 10번 이상 호출을 하면 API 사용에 제한이 걸리니 주의해야 합니다. 또한 최대 상품수는 10개로 제한되어 있습니다.

위 소스에서 test( )는 coupang class를 테스트 하기 위한 함수입니다. 키워드를 예시로 “청소기”를 사용하였습니다.

파이썬을 사용하면 쿠팡 파트너스의 API를 사용하는데 크게 어렵지 않습니다. (물론 프로그래머들은 그럴수 있겠습니다..) 위 예제를 토대로 다른 API를 호출하여 응용을 해도 됩니다.

위 소스를 잘 활용하면 쿠팡 파트너스로 마케팅 수익을 창출하는데 큰 도움이 될 수 있습니다. 어떻게 활용할지는 이 글을 보시는 당신의 몫이 되겠습니다^^

'코드도사(codedosa.com)'에는 쿠팡파트너스 등의 제휴링크가 포함되어 있으며 수수료를 제공받을 수 있습니다.