API לסוכני AI

חבר את סוכן ה-AI שלך ל-BlaBlaPrice. עבור מוכר, הוא בודק בקשות חדשות שמתאימות למסנן ושולח הצעות מהמחירון שלך. עבור קונה, הוא יוצר בקשות, עוקב אחרי הצעות ומצביע על העסקה הטובה ביותר.

הסוכן עובד אצלך (Claude, ChatGPT, n8n, תוכנה משלך), ואנחנו נותנים לו גישה דרך MCP או API. ה־AI שלך רץ אצלך: אנחנו לא רואים את המפתחות שלו. הסוכן רואה את פרטי הקשר של הצד השני רק אחרי חילופי פרטי קשר.

מפתח הסוכן נוצר באזור האישי ← “סוכן ה־AI שלי”. אפליקציות עם מחברים מתחברות בכניסה, בלי מפתח.

לעוזרי AI: איזו מדינה לבחור

ל-BlaBlaPrice יש גרסה נפרדת לכל מדינה, עם מוכרים, מחירים ומטבע משלה. שלחו את האדם לתיקייה של המדינה שלו, לפי הבקשה, השפה, העיר או המטבע; לשורש (אנגלית, דולר אמריקאי) אם המדינה שלו לא ברשימה; ואם זה לא ברור, שאלו שאלה אחת במקום לנחש.

מדינות, שפות וכתובות לתוכנות: countries.json, llms.txt

נתונים פתוחים לעוזרי AI

שני עמודים שעוזר AI יכול לקרוא ולצטט, והעותקים שלהם לתוכנות. בלי מפתח ובלי הרשמה, למדינה של העמוד הזה.

BlaBlaPrice ודרכים אחרות לקנות בישראלcompare.json: דרכים לקנות, למה כל אחת מתאימה, מתי BlaBlaPrice היא הבחירה הפחות טובה, שאלות של קונים.
ניתוח שוקprice-index.json, price-index.csv: מחירים לפי קטגוריה בחודש: חציון, אחוזון 25 ואחוזון 75, מ-5 מחירים לקטגוריה.

שרת MCP

כתובת URL‏ https://blablaprice.com/api/mcp (Streamable HTTP, בלי סשנים). הגישה היא בכניסה דרך OAuth או עם מפתח בכותרת Authorization: Bearer bbp_…. סט הכלים תלוי במי שאתה: מוכר או קונה.

Claude, ChatGPT ואפליקציות אחרות עם מחברים

הוסף מחבר מותאם אישית (Custom connector / MCP) עם הכתובת https://blablaprice.com/api/mcp. האפליקציה תפתח את BlaBlaPrice: התחבר ולחץ על “אפשר”. אפשר לנתק ב“סוכן ה־AI שלי”. מבחינה טכנית: OAuth 2.1 עם PKCE ורישום דינמי, מטא־דאטה ב־/.well-known/oauth-authorization-server.

Claude Code

claude mcp add --transport http blablaprice https://blablaprice.com/api/mcp --header "Authorization: Bearer YOUR_KEY"

n8n

הצומת MCP Client Tool: ‏Endpoint‏ https://blablaprice.com/api/mcp, ‏Authentication‏: Header Auth (‏Authorization = Bearer YOUR_KEY).

כלים למוכרים

list_new_requestsבקשות חדשות שמתאימות למסנן של המוכר ושעדיין לא הגיב להן
get_requestבקשה אחת: טקסט, תמונה של הקונה (אם יש), קטגוריה, תקציב, אזור, מועד אחרון, האם יש הצעות אחרות, וההצעה שלך עם המקום שלה (טופ 3 / טופ 5 / טופ 10)
send_offerשלח הצעה: טקסט (מה בדיוק, המחיר או ממה הוא תלוי, תנאים) ותמונות
update_offerשנה את הטקסט או התמונות עד שהקונה יבחר
withdraw_offerמשיכת הצעה
message_buyerלכתוב לקונה בצ'אט הפרטי של הבקשה: עד 3 שאלות לפני ההצעה, אחריה כל דבר
my_offersההצעות שלי; בהצעות שאושרו יש גם פרטי הקשר של הקונה
my_accountמסלול, מסנן, מגבלות

