נתיבי המוצרים
נתיבים לחיפוש מוצרים, שליפת מחירים לפי ברקוד ושם, חיפוש בתוך סניף ספציפי, וניהול קבוצות מוצרים. קבוצות מוצרים מאפשרות להתמודד עם הבדלי ברקוד בין רשתות לאותו מוצר.
/productsחיפוש מוצרים בכל הרשתות לפי שם חופשי. המערכת מריצה חיפוש בשלושה מעברים: התאמה מלאה לביטוי, כל המילים, לפחות מילה אחת — ומדרגת לפי רלוונטיות. מחזיר bestMatch ורשימה מדורגת.
Query params
כולם אופציונליים. ללא q מוחזרים כל המוצרים עם pagination.פרמטרים
| שדה | סוג | נדרש | תיאור |
|---|---|---|---|
| q | מחרוזת | לא | חיפוש חופשי בשם מוצר. |
| page | מספר | לא | מספר עמוד. ברירת מחדל: 1. |
| limit | מספר | לא | תוצאות לעמוד. ברירת מחדל: 20. |
דוגמת בקשה
curl "https://api.priceil.dev/products?q=חלב&limit=5"
דוגמת תשובה (data)
{
"bestMatch": {
"itemCode": "7290000123456",
"itemName": "חלב תנובה 1L",
"itemType": 1,
"manufacturerName": "תנובה",
"quantity": "1.000",
"isWeighted": false,
"unitOfMeasure": "100 מל"
},
"allOthers": [
{ "itemCode": "7290000054321", "itemName": "חלב תנובה 3% 500ml", "..." : "..." }
],
"total": 342,
"page": 1,
"limit": 5
}נסו בעצמכם
שדות תגובה
| שדה | סוג | תיאור |
|---|---|---|
| itemCode | מחרוזת | ברקוד המוצר (מזהה ייחודי). |
| itemName | מחרוזת | שם המוצר. |
| itemType | מספר | קוד סוג המוצר. |
| manufacturerName | מחרוזת | שם היצרן. |
| manufactureCountry | מחרוזת | ארץ ייצור. |
| manufacturerDescription | מחרוזת | תיאור היצרן. |
| unitQty | מחרוזת | תווית כמות יחידה. |
| quantity | מחרוזת (עשרוני) | כמות באריזה. |
| isWeighted | בוליאני | האם המוצר נמכר לפי משקל. |
| unitOfMeasure | מחרוזת | יחידת מידה. |
| qtyInPackage | מספר | יחידות באריזה. |
שגיאות נפוצות
| סטטוס | משמעות | פעולה מומלצת |
|---|---|---|
| 400 | פרמטר page/limit לא תקין | ולידציה בצד לקוח לפני שליחה. |
| 429 | חריגה ממגבלת קצב | retry עם backoff אקספוננציאלי. |
| 500 | שגיאת שרת | נסו שוב מאוחר יותר. |
/products/searchחיפוש מוצרים בתוך סניף ספציפי. כל תוצאה כוללת את מחיר המוצר בסניף שנבחר. storeId הוא פרמטר חובה.
פרמטרים
| שדה | סוג | נדרש | תיאור |
|---|---|---|---|
| q | מחרוזת | לא | חיפוש חופשי בשם מוצר. |
| storeId | מספר | כן | מזהה פנימי של הסניף (חובה). |
| page | מספר | לא | מספר עמוד. ברירת מחדל: 1. |
| limit | מספר | לא | תוצאות לעמוד. ברירת מחדל: 20. |
דוגמת בקשה
curl "https://api.priceil.dev/products/search?q=חלב&storeId=12&limit=5"
דוגמת תשובה (data)
{
"items": [
{
"itemCode": "7290000051352",
"itemName": "חלב תנובה 3% 1L",
"price": "5.90",
"priceUpdateDate": "2026-03-20T00:00:00.000Z",
"storeId": 12,
"storeName": "רמי לוי",
"city": "תל אביב",
"address": "רחוב הרצל 1",
"chain": "רמי לוי שיווק השקמה"
}
],
"total": 15,
"page": 1,
"limit": 5
}נסו בעצמכם
שגיאות נפוצות
| סטטוס | משמעות | פעולה מומלצת |
|---|---|---|
| 400 | storeId חסר או לא תקין | ודאו שstoreId מספרי ונשלח. |
| 404 | סניף לא נמצא | בדקו שה-storeId קיים. |
| 429 | חריגה ממגבלת קצב | retry עם backoff. |
/products/:barcodeשליפת מוצר יחיד לפי ברקוד (itemCode). מחזיר את פרטי המוצר בלבד, ללא מחירים. לשליפת מחירים השתמשו ב-/products/:barcode/prices.
דוגמת בקשה
curl "https://api.priceil.dev/products/7290000051352"
דוגמת תשובה (data)
{
"itemCode": "7290000051352",
"itemName": "חלב תנובה 3% 1L",
"itemType": 1,
"manufacturerName": "תנובה",
"manufactureCountry": "IL",
"manufacturerDescription": "תנובה מרכז שיתופי",
"unitQty": "ליטר",
"quantity": "1.000",
"isWeighted": false,
"unitOfMeasure": "100 מל",
"qtyInPackage": 1
}נסו בעצמכם
שגיאות נפוצות
| סטטוס | משמעות | פעולה מומלצת |
|---|---|---|
| 404 | ברקוד לא נמצא | בדקו את הברקוד. |
| 429 | חריגה ממגבלת קצב | retry עם backoff. |
/products/:barcode/pricesמחזיר מוצר עם מחיריו בכל החנויות שנושאות אותו, ממויין מהזול לאחרון. זהו הנתיב המרכזי לבניית מסך השוואת מחירים.
דוגמת בקשה
curl "https://api.priceil.dev/products/7290000051352/prices"
דוגמת תשובה (data)
{
"product": { "itemCode": "7290000051352", "itemName": "חלב תנובה 3% 1L", "..." : "..." },
"prices": [
{
"price": "5.90",
"priceUpdateDate": "2026-03-20T00:00:00.000Z",
"storeId": 12,
"storeName": "רמי לוי",
"city": "תל אביב",
"chain": "רמי לוי שיווק השקמה"
},
{
"price": "6.40",
"storeId": 34,
"storeName": "שופרסל דיל",
"city": "רמת גן",
"chain": "שופרסל"
}
]
}prices ממויין לפי price עולה — הזול ביותר ראשון.
נסו בעצמכם
שגיאות נפוצות
| סטטוס | משמעות | פעולה מומלצת |
|---|---|---|
| 404 | ברקוד לא נמצא | בדקו את הברקוד. |
| 429 | חריגה ממגבלת קצב | retry עם backoff. |
/products/:barcode/prices/:storeIdמחיר מוצר ספציפי בסניף ספציפי. מחזיר 404 גם אם הסניף קיים אבל לא נושא את המוצר.
דוגמת בקשה
curl "https://api.priceil.dev/products/7290000051352/prices/12"
דוגמת תשובה (data)
{
"price": "5.90",
"priceUpdateDate": "2026-03-20T00:00:00.000Z",
"storeId": 12,
"storeName": "רמי לוי",
"city": "תל אביב",
"address": "רחוב הרצל 1",
"chain": "רמי לוי שיווק השקמה"
}נסו בעצמכם
שגיאות נפוצות
| סטטוס | משמעות | פעולה מומלצת |
|---|---|---|
| 404 | ברקוד / סניף לא נמצא, או הסניף לא נושא מוצר זה | הציגו fallback מתאים. |
| 429 | חריגה ממגבלת קצב | retry עם backoff. |
קבוצות מוצרים
קבוצות מנרמלות ברקודים שונים מרשתות שונות לאותו מוצר. כשבונים רשימת קניות — עדיף לשמור groupId ולא ברקוד ספציפי, כי ה-API ימצא את הברקוד הנכון לכל סניף בעצמו.
/products/groupsחיפוש קבוצות מוצרים לפי שם. כל קבוצה כוללת את הברקודים המשויכים לה. מחזיר אותה מבנה bestMatch/allOthers כמו /products.
פרמטרים
| שדה | סוג | נדרש | תיאור |
|---|---|---|---|
| q | מחרוזת | לא | חיפוש בשם הקבוצה. |
| page | מספר | לא | מספר עמוד. ברירת מחדל: 1. |
| limit | מספר | לא | תוצאות לעמוד. ברירת מחדל: 20. |
דוגמת בקשה
curl "https://api.priceil.dev/products/groups?q=חלב תנובה&limit=5"
נסו בעצמכם
/products/groups/:id/prices/:storeIdהמחיר הזול ביותר לקבוצת מוצרים בסניף ספציפי. ה-API בוחר את הברקוד הנכון שהסניף נושא מתוך כל הברקודים בקבוצה.
דוגמת בקשה
curl "https://api.priceil.dev/products/groups/42/prices/12"
דוגמת תשובה (data)
{
"groupId": 42,
"groupName": "חלב תנובה 3% 1L",
"itemCode": "7290000042015",
"itemName": "חלב תנובה 3% 1L",
"price": "5.90",
"priceUpdateDate": "2026-03-20T00:00:00.000Z",
"storeId": 12,
"storeName": "רמי לוי",
"city": "תל אביב",
"chain": "רמי לוי שיווק השקמה"
}נסו בעצמכם
שדות תגובה
| שדה | סוג | תיאור |
|---|---|---|
| groupId | מספר | מזהה קבוצת המוצרים. |
| groupName | מחרוזת | שם הקבוצה המנורמל. |
| itemCode | מחרוזת | הברקוד הספציפי שהסניף נושא. |
| itemName | מחרוזת | שם המוצר כפי שמופיע ברשת. |
| price | מחרוזת (עשרוני) | המחיר הזמין בסניף בשקלים. |
| priceUpdateDate | מחרוזת (תאריך) | תאריך עדכון המחיר האחרון. |
| storeId | מספר | מזהה פנימי של הסניף. |
| storeName | מחרוזת | שם הסניף. |
| city | מחרוזת | עיר הסניף. |
| address | מחרוזת | כתובת הסניף. |
| chain | מחרוזת | שם הרשת. |
שגיאות נפוצות
| סטטוס | משמעות | פעולה מומלצת |
|---|---|---|
| 404 | קבוצה / סניף לא נמצאו, או הסניף לא נושא אף ברקוד מהקבוצה | הציגו fallback מתאים. |
| 429 | חריגה ממגבלת קצב | retry עם backoff. |
טיפים לשימוש
- לחיפוש ראשוני בלי סניף — השתמשו ב-/products?q=...לאיסוף ברקודים, ואז העבירו אותם ל-/products/:barcode/pricesלבניית השוואה.
- לרשימות קניות — עדיף לשמור groupId ולא ברקוד, כי קבוצות עובדות על פני כל הרשתות. השתמשו בנתיב /products/groups/:id/prices/:storeId לקבלת מחיר מדויק לכל סניף.
- isWeighted=true מציין מוצר שנמכר לפי משקל. מחירו יהיה ל-100 גרם ולא ליחידה.
- priceUpdateDate הוא תאריך העדכון האחרון שהרשת דיווחה לממשלה, לא תאריך העדכון במסד הנתונים שלנו.
- לשילוב עם סניפים: קראו ל-/storesקודם לאיסוף storeId, ואז השתמשו בו בנתיבי המחיר.