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"
}
]
}
파라미터를 여러 가지로 설정해, 필요한 데이터를 가져올 수 있게 됩시다.



댓글