כל מוכר באמזון מכיר את הבעיה: ניהול ידני של רישומי מוצרים, מחירים והזמנות במספר שווקים הוא סיוט, במיוחד עם מאות SKU. שגיאות מחיר (זול ב-0.01$ — מכירה אבודה, יקר יותר — חרם), מלאי לא מסונכרן (נמכר באתר שלך אבל לא באמזון), עיכוב בעיבוד הזמנות (מדדים יורדים). אנחנו הופכים את זה לאוטומטי באמצעות Amazon Selling Partner API (SP-API) — התחליף המודרני ל-MWS הישן. הניסיון שלנו: אינטגרציות לחנויות עם קטלוגים של עד 50,000 פריטים ב-3+ אזורים. אנחנו מבטיחים פעילות יציבה ללא ירידה במדדים — הערימה שלנו נבדקה על ידי אלפי מוכרים.
אינטגרציית SP-API: רישומים, מחירים, הזמנות
אינטגרציית ה-SP-API מפשטת עדכוני רישומים, סנכרון מחירים וניהול הזמנות. עם SP-API, אפשר להפוך הכל לאוטומטי מרישום מוצר ועד מילוי הזמנות. אנחנו מטפלים בחלק הכבד.
אימות SP-API
SP-API משתמש ב-AWS Signature Version 4 וב-OAuth2 (Login with Amazon). צריך תפקיד IAM ו-refresh token. קוד Python טיפוסי:
import boto3
from sp_api.api import Products, Orders, Inventories
from sp_api.base import Marketplaces, Credentials
credentials = Credentials(
refresh_token=os.environ['SP_REFRESH_TOKEN'],
lwa_app_id=os.environ['LWA_APP_ID'],
lwa_client_secret=os.environ['LWA_CLIENT_SECRET'],
aws_access_key=os.environ['AWS_ACCESS_KEY'],
aws_secret_key=os.environ['AWS_SECRET_KEY'],
role_arn=os.environ['SP_API_ROLE_ARN'],
) יצירה/עדכון רישומים
from sp_api.api import Listings
listings = Listings(credentials=credentials, marketplace=Marketplaces.DE)
def upsert_listing(product: dict) -> None:
listing_body = {
'productType': product['amazon_product_type'],
'attributes': {
'item_name': [{'value': product['name'], 'language_tag': 'de_DE'}],
'brand': [{'value': product['brand']}],
'description': [{'value': product['description'], 'language_tag': 'de_DE'}],
'list_price': [{
'currency': 'EUR',
'value': product['price'],
}],
'main_product_image_locator': [{'media_location': product['main_image']}],
},
}
listings.put_listings_item(
sellerId=SELLER_ID,
sku=product['sku'],
marketplaceIds=[Marketplaces.DE.marketplace_id],
body=listing_body,
)
איך SP-API פותר סנכרון מחירים ומלאי
אמזון לא מאפשרת העלאה ישירה של מחירים/מלאי מהמחסן שלך — הכל חייב לעבור דרך ה-API. אנחנו משתמשים בשני כלים עיקריים:
from sp_api.api import Pricing, FbaInventory
pricing = Pricing(credentials=credentials, marketplace=Marketplaces.US)
pricing.get_competitive_pricing(Asins=[asin])
fba = FbaInventory(credentials=credentials, marketplace=Marketplaces.US)
summary = fba.get_inventory_summaries(granularityType='Marketplace', granularityId=Marketplaces.US.marketplace_id)זה מאפשר עדכון מחירים בהתבסס על מתחרים ודיווח על מחסור במלאי ב-FBA בזמן.
למה SP-API עדיף על MWS
| קריטריון | MWS | SP-API |
|---|---|---|
| פרוטוקול | SOAP/XML | REST/JSON |
| אימות | טוקן פשוט | AWS SigV4 + LWA OAuth2 |
| התראות | Polling | Push דרך SQS |
| אזורים | נקודות קצה נפרדות | אימות אחיד, נקודות קצה נפרדות |
ל-SP-API יש פי 3 פחות שגיאות timeout ותומך ביותר נקודות קצה (לדוגמה, A+ Content, FBA Inbound).
סובלנות לתקלות והתראות
אנחנו משתמשים ב-retries עם exponential backoff, pooling של טוקנים וניטור מכסות עבור SP-API. אם אמזון מחזירה import boto3 from sp_api.api import Products, Orders, Inventories from sp_api.base import Marketplaces, Credentials credentials = Credentials( refresh_token = os.environ['SP_REFRESH_TOKEN'], lwa_app_id = os.environ['LWA_APP_ID'], lwa_client_secret = os.environ['LWA_CLIENT_SECRET'], aws_access_key = os.environ['AWS_ACCESS_KEY'], aws_secret_key = os.environ['AWS_SECRET_KEY'], role_arn = os.environ['SP_API_ROLE_ARN'], ) , תור הבקשות לא אובד — הנתונים נשמרים ב-Redis ונשלחים בהדרגה. אנחנו גם מגדירים SQS להתראות הזמנות:
from sp_api.api import Notifications
notif = Notifications(credentials=credentials)
notif.create_subscription(
notificationType='ORDER_CHANGE',
body={
'payloadVersion': '1.0',
'destinationId': SQS_QUEUE_ARN,
}
)לפי תיעוד SP-API (https://developer-docs.amazon.com/sp-api/docs), התראות push נמסרות תוך פחות מ-5 שניות.
שליפת הזמנות
from sp_api.api import Orders as SpOrders
from datetime import datetime, timedelta
orders_api = SpOrders(credentials=credentials, marketplace=Marketplaces.DE)
orders = orders_api.get_orders(
MarketplaceIds=[Marketplaces.DE.marketplace_id],
CreatedAfter=(datetime.utcnow() - timedelta(hours=24)).isoformat(),
OrderStatuses=['Pending', 'Unshipped'],
) מאפייני אזורים
לאמזון יש נקודות קצה אזוריות: from sp_api.api import Listings listings = Listings(credentials=credentials, marketplace=Marketplaces.DE) def upsert_listing(product: dict) -> None: listing_body = { 'productType': product['amazon_product_type'], 'attributes': { 'item_name': [{'value': product['name'], 'language_tag': 'de_DE'}], 'brand': [{'value': product['brand']}], 'description': [{'value': product['description'], 'language_tag': 'de_DE'}], 'list_price': [{ 'currency': 'EUR', 'value': product['price'], }], 'main_product_image_locator': [{'media_location': product['main_image']}], }, } listings.put_listings_item( sellerId=SELLER_ID, sku=product['sku'], marketplaceIds=[Marketplaces.DE.marketplace_id], body=listing_body, ) (ארה"ב/קנדה/מקסיקו), from sp_api.api import Pricing, FbaInventory pricing = Pricing(credentials=credentials, marketplace=Marketplaces.US) pricing.get_competitive_pricing(Asins=[asin]) fba = FbaInventory(credentials=credentials, marketplace=Marketplaces.US) summary = fba.get_inventory_summaries(granularityType='Marketplace', granularityId=Marketplaces.US.marketplace_id) (אירופה/בריטניה/הודו), TooManyRequests (יפן/אוסטרליה). לכל אחת יש marketplace_id משלה. בפרויקטים, אנחנו מזהים אוטומטית את האזור לפי ASIN או מציינים ידנית.
תהליך האינטגרציה ולוחות זמנים
| שלב | משך, ימים | פרטים |
|---|---|---|
| אנליטיקה | 2–3 | לימוד המבחר, האזורים, נקודות הכאב הנוכחיות |
| עיצוב | 3–5 | בחירת ארכיטקטורה (מונולית או מיקרוסרביסים), IAM |
| פיתוח | 10–15 | קוד, בדיקות יחידה ואינטגרציה עם sandbox של אמזון |
| בדיקות | 3–5 | על staging עם נתונים אמיתיים (ללא השפעה על production) |
| פריסה | 2–3 | פריסה ל-production, ניטור 48 שעות |
לוח זמנים משוער: 20–30 ימי עסקים (תלוי במספר האזורים ובמורכבות הלוגיסטיקה). העלות מחושבת באופן אישי — אנחנו לא מצטטים מחיר בלי להבין את הפרויקט. חיסכון מאוטומציה: חיסכון משמעותי בהשוואה לניהול ידני.
איך להגדיר אימות SP-API ב-5 שלבים
- הרשם חשבון מפתח בפורטל המפתחים של אמזון.
- צור משתמש IAM עם מדיניות
from sp_api.api import Notifications notif = Notifications(credentials=credentials) notif.create_subscription( notificationType='ORDER_CHANGE', body={ 'payloadVersion': '1.0', 'destinationId': SQS_QUEUE_ARN, } ). - הרשם אפליקציית SP-API וקבל מפתחות לקוח LWA.
- בצע הרשאת OAuth2 כדי לקבל refresh token.
- הגדר תפקידי IAM ואחסן אישורים ב-vault מאובטח (לדוגמה, AWS Secrets Manager).
טעויות נפוצות באינטגרציה עצמית
- תפקיד IAM שגוי — האפליקציה לא יכולה לגשת לנתונים.
- חוסר retries על מגבלות מכסה — אובדן הזמנות.
- התעלמות מהבדלי מס אזוריים (לדוגמה, VAT באירופה).
- ניתוח תגובות לא תקין — נשבר כשאמזון משנה את הסכמה.
אנחנו מטפלים בכל המקרים האלה ומספקים אחריות על הקוד.
מה כלול בעבודה
- תיעוד: סכמת אינטגרציה מלאה, הוראות תפעול.
- גישה: תפקידי IAM, refresh tokens, תורי SQS.
- הדרכה: שעתיים של וובינר למנהלים שלכם.
- תמיכה: 3 חודשים של תמיכה חינמית לאחר השחרור.
על החברה
אנחנו צוות עם 7+ שנות ניסיון ב-AWS וב-Amazon SP-API. ביצענו 50+ אינטגרציות למוכרים עם מחזור של עד 10 מיליון דולר. אנחנו עובדים מאז 2018. המומחיות שלנו מאומתת על ידי ביקורות חיוביות ומקרי הצלחה.
איך אנחנו מאיצים את ה-Time to Market
באמצעות תבניות וספריות מוכנות, אנחנו מקצרים אינטגרציה טיפוסית ב-40%. לדוגמה, הגדרת רישומים לאזור חדש לוקחת יום אחד במקום 3. זה מוכח בפועל: לקוח אחד עם 20,000 SKU השיק באמזון בריטניה תוך שבועיים.
צרו קשר להערכה ראשונית של הפרויקט שלכם — נכין אב טיפוס תוך יומיים. הזמינו אינטגרציית פיילוט באזור אחד: בדקו איכות ו-ROI.







