top of page

Python × SP-API로 상품 정보 검색 | Amazon Selling Partner API

  • 2일 전
  • 3분 분량

셀링 파트너 API(SP-API)는 Amazon의 셀링 파트너를 위한 자동화 기능의 차세대 API 스위트로, Amazon 마켓플레이스 웹 서비스(MWS) API가 진화한 것입니다. MWS는 Amazon의 중요한 기능에 대한 프로그램적 접근을 10년 이상 제공해 왔습니다. SP-API가 공개되면, 현재 MWS를 지원하는 모든 Amazon 스토어에서 프로덕션 환경으로 이용할 수 있게 됩니다.

현재 MWS를 이용하는 개발자는, 2024년 4월 1일까지 SP-API로 이전해야 합니다.(2023년 1월 23일 시점의 정보)

Selling Partner API for Catalog Items

Catalog-Items의 API는, 카탈로그 내 아이템 정보의 상세를 가져올 수 있습니다.

환경 준비

Python에서 SP-API를 이용하려면 python-amazon-sp-api 라이브러리를 설치해야 합니다. 저는 AWS Lambda에서 Python을 실행하므로, Lambda의 대상 프로젝트에 라이브러리를 설치하기 위해 「-t .」 옵션을 붙였습니다

pip install python-amazon-sp-api -t .

SP-API 실행에는 자격 증명이 필요합니다. 자격 증명은 credentials에 모아 저장해 두면 편리합니다. 각 값의 취득 방법은 별도 기사에서 소개합니다.

credentials : {
    "refresh_token": 리프레시 토큰,
    "lwa_app_id": 클라이언트 ID,
    "lwa_client_secret": 클라이언트 시크릿,
    "aws_access_key": AWS 액세스 키,
    "aws_secret_key": AWS 시크릿 키
}

API 실행

CatalogItems API는 다음 조작을 제공합니다.

searchCatalogItems: Amazon 카탈로그 아이템과 관련 정보의 목록을 검색해 반환합니다.

getCatalogItems: Amazon 카탈로그 내 아이템의 상세를 가져옵니다.

searchCatalogItems

from sp_api.api import CatalogItems
from sp_api.base.marketplaces import Marketplaces
def lambda_handler(event, context):
	#CatalogItems API 이용을 위한 객체 생성
	obj = CatalogItems(marketplace=Marketplaces.JP,
	                   credentials=event['credentials'])
	#검색에 필요한 값을 설정하고 상품 정보를 가져오기
	result = obj.search_catalog_items(keywords='test',
                                    pageSize=1,
                                    brandNames=None,
                                    includedData='images,summaries',
                                    classificationIds='')
	return result.payload

파라미터 설명

keywords: 검색 키워드

pageSize: 한 페이지에 반환할 건수

brandNames: 브랜드명으로 좁히기(지정하지 않으면 None)

includedData: images나 summaries 등 포함할 데이터

classificationIds: 분류 ID로 좁히기

실행 결과(예)

{
	"numberOfResults": 682495,
	"refinements": {
		"brands": [
			{
				"numberOfResults": 31634,
				"brandName": "DFV mobile"
			},
			{
				"numberOfResults": 11337,
				"brandName": "HM&CL"
			},
			{
				"numberOfResults": 10035,
				"brandName": "Yise Knight"
			},
			{
				"numberOfResults": 9922,
				"brandName": "House Of Candles"
			},
			{
				"numberOfResults": 7716,
				"brandName": "Independently Published"
			},
			{
				"numberOfResults": 7040,
				"brandName": "QIAOMEL"
			},
			{
				"numberOfResults": 5546,
				"brandName": "Routledge"
			},
			{
				"numberOfResults": 5153,
				"brandName": "XXXXXbrand"
			},
			{
				"numberOfResults": 5070,
				"brandName": "Jpp"
			},
			{
				"numberOfResults": 4890,
				"brandName": "Createspace Independent Publishing Platform"
			}
		],
		"classifications": [
			{
				"numberOfResults": 236985,
				"displayName": "洋書",
				"classificationId": "52231011"
			},
			{
				"numberOfResults": 132804,
				"displayName": "家電&カメラ",
				"classificationId": "3210991"
			},
			{
				"numberOfResults": 53667,
				"displayName": "ファッション",
				"classificationId": "2229203051"
			},
			{
				"numberOfResults": 43870,
				"displayName": "ホーム&キッチン",
				"classificationId": "3839151"
			},
			{
				"numberOfResults": 39640,
				"displayName": "産業・研究開発用品",
				"classificationId": "3445394051"
			},
			{
				"numberOfResults": 31742,
				"displayName": "DIY・工具・ガーデン",
				"classificationId": "2016930051"
			},
			{
				"numberOfResults": 27062,
				"displayName": "車&バイク",
				"classificationId": "2017305051"
			},
			{
				"numberOfResults": 23699,
				"displayName": "DVD",
				"classificationId": "562002"
			},
			{
				"numberOfResults": 23013,
				"displayName": "パソコン・周辺機器",
				"classificationId": "2127210051"
			},
			{
				"numberOfResults": 18235,
				"displayName": "本",
				"classificationId": "465610"
			}
		]
	},
	"items": [
		{
			"asin": "1260470350",
			"images": [
				{
					"marketplaceId": "A1VC38T7YXB528",
					"images": [
						{
							"variant": "MAIN",
							"link": "https://m.media-amazon.com/images/I/41kSp18z0gL.jpg",
							"height": 500,
							"width": 389
						},
						{
							"variant": "PT01",
							"link": "https://m.media-amazon.com/images/I/41W8uD-hSoS.jpg",
							"height": 311,
							"width": 500
						},
						{
							"variant": "PT02",
							"link": "https://m.media-amazon.com/images/I/41RJrpym0US.jpg",
							"height": 309,
							"width": 500
						}
					]
				}
			],
			"summaries": [
				{
					"marketplaceId": "A1VC38T7YXB528",
					"brandName": "McGraw-Hill Education",
					"browseNode": "97801011",
					"itemName": "The Official Guide to the TOEFL iBT Test (Official Guide to the TOEFL Test)",
					"manufacturer": "McGraw-Hill"
				}
			]
		}
	]
}

getCatalogItems

from sp_api.api import CatalogItems
from sp_api.base.marketplaces import Marketplaces
def lambda_handler(event, context):
	#CatalogItems API 이용을 위한 객체 생성
	obj = CatalogItems(marketplace=Marketplaces.JP,
	                   credentials=event['credentials'])
	#검색에 필요한 값을 설정하고 상품 정보를 가져오기
	result = obj.get_catalog_item(asin='B09JFLJTZG')
	return result.payload

파라미터 설명

asin: 상세를 가져올 아이템의 ASIN

실행 결과(예)

{
	"asin": "B09JFLJTZG",
	"summaries": [
		{
			"marketplaceId": "A1VC38T7YXB528",
			"brandName": "Amazon",
			"browseNode": "2285132051",
			"colorName": "BLACK",
			"itemName": "Fire TV Stick 4K Max - Alexa対応音声認識リモコン(第3世代)付属 | ストリーミングメディアプレーヤー",
			"manufacturer": "Amazon",
			"modelNumber": "K2R2TE"
		}
	]
}

파라미터를 여러 가지로 설정해, 필요한 데이터를 가져올 수 있게 됩시다.

 
 
 

댓글


© Copyright ROBIN planning LLC.

bottom of page