כל סריקה שסוכן שלכם עושה ביד2 נשמרת כ-JSON מלא - חציון לפי רמת גימור, פירוק שוק, וכל מודעה עם המחיר וההיסטוריה שלה. מערכת ה-CRM או ה-DMS שלכם מושכת את זה ב-REST פשוט, עם אותו מפתח רישיון של התוסף ובלי תוספת מחיר. אתם מתרגמים ומציגים איך שנוח לכם.
למפתח שכבר יש לו DMS/CRM - זה כל מה שצריך כדי לחבר:
GET /match (יצרן, דגם, שנה, מחיר) ← קבלו token, שמרו אותו על הרכב.GET /listing/{token} למחיר ומצב, או GET /market-data/latest לחציון השוק של הדגם. הציגו בטבלת המלאי שלכם.מחיר השוק של יונדאי טוסון (דגם 10291), עם מפתח הרישיון:
curl -H "Authorization: Bearer $KEY" \ "https://api.amotors.co.il/api/v1/yad2/market-data/latest?manufacturer=21&model=10291&limit=1"
$res = Http::withToken($key) ->get('https://api.amotors.co.il/api/v1/yad2/market-data/latest', [ 'manufacturer' => '21', 'model' => '10291', 'limit' => 1, ]); $med = $res->json('snapshots.0.med_price');
const r = await fetch( 'https://api.amotors.co.il/api/v1/yad2/market-data/latest?manufacturer=21&model=10291&limit=1', { headers: { Authorization: `Bearer ${key}` } }); const { snapshots } = await r.json(); const med = snapshots[0]?.med_price;
import requests r = requests.get( 'https://api.amotors.co.il/api/v1/yad2/market-data/latest', params={'manufacturer': '21', 'model': '10291', 'limit': 1}, headers={'Authorization': f'Bearer {key}'}) med = r.json()['snapshots'][0]['med_price']
שלושה חלקים, שניים מהם שלנו:
הסוכן גולש ביד2 ──► התוסף סורק ──► POST לשרת שלנו
│
המערכת שלכם (CRM / BI / Sheets) ◄── GET ┘ Authorization: Bearer <licence-key>
| מה | ערך |
|---|---|
| כתובת בסיס | https://api.amotors.co.il/api/v1/yad2 |
| הזדהות | Authorization: Bearer <licence-key> - אותו מפתח שהתוסף משתמש בו |
| פורמט | JSON בלבד. תאריכים ב-ISO-8601 |
| קצב | 60 בקשות/דקה ברוב הנקודות · 120 ל-/listing, /match ו-/listing-details/known · 40 ל-/plate-lookup · 30 ל-/plate-learn ו-/agency-capture · 20 ל-/report. מעבר לזה - 429 |
| שגיאות | 401 מפתח חסר/שגוי/פג · 429 חריגת קצב |
X-Device-Id | אל תשלחו אותה. הכותרת הזו שייכת לתוסף (קשירת דפדפנים למושבים).
קריאה מהשרת שלכם בלי הכותרת אינה תופסת מושב, ובנקודות האינטגרציה
(/market-data/latest, /listing, /match, /catalog, /resolve)
גם אינה נבדקת מול המושבים. שאר הנקודות מיועדות לתוסף ואוכפות את הקשירה |
/market-data/latest60/דקההסריקות האחרונות של הסוכנות שלכם. זה ה-endpoint המרכזי - כל השאר נגזרות נוחות ממנו.
| פרמטר | משמעות |
|---|---|
manufacturer, model | מזהי יד2 של יצרן/דגם (ראו /catalog) |
filter_url | לחלופין: כתובת סינון יד2 מדויקת |
limit | עד 50, ברירת מחדל 10 |
with_items=1 | לכלול גם את רשימת המודעות המלאה (כבד יותר) |
# מחיר השוק של יונדאי טוסון (דגם 10291) curl -H "Authorization: Bearer $KEY" \ "https://api.amotors.co.il/api/v1/yad2/market-data/latest?manufacturer=21&model=10291&limit=1"
{
"ok": true,
"snapshots": [{
"captured_at": "2026-08-12T12:28:10+03:00",
"total": 102, "scanned": 102, "priced": 98,
"avg_price": 94567, "med_price": 95000,
"min_price": 70000, "max_price": 122000,
"avg_hand": 2.4, "avg_days": 36,
"dropped_count": 8, "dropped_avg_pct": 6,
"mine_count": 3, "mine_avg_diff_pct": -4,
"trims": [ { "k": "Elite 4X2 2.0", "count": 27, "avg": 101541, "med": 100000, ... } ]
}]
}
/listing/{token}120/דקהמצב מודעה בודדת - המחיר האחרון שנצפה והאם היא עוד באוויר. זה מה שמניע את התג "מפורסם ביד2" בטבלת המלאי.
{ "ok": true, "found": true, "token": "lzi0v0cf",
"price": 102000, "live": true, "trim": "Elite 4X2 2.0",
"seenAt": "2026-08-12T12:28:10+03:00",
"url": "https://www.yad2.co.il/vehicles/item/lzi0v0cf" }
/match120/דקההצעת שידוך: איזו מודעה ביד2 היא כנראה הרכב הזה מהמלאי שלכם. מקבל
manufacturer, model, trim, year, price
ומחזיר את המודעה שלכם הקרובה ביותר במחיר מהסריקות האחרונות - עם diffPct לחיווי.
{ "ok": true, "suggestion": { "token": "lzi0v0cf", "price": 102000, "diffPct": 0 } }
/catalog60/דקה · ETagקטלוג יצרנים ← דגמים עם מזהי יד2 (126 יצרנים, 616 דגמים). כמעט סטטי - כבדו את ה-ETag ותחסכו את המשיכה.
/license60/דקהמצב הרישיון של המפתח הקורא - להצגת "מנוי פעיל עד..." אצלכם, ולזיהוי מוקדם של תפוגה.
{ "ok": true, "plan": "yearly", "capped": false,
"expires_at": "2027-07-03T13:52:21+03:00", "days_left": 325 }
// כשלא תקין: { "ok": false, "reason": "expired" | "revoked" | "device_mismatch" | "invalid" }
/my-inventory60/דקהסנכרון דו-כיווני: המלאי הפעיל של הסוכנות, מוצלב עם מצב הפרסום ביד2 -
published (מקושר ובאוויר) / offline (מקושר, המודעה ירדה) / unlisted (לא מקושר) -
כולל דגל פער מחיר בין ה-CRM למודעה. זה מה שמזין את פאנל "המלאי שלך" בתוסף.
שימו לב: הנקודה נבדקת גם מול קשירת המכשירים - מרגע שמכשיר נקשר למפתח,
קריאת שרת בלי X-Device-Id נדחית. מפתח של סוכנות אחרת מקבל 403.
| פרמטר | משמעות |
|---|---|
manufacturer, model | אופציונלי: צמצום לפלח (מזהי יד2) - למשל הדגם שנצפה כרגע |
year | אופציונלי: שנתון מדויק |
{ "ok": true, "agency": "...",
"summary": { "total": 42, "published": 30, "offline": 4, "unlisted": 8, "mismatches": 2 },
"vehicles": [{
"id": 66, "brand": "יונדאי", "model": "טוסון", "trim": "Elite 4X2 2.0", "year": 2022,
"yad2_manufacturer": "21", "yad2_model": "10291", "mileage": 61000,
"crm_price": 102000, "token": "lzi0v0cf", "state": "published",
"yad2_price": 104000, "mismatch": { "crm": 102000, "yad2": 104000, "diff": 2000 },
"synced_at": "2026-08-12T12:28:10+03:00"
}]
}
/wallet60/דקהיתרת הקרדיטים לדוחות מפורטים. הארנק יושב על הרישיון הראשי - מפתח סוכן רואה (וצורך) את היתרה של ההורה שלו. גם כאן קשירת המכשירים נאכפת.
{ "ok": true, "credits": 12 }
/report20/דקה · בתשלוםמנכה קרדיט אחד מהארנק. דוח עומק לפלח: קורא ק"מ/בעלות/עלייה-לכביש מהמאגר
הגלובלי, סורק את המודעות החסרות (עד 25 בסריקה), ומחזיר ממוצעים + פירוט פר-מודעה.
חלון חסד: אותו פלח בתוך 24 שעות לא מחויב שוב (charged: false).
אם לא הוחזר שום נתון - הקרדיט מוחזר אוטומטית.
| שדה (JSON body) | משמעות |
|---|---|
tokens | חובה. מערך מזהי מודעות, 1-400 |
manufacturer_id, model_id | מזהה מספרי בודד לכל אחד. פלח רחב/חסר ← 422 עם reason: "segment_required" - לפני ניכוי הקרדיט |
year | אופציונלי: שנתון הפלח |
prices | אופציונלי: מפה token ← מחיר, להשלמת מחיר למודעות שנסרקות |
{
"ok": true, "balance": 11, "charged": true,
"details": { "lzi0v0cf": { "km": 61000, "own": "פרטית", "ry": 2022, "rm": 3 } },
"coverage": { "covered": 38, "from_db": 30, "scraped": 8, "total": 40, "capped": false },
"aggregate": { "avg_km": 74500, "km_n": 35, "ownership": { "פרטית": 28, "ליסינג": 7 },
"avg_age_months": 38, "age_n": 33 }
}
// אין יתרה: 402 { "ok": false, "reason": "no_credits" }
// אין נתונים: 200 { "ok": false, "reason": "no_data", "balance": ... } - הקרדיט הוחזר
/plate-lookup40/דקהלוחית רישוי ← יצרן/דגם/שנה במזהי הקטלוג של יד2, דרך משרד התחבורה. זה מה
שממלא אוטומטית את שדות החיפוש בתוסף. פרמטר יחיד: ?plate=12345678.
התשובה נשמרת במטמון שעה (Cache-Control: private). גם כאן קשירת המכשירים נאכפת.
{ "found": true, "plate": "12345678",
"gov": { "manufacturer": "יונדאי", "model": "TUCSON", "year": 2022 },
"manufacturer_id": 21, "manufacturer_name": "יונדאי",
"model_id": 10291, "model_name": "טוסון", "year": 2022,
"match": "full" }
// match: "full" | "manufacturer" (רק יצרן זוהה) | "none"
// לוחית לא קיימת: 200 { "found": false, "reason": "not_found" }
// gov.il לא זמין: 503 { "found": false, "reason": "gov_down" } - נסו שוב
/resolve60/דקהטקסט חופשי של רכב ← מזהי יד2 + כתובת סינון מוכנה. שלחו יצרן/דגם/שנה כפי שהם רשומים אצלכם - בעברית או באנגלית - וקבלו קישור לפיד המסונן ביד2, בלי לנחש איך יד2 קורא לדגם. חסר מצב לגמרי; מתאים לכפתור "חיפוש ביד2" בתוך המערכת שלכם.
| שדה (JSON body) | משמעות |
|---|---|
brand | חובה. שם היצרן כפי שרשום אצלכם (עד 120 תווים) |
model | אופציונלי: שם הדגם |
year | אופציונלי: שנתון (1950-2100) |
{ "ok": true,
"url": "https://www.yad2.co.il/vehicles/cars?manufacturer=21&model=10291&year=2022-2022",
"manufacturer_id": 21, "model_id": 10291, "year": "2022-2022",
"matched": { "manufacturer": true, "model": true } }
// דגם שלא זוהה עדיין מחזיר קישור תקין ברמת היצרן - בדקו את matched.model
// יצרן לא זוהה: 200 { "ok": false, "reason": "manufacturer_not_matched", "message": "..." }
/extension-version60/דקה · ציבורימספר גרסת התוסף האחרונה שפורסמה - בלי הזדהות בכוונה (גם רישיון שפג צריך לדעת שיש עדכון, ואין כאן מידע מעבר למספר). נשמר במטמון שעה.
{ "version": "4.19.26" }
/market-dataהתוסף בלבדאין צורך לקרוא לזה - זו הדחיפה שהתוסף עושה לבד אחרי כל סריקה. מתועד כאן כדי שתבינו מאיפה הנתונים מגיעים ומה הסכמה המלאה שלהם (למטה).
/trackהתוסף בלבדאין צורך לקרוא לזה - גיבוי שרתי למעקב "ימים במלאי" של התוסף לפי פילטר
חיפוש (?filter_key= ← { ok, seen, sold }). קשירת המכשירים נאכפת
תמיד, כולל בלי הכותרת - כך שקריאת שרת חיצונית ממילא נדחית.
/trackהתוסף בלבדאין צורך לקרוא לזה - התוסף שומר כאן את מפת ה-seen/sold המלאה
לכל פילטר (upsert, לא דלתא). אותה אכיפת מכשירים כמו ה-GET.
/plate-learnהתוסף בלבדאין צורך לקרוא לזה - זיכרון קולקטיבי: התוסף מדווח הצלבת לוחית שהצליחה מקומית במקום שהשרת נכשל, ותיקון אחד משרת מיד את כל הסוכנים הבאים. מזהים שלא קיימים בקטלוג נדחים (הגנת poisoning).
/agency-captureהתוסף בלבדאין צורך לקרוא לזה - התוסף לוכד פרופיל סוכנות מדפי יד2 ציבוריים תוך כדי גלישה. פנימי לחלוטין, לא רלוונטי לאינטגרציית CRM.
/listing-detailsהתוסף בלבדאין צורך לקרוא לזה - הדחיפה של נתוני העומק (ק"מ, בעלות, עלייה-לכביש)
שהתוסף מחלץ מעמודי מודעה, אל המאגר הגלובלי שמזין את הדוח המפורט.
גוף: items[] (עד 1,000) עם token חובה ו-km / ownership /
on_road_year / on_road_month / price אופציונליים ← { ok, saved }.
/listing-details/knownהתוסף בלבדאין צורך לקרוא לזה - עזר לתוסף: מתוך רשימת tokens (עד 3,000) מחזיר
את אלה שכבר יש להם נתוני עומק טריים (maxAgeDays, ברירת מחדל 30), כדי לסרוק
לעומק רק מודעות חדשות ← { ok, known }.
נקודות הקצה שלמעלה מחזירות את הסריקות של הסוכנות שלכם. ה-Sync API פותח שכבה אחרת לגמרי: הצילום העדכני ביותר של כל פלח מכל הרשת - כל סריקה של כל משתמש AMOTORS RADAR מזינה אותו - כולל עקומת מחיר↔זמן שנבנית גם ממכירות אמיתיות במעקב. שלוש קריאות GET, ומערכת ה-CRM שלכם מציגה על כל רכב במלאי את מחיר השוק ואת צפי הימים-למכירה.
דורש הפעלה על הרישיון (תוספת בתשלום -
דברו איתנו). רישיון ללא ההרשאה מקבל
403 sync_not_enabled. ההזדהות זהה: Bearer של הרישיון, בלי
X-Device-Id. שדות פנימיים של סוכנויות אחרות (סימוני "שלנו" וכד')
לעולם אינם נחשפים.
/api/v1/sync/market120/דקהתמונת השוק המלאה של פלח: מדדים, פילוח גימורים, שנתונים, עקומת מחיר↔זמן - מהסריקה הטרייה ביותר ברשת.
| פרמטר | משמעות |
|---|---|
manufacturer, model | חובה - מזהי יד2 (ראו /yad2/catalog) |
year | חובה - שנתון בודד (מחירים מעורבי-שנתונים חסרי משמעות, ולכן כל פלח הוא דגם+שנה) |
include=items | לצרף את המודעות עצמן (כבד יותר) |
curl -H "Authorization: Bearer $KEY" \ "https://api.amotors.co.il/api/v1/sync/market?manufacturer=21&model=10291&year=2021"
{ "ok": true,
"segment": { "manufacturer_id": 21, "model_id": 10291, "year_range": "2021-2021" },
"scanned_at": "2026-08-27T18:26:00+03:00", "scan_age_days": 0,
"market": { "listings_total": 99, "price_median": 95000, "price_avg": 94037,
"avg_days_listed": 42, "dropped_count": 13, ... },
"trims": [ ... ],
"curve": { "base_price": 95000, "flat": false,
"anchors": [ { "pct": -9, "price": 86500, "expected_days": 21 },
{ "pct": 0, "price": 95000, "expected_days": 35 },
{ "pct": 9, "price": 103600, "expected_days": 51 } ],
"sample_listings": 103, "sample_sold": 15 } }
/api/v1/sync/estimate120/דקהצפי ימים-למכירה למחיר נתון. הקריאה שכל CRM רוצה על כל שורת מלאי: "ב-92,000 ₪ - כמה זמן עד מכירה?"
curl -H "Authorization: Bearer $KEY" \ "https://api.amotors.co.il/api/v1/sync/estimate?manufacturer=21&model=10291&year=2021&price=92000"
{ "ok": true, "price": 92000, "price_base": 95000, "diff_pct": -3,
"expected_days": 31,
"based_on": { "sample_listings": 103, "sample_sold": 15,
"scanned_at": "2026-08-27T18:26:00+03:00" } }
/api/v1/sync/trend60/דקההיסטוריית הפלח עד 180 יום - חציון, היצע וותק לאורך זמן + כיוון השינוי. מושלם לגרף מגמה בעמוד רכב.
{ "ok": true, "available": true,
"points": [ { "date": "2026-08-06", "med": 60000, "supply": 61, "avg_days": 66 }, ... ],
"change": { "pct": 0.1, "days": 17, "direction": "flat" },
"curve": { ... } }
עם with_items=1 כל snapshot כולל את רשימת המודעות המלאה. אלה השדות של כל מודעה:
| שדה | משמעות |
|---|---|
token | מזהה המודעה ביד2. url מצורף מוכן |
price | המחיר הנוכחי בש"ח, או null |
prevPrice, dropPct | מחיר קודם ואחוז הירידה - כשהמוכר הוריד מחיר |
hand | יד (מספר בעלים) |
year | שנתון |
trim | רמת הגימור המנורמלת - המפתח להשוואת מחיר הוגנת |
daysListed, stale | ותק המודעה בימים, ודגל "תקועה" (180+ יום) |
dealScore | hot / good / mid / cold - הערכת מהירות מכירה |
bouncedDaysAgo | אם המודעה הוסרה וחזרה - לפני כמה ימים |
ours | true כשהמודעה שייכת לסוכנות שלכם (לפי שם הסוכנות במודעה) |
כל אחד מאלה רץ היום בפרודקשן במערכת ה-CRM של סוכנות פעילה. סדר לפי תמורה-לשעת-פיתוח:
GET /match עם נתוני הרכב ← שמרו את ה-token על הרכב.GET /listing/{token}.live=true ומחיר שווה ← תג ירוק. פער מעל 1% או 500 ש"ח ← תג ענבר "מחיר לא זהה". live=false ← "לא באוויר".זה תופס מחיר שעודכן במערכת ונשכח ביד2 - הטעות הכי יקרה בפרסום מלאי.
GET /market-data/latest?manufacturer=&model=&limit=1 לכל דגם שיש לכם במלאי.med_price - ועדיף לחציון של הגימור הספציפי מתוך trims.with_items=1, סננו dropPct >= 8 או dealScore == "hot" אצל מוכרים פרטיים.GET /license יומי ← באדג' "פעיל עד" במסך ההגדרות שלכם, והתראה פנימית שבוע לפני תפוגה.רישיון אחד = התוסף + ה-API + האזור האישי. 49 ש"ח לחודש למשתמש, שנתי 490 ש"ח (חודשיים מתנה), סוכן נוסף 290 ש"ח לשנה. המפתח מגיע במייל תוך דקות מהרכישה, וה-API עובד איתו מיד.
← לרכישת רישיון · שאלות אינטגרציה? [email protected]