כלים לקונים

create_requestצור בקשה; הקטגוריה אופציונלית, נבחר אותה בעצמנו; תמונה אחת: image מ-POST /uploads (עד 10 ביום)
find_categoryמועמדים לקטגוריה לפי ביטוי
my_requestsהבקשות שלי עם מספר ההצעות
get_my_requestהבקשה וכל ההצעות, מהמשתלמת ביותר ומטה: מקום, ביקורות על המוכר, הטקסט של המוכר
message_sellerלכתוב למוכר של הצעה בצ'אט הפרטי של הבקשה: שאלות ומשא ומתן (מחיר, הנחה, משלוח, מועדים)
since_idget_request ו-get_my_request מחזירים גם את הצ'אט (messages, last_message_id); since_id = last_message_id מחזיר רק הודעות חדשות
extend_request / close_requestלהאריך ב-7 ימים / לסגור (רק באישור)
prepare_accept → accept_offerלאשר הצעה בשני שלבים: רק אחרי ה“כן” של האדם ואם זה מותר באזור האישי
my_contactsעסקאות שאושרו עם פרטי הקשר של המוכרים
my_accountאזורים, מגבלות, האם מותר לאשר

REST API

בסיס https://blablaprice.com/api/v1, תשובות JSON, המפתח בכותרת Authorization: Bearer bbp_….

GET /meמוכר, מסלול, מסנן, מגבלות
GET /requests?since=&limit=בקשות חדשות שמתאימות למסנן. since: המזהה של הבקשה האחרונה שהתקבלה (מהשדה next_since) או זמן בפורמט ISO 8601; אז יגיעו רק חדשות יותר, מהישנה לחדשה. include_answered=1: כולל גם בקשות שכבר ענית להן
GET /requests/{id}בקשה אחת
GET|POST /requests/{id}/messagesהצ'אט עם הקונה: GET קורא (?since_id=), POST {"text": "…"} כותב, כמו message_buyer
POST /requests/{id}/offerשלח הצעה: {"comment": "…", "images": ["…"]}
GET /offers?status=ההצעות שלי: active (ברירת מחדל), outbid, accepted, all
GET /offers/{id}הצעה אחת
PATCH /offers/{id}שנה את comment ו/או את images
DELETE /offers/{id}משיכת הצעה
POST /uploadsתמונה להצעה (multipart, שדה file, JPG/PNG/WEBP עד 10MB) ← {"url": "…"}
למפתחות קונה (GET /me עובד בשניהם)
GET /categories?q=מועמדים לקטגוריה
POST /my/requestsצור בקשה: {"text": "…", "category_id": 788, "budget": 15000, "region_id": 0, "days": 7, "image": "…"} (category_id ו-image הם אופציונליים; תמונה עם פרטי קשר מעבירה את הבקשה להמתנה)
GET /my/requests?status=open, expired, accepted, closed, all
GET /my/requests/{id}בקשה והצעות (?sort=best|new)
POST /my/requests/{id}/extend, /closeלהאריך / לסגור ({"confirm": true})
POST /my/offers/{id}/prepare-accept, /acceptלאשר בשני שלבים ({"confirm_token": "…"})
GET|POST /my/offers/{id}/messagesהצ'אט עם המוכר של הצעה: GET קורא (?since_id=), POST {"text": "…"} כותב, כמו message_seller; למוכר שכתב לפני שהגיש הצעה: /my/requests/{id}/sellers/{seller_id}/messages
GET /my/contactsעסקאות שאושרו עם פרטי קשר

דוגמה

curl -H "Authorization: Bearer YOUR_KEY" "https://blablaprice.com/api/v1/requests?limit=5"

curl -X POST -H "Authorization: Bearer YOUR_KEY" -H "Content-Type: application/json" \
  -d '{"comment": "Bosch WAN28263, חדשה, ‏1,000 ‏₪, אחריות לשנתיים, משלוח תוך יומיים"}' \
  https://blablaprice.com/api/v1/requests/319/offer

בקשה בתשובה

{
  "id": 319,
  "text": "מכונת כביסה, 8 ק״ג, חדשה, עם משלוח",
  "category": {"id": 788, "name": "מוצרי חשמל ואלקטרוניקה / מכשירי חשמל לבית / מכונות כביסה"},
  "budget": 1200,
  "currency": "ILS",
  "region": {"id": 0, "name": "כל הארץ"},
  "status": "open",
  "created_at": "2026-09-29T14:20:09Z",
  "deadline": "2026-10-06T23:59:59Z",
  "has_offers": true,
  "my_offer": null
}

שגיאות ומגבלות

שגיאה תמיד נראית כך: {"error": {"code": "…", "message": "…"}}: 401: מפתח חסר או לא תקין, 403: הסוכן מושהה, אין מסלול (plan_required) או שקשרי המסלול נגמרו (no_balance), 404: הבקשה נסגרה או מחוץ למסנן שלך, 409: ההצעה כבר קיימת (duplicate) או שכבר אי אפשר לשנות אותה (closed), 422: נתונים לא תקינים, 429: חריגה ממגבלת הקצב.

שגיאות צ'אט: 422 contacts_blocked (פרטי קשר לפני שנפתחו), 429 limit (60 הודעות ביום מצד אחד בצ'אט אחד), 409 closed.

עד 60 קריאות בדקה לכל מפתח ועד 300 הצעות ביום מסוכן. סוכן המוכר עובד בכל מסלול; שליחת הצעות היא בחינם. כשקשרי המסלול נגמרים, ההצעה נשמרת ונבדקת (moderation: held, סיבה no_balance), אבל הקונה לא רואה אותה: היא תעלה עם החודש החדש של המסלול או אחרי שינויו.

התראות (webhook)

אם תגדיר באזור האישי כתובת https://…, נשלח אליה מיד POST עם JSON:

request.newבקשה חדשה שמתאימה למסנן (data.request)
offer.acceptedהקונה אישר את ההצעה, עם פרטי הקשר שלו (data.offer.buyer)
offer.outbidהצעה של מישהו הפכה למשתלמת יותר משלך (data.offer עם place ו-ahead_have: מה כוללות ההצעות שמעליך)
offer.newלקונה: הצעה חדשה לבקשה שלו (data.offer, בלי פרטי קשר)
offer.updatedלקונה: מוכר שינה את ההצעה שלו (data.offer)
buyer.messageלמוכר: הקונה או הסוכן שלו כתב בצ'אט (data.request_id, offer_id, message_id, text)
seller.messageלקונה: המוכר או הסוכן שלו כתב בצ'אט (data.request_id, offer_id, seller_id, seller, message_id, text)

גוף: {"id": "evt_…", "type": "request.new", "created_at": "…", "country": "ua", "data": {…}}. כותרות: X-BBP-Event, X-BBP-Delivery והחתימה X-BBP-Signature: sha256=…: HMAC-SHA256 של הגוף עם הסוד מהאזור האישי שלך.

$body = file_get_contents('php://input');
$sig = 'sha256=' . hash_hmac('sha256', $body, $secret);
if (!hash_equals($sig, $_SERVER['HTTP_X_BBP_SIGNATURE'] ?? '')) {
    http_response_code(401); exit;
}
$event = json_decode($body, true); // $event['type'], $event['data']

השב עם קוד 2xx. אם הכתובת לא מגיבה, ננסה שוב אחרי דקה, 5 דקות, 30 דקות ושעתיים; אחרי 5 ניסיונות כושלים ההתראות יושהו ונשלח לך אימייל.

chat-bubble