وثائق الواجهة البرمجية

توفر واجهة Germany Insolvencies كل إعلان إعسار رسمي في ألمانيا في صورة بيانات منظمة: يوميًا، مع إمكانية التصفية حسب نوع الإشعار والولاية الاتحادية والمحكمة، ومرتبطة بملفات الشركات وبالميزانيات المنشورة. HTTPS وJSON فقط، وCSV عند الطلب.

آخر تحديث: 2026-09-29

طلب الوصول

تُصدر المفاتيح يدويًا. أخبرنا باختصار بما تريد بناءه وبالحجم المتوقع، وغالبًا ما يصبح الوصول جاهزًا خلال يوم عمل واحد.

طلب الوصول

مقدمة

تنشر محاكم الإعسار الألمانية كل خطوة من خطوات الإجراء على البوابة الرسمية insolvenzbekanntmachungen.de: التدابير التحفظية وافتتاح الإجراء ورفض الطلب لعدم كفاية الأموال وقوائم التوزيع والإعفاء من الديون المتبقية. صُممت البوابة للاطلاع على القضايا الفردية لا لمعالجة البيانات، فليس لها واجهة برمجية ولا تصدير، وتحذف الإعلانات بعد انقضاء المدد القانونية.

تسد الواجهة هذه الفجوة. نجمع كل إعلان جديد في يوم نشره، ونوحد بيانات المحكمة والولاية الاتحادية ورقم السجل ونوع الإشعار، ونربطه بملف الشركة، ونتيحه بصيغة JSON أو CSV. وتستخدمه شركات تأمين الائتمان ومكاتب التحصيل ومكاتب المحاماة وفرق الائتمان التجاري وصحفيو البيانات لتغذية أنظمتهم الخاصة.

تُرسل جميع الطلبات إلى https://germanyinsolvencies.com/api/v1. تعمل الواجهة عبر HTTPS فقط، وتقبل JSON وترد بـ JSON. لا توجد حزمة SDK إلزامية: تكفي أي لغة قادرة على إرسال طلب HTTP. تستخدم أمثلة هذه الصفحة curl وPython وNode.

الواجهة جزء من اشتراك Germany Insolvencies الذي فُعّل فيه الوصول إلى الواجهة البرمجية. تعتمد الشروط على الحجم وحالة الاستخدام ويُتفق عليها بشكل فردي.

الوصول

لا يوجد تسجيل ذاتي عن قصد. نفعّل المفاتيح يدويًا لأن بيانات الإعسار تتضمن بيانات شخصية ونريد أن نعرف الغرض من كل تكامل. عمليًا يعني ذلك رسالة قصيرة ويوم عمل واحد.

استخدم نموذج الاتصال أو راسل [email protected] واذكر أربعة أمور:

  • ما الذي تريد بناءه، في جملتين أو ثلاث.
  • أي أنواع الإشعارات والمناطق تحتاج.
  • كم تقريبًا عدد الطلبات أو الشركات التي ستفحصها شهريًا.
  • هل يمكنك استقبال خطافات الويب أم تفضل الاستعلام الدوري.

بعد ذلك تتلقى مفتاحًا شخصيًا يعمل فورًا على جميع المسارات التي يغطيها عقدك. يمكن أن يحتوي الحساب على عدة مفاتيح نشطة، فيمكن تدوير المفتاح دون أي توقف.

المصادقة

يحمل كل طلب المفتاح في الترويسة X-API-Key. وتقبل الواجهة المفتاح نفسه بديلًا بوصفه رمز حامل (bearer token) في الترويسة Authorization، وهذا مفيد للأدوات التي لا تعرف سوى هذه الترويسة.

http ترويستان متكافئتان
X-API-Key: YOUR_API_KEY

# equivalent
Authorization: Bearer YOUR_API_KEY

بدون مفتاح ترد الواجهة بـ 401 missing_api_key. ويعيد المفتاح المجهول أو المعطل 403 invalid_api_key، ويعيد الاشتراك المنتهي 403 subscription_expired. السبب موجود دائمًا في الحقل error من الاستجابة.

تعامل مع المفتاح كأنه كلمة مرور: استخدمه من جهة الخادم فقط، ولا تضعه أبدًا في شيفرة الواجهة الأمامية ولا في مستودع عام. إذا تسرب مفتاح فأبلغنا وسنبطله فورًا ونصدر لك مفتاحًا جديدًا.

البدء السريع

أكثر الطلبات شيوعًا هو أبسطها أيضًا: جميع الافتتاحات والتدابير التحفظية وحالات الرفض في يوم واحد. استدعاء واحد دون ترقيم صفحات، والجواب يصل خلال ثانية.

bash إشعارات يوم واحد
curl -H "X-API-Key: $INSOLVENCY_API_KEY" \
  "https://germanyinsolvencies.com/api/v1/filings?date=2026-09-28&types=eroeffnung,sicherung,abweisung"

بدون تاريخ تعيد الواجهة إشعارات اليوم السابق. وهذا يجعل المهمة اليومية بسيطة: سطر cron بعد السادسة صباحًا بقليل يجلب إشعارات الأمس ويكتبها في نظامك. تنشر المحاكم في أيام العمل، لذا تكون النتيجة في أيام الأحد والعطل الرسمية فارغة عادةً أو قصيرة جدًا.

وللتعبئة الرجعية للبيانات التاريخية تمر على الفترة على شكل نوافذ لا تزيد على 31 يومًا:

python تعبئة رجعية بنوافذ من 31 يومًا (Python)
import os, datetime, requests

API = "https://germanyinsolvencies.com/api/v1"
HEAD = {"X-API-Key": os.environ["INSOLVENCY_API_KEY"]}

# Backfill a quarter in 31-day windows, then keep running daily.
start, end = datetime.date(2026, 7, 1), datetime.date(2026, 9, 28)
day = start
while day <= end:
    stop = min(day + datetime.timedelta(days=30), end)
    r = requests.get(API + "/filings", headers=HEAD, params={
        "date_from": day.isoformat(),
        "date_to": stop.isoformat(),
        "types": "eroeffnung,abweisung",
    }, timeout=60)
    r.raise_for_status()
    for f in r.json()["filings"]:
        print(f["date"], f["aktenzeichen"], f["name"])
    day = stop + datetime.timedelta(days=1)

نظرة سريعة على المسارات

الطريقةالمسارالغرض
GET/v1/filingsإعلانات ليوم أو لفترة، مع التصفية حسب النوع والولاية الاتحادية والمحكمة والاسم.
GET/v1/filings/{id}إعلان واحد بنصه الكامل.
GET/v1/companiesالبحث عن الشركات التي ترد في إعلان واحد على الأقل.
GET/v1/companies/{id}ملف الشركة مع حالة الإجراء الحالية.
GET/v1/companies/{id}/filingsجميع إعلانات الشركة بترتيب زمني.
GET/v1/companies/{id}/financialsأرقام الميزانية المنشورة لآخر السنوات المالية.
POST/v1/checkفحص ما يصل إلى 500 مدين أو مورد في استدعاء واحد.
GET/v1/watchlistعرض الشركات المراقبة.
POST/v1/watchlistإضافة شركة إلى قائمة المراقبة.
DELETE/v1/watchlist/{id}إزالة شركة من قائمة المراقبة.
POST/v1/webhooksتسجيل نقطة نهاية لتلقي الإشعارات الفورية.
GET/v1/statsأعداد مجمعة حسب اليوم أو الشهر أو الولاية الاتحادية أو المحكمة أو النوع.
GET/v1/typesجميع أنواع الإشعارات مع الرمز والاسم المستعار والاسم الرسمي.
GET/v1/courtsجميع محاكم الإعسار مع الولاية الاتحادية.
GET/v1/accountالمفتاح ونطاق العقد والحدود والاستهلاك الحالي.

المسارات نسبية إلى https://germanyinsolvencies.com/api. لذلك فالعنوان الكامل للمسار الأول هو https://germanyinsolvencies.com/api/v1/filings.

جلب الإشعارات

GET /v1/filings هو قلب الواجهة. يعيد كل إعلان نُشر في الفترة المطلوبة، مرتبًا حسب تاريخ النشر، وضمن اليوم الواحد حسب ترتيب النشر.

المعاملالصيغةالوصف
dateYYYY-MM-DDيوم واحد. القيمة الافتراضية هي الأمس إذا لم يُذكر date ولا date_from/date_to.
date_fromYYYY-MM-DDبداية فترة (شاملة). له الأسبقية على date.
date_toYYYY-MM-DDنهاية فترة (شاملة). بعد date_from بـ 31 يومًا على الأكثر. إذا كان ترتيب التاريخين معكوسًا فإن الواجهة تعيد ترتيبهما.
typescsvقائمة مفصولة بفواصل من الأسماء المستعارة للأنواع أو رموزها، انظر القسم التالي. اتركه فارغًا لجميع الأنواع.
bundeslandcsvقائمة مفصولة بفواصل من الولايات الاتحادية، مكتوبة كما في الاستجابة، مثل Bayern,Hessen.
courtstringاسم محكمة الإعسار، مثل Charlottenburg (Berlin). قائمة القيم الصالحة تأتي من /v1/courts.
qstringبحث نصي كامل في اسم المدين ونص الإعلان، بثلاثة أحرف على الأقل.
formatjson | csvjson (الافتراضي) أو csv.

تحتوي الاستجابة على الفترة الفعلية ورموز الأنواع المطلوبة وعدد النتائج ومصفوفة الإعلانات. تُعاد الفترة دائمًا دفعة واحدة، ولا يوجد ترقيم صفحات في هذا المسار. حتى الأيام الحافلة تبقى أقل بكثير من ميغابايت واحد.

json الاستجابة
{
  "date_from": "2026-09-28",
  "date_to": "2026-09-28",
  "types": ["0", "1", "2"],
  "count": 142,
  "filings": [
    {
      "id": "fil_8Kq2Zp4RwT",
      "date": "2026-09-28",
      "type": "Eröffnungen",
      "type_code": "2",
      "name": "Musterbau GmbH",
      "sitz": "Berlin",
      "court": "Charlottenburg (Berlin)",
      "aktenzeichen": "36a IN 4711/26",
      "bundesland": "Berlin",
      "register": "HRB 123456 B",
      "company_id": "cmp_3n8Kd2ZpQv",
      "text": "Amtsgericht Charlottenburg (Berlin), Aktenzeichen: 36a IN 4711/26 ..."
    }
  ]
}

الطلب نفسه في Node، مصفّى على بافاريا:

javascript Node.js
const url = new URL("https://germanyinsolvencies.com/api/v1/filings");
url.searchParams.set("types", "eroeffnung");
url.searchParams.set("bundesland", "Bayern");

const res = await fetch(url, {
  headers: { "X-API-Key": process.env.INSOLVENCY_API_KEY },
});
if (!res.ok) throw new Error((await res.json()).error);

const { count, filings } = await res.json();
console.log(count, "openings in Bavaria yesterday");

يعيد GET /v1/filings/{id} إعلانًا واحدًا بنصه الكامل. المعرّف ثابت، فيمكنك تخزينه واستخدامه لاحقًا لمعرفة ما إذا كان الإعلان قد عولج من قبل.

bash إعلان واحد
curl -H "X-API-Key: $INSOLVENCY_API_KEY" \
  https://germanyinsolvencies.com/api/v1/filings/fil_8Kq2Zp4RwT

أنواع الإشعارات

تصنف محاكم الإعسار إعلاناتها في تسعة موضوعات. تقبل الواجهة في المعامل types الرمز الرقمي والاسم المستعار المقروء على حد سواء. كما تُقبل صيغ الجمع والكتابات التي تستخدم علامات الإمالة الألمانية (eroeffnungen، eröffnung).

الاسم المستعارالرمزالمعنى
sicherung0Sicherungsmaßnahmen. تدابير تحفظية، وهي في الغالب تعيين مدير مؤقت. أبكر إشارة، وتأتي عادةً بعد أيام قليلة من تقديم الطلب.
abweisung1Abweisungen mangels Masse. رفض الطلب لأن الأموال لا تغطي حتى تكاليف الإجراء. وعادةً ما تُحل الشركة بعد ذلك.
eroeffnung2Eröffnungen. افتتاح إجراء الإعسار. ومنذ تلك اللحظة تُقدَّم المطالبات إلى المدير.
entscheidung3Entscheidungen im Verfahren. قرارات أثناء الإجراء، مثل القرارات المتعلقة باجتماع الدائنين أو موعد المراجعة.
sonstiges4Sonstiges. إعلانات أخرى لا تندرج تحت موضوع آخر.
entscheidung_aufhebung5Entscheidungen nach Aufhebung. قرارات بعد إنهاء الإجراء أو إيقافه.
verteilungsverzeichnis6Verteilungsverzeichnisse. قوائم التوزيع بموجب المادة 188 من قانون الإعسار الألماني، وهي مهمة للدائنين الذين ينتظرون حصة.
restschuldbefreiung7Restschuldbefreiung. الإعفاء من الديون المتبقية، ويخص الأشخاص الطبيعيين تقريبًا دون سواهم.
insolvenzplan8Überwachte Insolvenzpläne. الإشراف على خطة إعسار، وتواصل الشركة نشاطها التجاري.

يُعاد الاسم الرسمي للنوع بالألمانية في الحقل type، تمامًا كما تنشره المحكمة. وللمعالجة الآلية استخدم type_code الذي لا يتغير أبدًا. أما القيمة المجهولة في types فتعيد 400 bad_type مع قائمة الرموز المسموح بها.

كائن الإشعار

الحقلالنوعالوصف
idstringالمعرّف الثابت للإعلان، بالبادئة fil_.
datestringتاريخ النشر على البوابة الرسمية، بصيغة YYYY-MM-DD.
typestringالاسم الرسمي لنوع الإشعار، بالألمانية.
type_codestringالرمز من 0 إلى 8، انظر أنواع الإشعارات.
namestringاسم المدين كما نُشر، بما في ذلك الشكل القانوني.
sitzstringالمقر المسجل أو محل الإقامة.
courtstringمحكمة الإعسار المختصة.
aktenzeichenstringرقم قضية المحكمة، مثل 36a IN 4711/26. يشير «IN» إلى الإجراءات العادية و«IK» إلى إجراءات المستهلكين.
bundeslandstringالولاية الاتحادية التي تتبعها المحكمة.
registerstring | nullقيد السجل التجاري إذا ذكره الإعلان. غير موجود للأشخاص الطبيعيين ولكثير من التجار الأفراد.
company_idstring | nullرابط إلى ملف الشركة إذا أمكن مطابقة المدين بشركة. وإلا فهو null.
textstringالنص الكامل للإعلان دون تغيير.

جميع الحقول النصية بترميز UTF-8. تُمرَّر الأسماء والنصوص تمامًا كما كتبتها المحكمة، بما في ذلك الأخطاء الطباعية. لا توجد قيم موحدة إلا في الحقول التي يُنص صراحةً على توحيدها: type_code وbundesland وcompany_id.

يحدد الجمع بين المحكمة ورقم القضية هوية الإجراء. وينتج الإجراء الواحد عادةً عدة إعلانات على مدى أشهر أو سنوات: تدابير تحفظية، افتتاح، قرارات، قائمة توزيع، إنهاء. وإذا أردت متابعة إجراء فاجمع حسب court مع aktenzeichen.

تصدير CSV

مع format=csv تعيد الواجهة البيانات نفسها في ملف CSV بدلًا من JSON: سطر لكل إعلان، وسطر رأس، والفاصلة هي الفاصل، وبترميز UTF-8. يأتي الملف مع Content-Disposition: attachment واسم ملف يتضمن الفترة.

bash تنزيل شهر بصيغة CSV
curl -H "X-API-Key: $INSOLVENCY_API_KEY" \
  -o filings.csv \
  "https://germanyinsolvencies.com/api/v1/filings?date_from=2026-09-01&date_to=2026-09-28&format=csv"
csv الأسطر الأولى
date,type,type_code,name,sitz,court,aktenzeichen,bundesland,register,text
2026-09-28,Eröffnungen,2,Musterbau GmbH,Berlin,Charlottenburg (Berlin),36a IN 4711/26,Berlin,HRB 123456 B,"Amtsgericht Charlottenburg ..."
2026-09-28,Sicherungsmaßnahmen,0,Beispiel Logistik UG (haftungsbeschränkt),Hamburg,Hamburg,67c IN 812/26,Hamburg,HRB 98765,"Amtsgericht Hamburg ..."

يحتوي النص الكامل في العمود text على فواصل أسطر، ولذلك يوضع بين علامات اقتباس. يفتح Excel الملف بشكل صحيح عبر «Data, from text/CSV» مع ترميز UTF-8، أما النقر المزدوج العادي فقد يشوه علامات الإمالة الألمانية بحسب إعدادات النظام.

الشركات

الإعلانات تتعلق بالإجراءات، لكن معظم حالات الاستخدام تتعلق بالشركات. لذلك يُطابَق كل إعلان مع ملف شركة حيثما أمكن، باستخدام رقم السجل والاسم والمقر المسجل. ويبحث GET /v1/companies في هذه الملفات.

bash البحث بالاسم والولاية الاتحادية
curl -G -H "X-API-Key: $INSOLVENCY_API_KEY" \
  https://germanyinsolvencies.com/api/v1/companies \
  --data-urlencode "q=Musterbau" \
  --data-urlencode "bundesland=Berlin" \
  -d limit=20

معاملات البحث هي q (الاسم، ثلاثة أحرف على الأقل) وregister وcity وbundesland وstatus وindustry. تُعاد القوائم في صفحات لا تزيد على 100 عنصر مع مؤشر (cursor):

json غلاف القائمة
{
  "object": "list",
  "data": [ { "id": "cmp_3n8Kd2ZpQv", "object": "company", "...": "..." } ],
  "has_more": true,
  "next_cursor": "eyJpZCI6ImNtcF8zbjhLZDJacFF2In0"
}

ما دامت قيمة has_more هي true فمرّر next_cursor بوصفه المعامل cursor في الطلب التالي. يبقى المؤشر صالحًا 24 ساعة.

كائن الشركة

json GET /v1/companies/cmp_3n8Kd2ZpQv
{
  "id": "cmp_3n8Kd2ZpQv",
  "object": "company",
  "name": "Musterbau GmbH",
  "legal_form": "GmbH",
  "register": "HRB 123456 B",
  "register_court": "Charlottenburg (Berlin)",
  "city": "Berlin",
  "bundesland": "Berlin",
  "industry": "Hochbau",
  "status": "opened",
  "first_filing": "2026-08-14",
  "last_filing": "2026-09-28",
  "filings_count": 3,
  "website": "https://musterbau.example",
  "url": "https://germanyinsolvencies.com/company/musterbau-gmbh-berlin/"
}
الحقلالنوعالوصف
idstringمعرّف ثابت، بالبادئة cmp_.
namestringالاسم بحسب أحدث إعلان.
legal_formstringالشكل القانوني الموحد، مثل GmbH وUG وAG وKG وe.K.
registerstring | nullرقم السجل التجاري. توجد محكمة السجل في register_court.
citystringالمقر المسجل.
bundeslandstringالولاية الاتحادية التي يقع فيها المقر المسجل.
industrystring | nullالقطاع بحسب تصنيفنا، إذا أمكن تحديده.
statusstringالمرحلة الحالية من الإجراء، انظر أدناه.
first_filingstringتاريخ أول إعلان معروف.
last_filingstringتاريخ أحدث إعلان.
filings_countintegerعدد الإعلانات المرتبطة بهذه الشركة.
urlstringصفحة الشركة العامة على germanyinsolvencies.com.

قيم الحالة

تُشتق الحالة من أحدث إعلان ذي صلة في الإجراء. وهي ملخص عملي لا تقييمًا قانونيًا: وعند الشك يسري النص الكامل للإعلان.

الحالةرموز الأنواعالمعنى
preliminary0إجراء تمهيدي، صدرت تدابير تحفظية.
dismissed1رُفض الطلب لعدم كفاية الأموال.
opened2افتُتح الإجراء.
plan8صودق على خطة الإعسار، والإشراف مستمر.
closed3, 5, 6أُنهي الإجراء أو أُوقف.
discharged7مُنح الإعفاء من الديون المتبقية.

يعيد GET /v1/companies/{id}/filings جميع إعلانات الشركة، من الأقدم إلى الأحدث. وبذلك تحصل على التاريخ الكامل للإجراء دون أن تبحث بنفسك برقم القضية.

أرقام الميزانية

بالنسبة إلى الشركات المساهمة غالبًا ما تتوافر الحسابات السنوية المودعة في السجل التجاري. يعيد GET /v1/companies/{id}/financials الأرقام الرئيسية لآخر السنوات المالية، من الأحدث إلى الأقدم. المبالغ بالأورو الكامل.

json الاستجابة
{
  "company_id": "cmp_3n8Kd2ZpQv",
  "currency": "EUR",
  "statements": [
    {
      "fiscal_year_to": "2024-12-31",
      "bilanzsumme": 4820000,
      "eigenkapital": -310000,
      "verbindlichkeiten": 5130000,
      "jahresueberschuss": -1240000,
      "source": "Unternehmensregister"
    },
    {
      "fiscal_year_to": "2023-12-31",
      "bilanzsumme": 5410000,
      "eigenkapital": 930000,
      "verbindlichkeiten": 4480000,
      "jahresueberschuss": 85000,
      "source": "Unternehmensregister"
    }
  ]
}

الشركات الصغيرة ملزمة بنشر ميزانية مختصرة فقط. والحقول غير الواردة في الإيداع تكون null ولا تُقدَّر أبدًا. ولهذا السبب كثيرًا ما يغيب صافي الربح السنوي.

استخدام نموذجي: عند اتخاذ قرار ائتماني، يخبرك تطور حقوق الملكية على مدى آخر سنتين أو ثلاث سنوات مالية بأكثر مما يخبرك به إعلان الإعسار وحده. وحقوق الملكية السالبة مع تدبير تحفظي صورة واضحة.

فحص الأطراف المقابلة

يفحص POST /v1/check قائمة كاملة من العملاء أو الموردين في استدعاء واحد. ترسل مرجعك الخاص وما تعرفه عن الشركة: الاسم والمدينة ورقم السجل. وتعيد الواجهة لكل عنصر درجة المطابقة وحالة الإجراء.

bash فحص ثلاثة مدينين
curl https://germanyinsolvencies.com/api/v1/check \
  -H "X-API-Key: $INSOLVENCY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "since": "2025-01-01",
    "items": [
      { "ref": "D-10023", "name": "Musterbau GmbH", "city": "Berlin" },
      { "ref": "D-10024", "register": "HRB 98765", "register_court": "Hamburg" },
      { "ref": "D-10025", "name": "Nordlicht Handels GmbH" }
    ]
  }' 
json الاستجابة
{
  "checked": 3,
  "hits": 1,
  "results": [
    {
      "ref": "D-10023",
      "match": "exact",
      "company_id": "cmp_3n8Kd2ZpQv",
      "status": "opened",
      "last_filing": { "id": "fil_8Kq2Zp4RwT", "date": "2026-09-28", "type_code": "2" }
    },
    { "ref": "D-10024", "match": "none" },
    { "ref": "D-10025", "match": "ambiguous", "candidates": 2 }
  ]
}
matchالمعنى
exactرقم السجل مطابق، أو الاسم والمقر متطابقان دون لبس.
probableالاسم مطابق بعد التوحيد (الشكل القانوني، الإملاء) والمقر معقول. يرجى التحقق قبل التصرف بناءً عليه.
ambiguousعدة شركات تناسب المعطيات. تحتوي الاستجابة على عدد المرشحين؛ أضف المدينة أو رقم السجل.
noneلا يوجد إعلان في الفترة. هذا خبر جيد، لكنه ليس تصنيفًا ائتمانيًا.

يقبل الاستدعاء الواحد ما يصل إلى 500 عنصر. يحصر since البحث في الإعلانات منذ ذلك التاريخ، والافتراضي ثلاث سنوات إلى الوراء. وللمحافظ الكبيرة نوصي بقائمة المراقبة: افحص مرة واحدة، ثم تلقَّ التغييرات فقط.

قائمة المراقبة

تحول قائمة المراقبة الفحص لمرة واحدة إلى مراقبة مستمرة. تضيف الشركات، وبمجرد ظهور إعلان جديد لإحداها تتلقى الحدث watchlist.match عبر خطاف الويب. يمكن تحديد العناصر بواسطة company_id، أو برقم السجل والمحكمة، أو بالاسم والمدينة.

bash إضافة شركة
curl https://germanyinsolvencies.com/api/v1/watchlist \
  -H "X-API-Key: $INSOLVENCY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "register": "HRB 123456 B", "register_court": "Charlottenburg (Berlin)", "ref": "D-10023" }' 
json الاستجابة
{
  "id": "wl_Q7m2Lx9Pd",
  "object": "watchlist_entry",
  "ref": "D-10023",
  "company_id": "cmp_3n8Kd2ZpQv",
  "name": "Musterbau GmbH",
  "created_at": "2026-09-29T08:12:44Z",
  "last_match": null
}

يمكن أيضًا مراقبة شركات لم تتعثر قط. عندئذ يبقى العنصر في الانتظار حتى يظهر أول إعلان، وهذا هو المقصود تمامًا. ويعود مرجعك الخاص في ref مع كل حدث، فيمكنك ربط النتيجة برقم عميلك دون بحث إضافي.

يعرض GET /v1/watchlist جميع العناصر مع تاريخ آخر نتيجة، ويزيل DELETE /v1/watchlist/{id} عنصرًا. قائمة المراقبة نفسها تظهر في لوحة تحكم Germany Insolvencies الخاصة بك، وتتزامن التغييرات في الاتجاهين.

خطافات الويب

بدلًا من الاستعلام الدوري يمكنك أن تُدفع إليك الأحداث. سجّل نقطة نهاية HTTPS واختر الأحداث، مع إمكانية استخدام المرشحات نفسها الخاصة بـ /v1/filings.

bash تسجيل نقطة نهاية
curl https://germanyinsolvencies.com/api/v1/webhooks \
  -H "X-API-Key: $INSOLVENCY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com/hooks/insolvency",
    "events": ["watchlist.match", "filing.published"],
    "filter": { "types": ["eroeffnung", "sicherung"], "bundesland": ["Bayern", "Hessen"] }
  }' 
الحدثمتى
filing.publishedإعلان جديد يطابق مرشحك. يصل بعد وقت قصير من جمعنا له، وعادةً في الصباح.
watchlist.matchإعلان جديد يخص شركة في قائمة المراقبة لديك.
stats.daily_readyاكتملت أرقام اليوم السابق اليومية.
json حمولة الحدث
{
  "id": "evt_5Tg8Nw2Ka",
  "type": "watchlist.match",
  "created_at": "2026-09-29T06:05:11Z",
  "data": {
    "watchlist_entry": { "id": "wl_Q7m2Lx9Pd", "ref": "D-10023" },
    "filing": {
      "id": "fil_8Kq2Zp4RwT",
      "date": "2026-09-28",
      "type": "Eröffnungen",
      "type_code": "2",
      "name": "Musterbau GmbH",
      "court": "Charlottenburg (Berlin)",
      "aktenzeichen": "36a IN 4711/26"
    }
  }
}

كل استدعاء موقّع. تحتوي الترويسة X-Webhook-Signature على طابع زمني وعلى HMAC-SHA256 محسوب على الطابع الزمني والجسم الخام، باستخدام السر الذي تتلقاه عند التسجيل.

http ترويسة التوقيع
X-Webhook-Signature: t=1790661911,v1=7f2c1d9a4b6e8035c1f7a29d4e5b0c8371a6d2f94e8b3c07a15d9e2f6b4c8a01
python التحقق من التوقيع (Python، Flask)
import hashlib, hmac, os, time
from flask import Flask, request, abort

app = Flask(__name__)
SECRET = os.environ["INSOLVENCY_WEBHOOK_SECRET"].encode()

@app.post("/hooks/insolvency")
def hook():
    header = request.headers.get("X-Webhook-Signature", "")
    parts = dict(p.split("=", 1) for p in header.split(",") if "=" in p)
    signed = parts.get("t", "") + "." + request.get_data(as_text=True)
    expected = hmac.new(SECRET, signed.encode(), hashlib.sha256).hexdigest()
    if not hmac.compare_digest(expected, parts.get("v1", "")):
        abort(400)
    if abs(time.time() - int(parts["t"])) > 300:
        abort(400)  # replay protection

    event = request.get_json()
    if event["type"] == "watchlist.match":
        ref = event["data"]["watchlist_entry"]["ref"]
        print("Customer", ref, "has a new insolvency filing")
    return "", 204

أجب بحالة 2xx خلال عشر ثوانٍ. وإن فشل ذلك أعدنا المحاولة بفواصل متزايدة على مدى 24 ساعة، بواقع ثماني مرات في المجموع. قد يصل الحدث مرتين، لذا استخدم id الحدث لتجاهل التكرارات.

الإحصاءات

يعيد GET /v1/stats أعدادًا بدلًا من الإعلانات الفردية. هذا هو المسار المناسب للوحات المعلومات والتقارير والتحليلات الصحفية، لأنه لا يتطلب تنزيل آلاف السجلات وعدّها.

bash الافتتاحات لكل شهر وولاية اتحادية
curl -G -H "X-API-Key: $INSOLVENCY_API_KEY" \
  https://germanyinsolvencies.com/api/v1/stats \
  -d date_from=2026-07-01 -d date_to=2026-09-28 \
  -d group_by=month,bundesland -d types=eroeffnung
json الاستجابة
{
  "date_from": "2026-07-01",
  "date_to": "2026-09-28",
  "group_by": ["month", "bundesland"],
  "rows": [
    { "month": "2026-07", "bundesland": "Bayern",  "count": 318 },
    { "month": "2026-07", "bundesland": "Berlin",  "count": 204 },
    { "month": "2026-08", "bundesland": "Bayern",  "count": 297 }
  ],
  "total": 8412
}

يقبل group_by القيم day وweek وmonth وbundesland وcourt وtype وlegal_form، حتى اثنتين معًا. وتنطبق المرشحات نفسها الخاصة بـ /v1/filings. وخلافًا للإشعارات، يمكن أن تمتد الفترة هنا حتى 24 شهرًا.

تعدّ أرقامنا الإعلانات، لا الإجراءات ولا الشركات. وهي تسبق الإحصاءات الرسمية للمكتب الاتحادي للإحصاء بعدة أسابيع، لكنها ليست مطابقة لها، لأن Destatis يعدّ الطلبات والقرارات.

البيانات المرجعية

يعيد مساران صغيران القيم الصالحة للمرشحات. نادرًا ما تتغير ويمكن تخزينها مؤقتًا ليوم كامل.

json GET /v1/types (مقتطف)
[
  { "code": "0", "alias": "sicherung",   "name": "Sicherungsmaßnahmen" },
  { "code": "1", "alias": "abweisung",   "name": "Abweisungen mangels Masse" },
  { "code": "2", "alias": "eroeffnung",  "name": "Eröffnungen" }
]

يعيد GET /v1/courts جميع محاكم الإعسار بالإملاء الدقيق الذي يتوقعه المرشح court ومعها الولاية الاتحادية. ويعرض GET /v1/account نطاق عقدك والحدود الفعالة والاستهلاك في الشهر الجاري.

الأخطاء

تعود الأخطاء بصيغة JSON مع حالة HTTP مناسبة. الحقل error مقروء آليًا وثابت، أما message فيشرح المشكلة للبشر وقد يتغير.

json استجابة خطأ
{
  "error": "range_too_large",
  "message": "Maximum range is 31 days per request."
}
errorHTTPالمعنى
bad_date400التاريخ ليس بصيغة YYYY-MM-DD.
bad_type400قيمة مجهولة في types. تحتوي الاستجابة أيضًا على allowed.
range_too_large400فترة أطول من 31 يومًا.
invalid_request400معامل آخر غير صالح أو جسم JSON مشوه.
missing_api_key401لم يُرسل مفتاح.
invalid_api_key403المفتاح مجهول أو الوصول إلى الواجهة معطل.
subscription_expired403انتهى الاشتراك الذي يقف خلف المفتاح.
insufficient_scope403المفتاح غير مفعّل لهذا المسار.
not_found404المعرّف مجهول، أو حُذف الإعلان بعد انقضاء مدة الاحتفاظ به.
rate_limited429طلبات كثيرة جدًا، انظر الحدود.
server_error500خطأ من جانبنا. أعد المحاولة بعد انتظار قصير، وأخبرنا إن استمر.
json bad_type مع القيم المسموح بها
{
  "error": "bad_type",
  "message": "Unknown type 'eroffnung'.",
  "allowed": ["0", "1", "2", "3", "4", "5", "6", "7", "8"]
}

الحدود

القيمةالحد
120 / minالطلبات في الدقيقة لكل مفتاح. أعلى عند الطلب.
31الحد الأقصى للأيام في الطلب الواحد على /v1/filings. يسمح /v1/stats بـ 24 شهرًا.
100الحد الأقصى للعناصر في الصفحة في مسارات القوائم.
500الحد الأقصى للعناصر في الاستدعاء الواحد على /v1/check.
10000الشركات المراقبة لكل حساب في العقد القياسي.
5نقاط نهاية خطافات الويب المسجلة لكل حساب.

تحمل كل استجابة الحالة الراهنة لحد المعدل في ترويساتها. وإذا تجاوزته تتلقى 429 rate_limited وترويسة Retry-After بالثواني.

http ترويسات حد المعدل
X-RateLimit-Limit: 120
X-RateLimit-Remaining: 117
X-RateLimit-Reset: 1790661960
Retry-After: 12

إصدارات الواجهة

الإصدار الرئيسي جزء من المسار (/v1/). ضمن الإصدار الرئيسي نجري تغييرات إضافية فقط: مسارات جديدة، ومعاملات اختيارية جديدة، وحقول جديدة في الاستجابات. لذلك ينبغي لعميلك أن يتجاهل الحقول المجهولة بدلًا من أن يفشل عندها.

التغييرات التي قد تكسر التكاملات القائمة لا تحدث إلا في إصدار رئيسي جديد. عندئذ يستمر الإصدار السابق في العمل اثني عشر شهرًا على الأقل، ونبلغ كل صاحب مفتاح بالبريد الإلكتروني مسبقًا. وتاريخ إصدار الاستجابة موجود في الترويسة X-API-Version.

http ترويسة الاستجابة
X-API-Version: 2026-09-01

مصادر البيانات وحداثتها

المصدر الوحيد للإعلانات هو البوابة المشتركة الرسمية للولايات الاتحادية، insolvenzbekanntmachungen.de، التي تنشر عليها جميع محاكم الإعسار الألمانية بموجب المادة 9 من قانون الإعسار الألماني. لا نضيف إعلانات من مصادر أخرى ولا نغير محتواها.

تنشر المحاكم في أيام العمل، غالبًا خلال الليل وفي الصباح. وتتوافر الإعلانات الجديدة في الواجهة عادةً قبل السابعة من صباح اليوم التالي. تُثرى ملفات الشركات وأرقام السجل من السجل التجاري، وتأتي أرقام الميزانية من الحسابات السنوية المنشورة هناك.

مطابقة الإعلانات مع الشركات آلية. ومع رقم السجل تكون موثوقة؛ وبدونه (التجار الأفراد والأسماء الشائعة جدًا) تكون الأخطاء واردة. لهذا قد يكون company_id بقيمة null، ولهذا يميز فحص الأطراف المقابلة بين exact وprobable.

حماية البيانات والاستخدام المسموح

إعلانات الإعسار علنية، لكنها تتضمن بيانات شخصية، خصوصًا في إجراءات المستهلكين. ويخضع استخدامها للائحة GDPR ولمدد الحذف المنصوص عليها في لائحة إعلانات الإعسار. لذلك نحذف الإعلانات من الواجهة في موعد أقصاه الوقت الذي يتعين فيه على البوابة الرسمية حذفها، ويعيد GET /v1/filings/{id} عندئذ 404 not_found.

يرجى أن تعكس هذا الحذف في أنظمتك. تكفي مقارنة دورية عبر المعرّفات التي خزنتها: ما لم تعد الواجهة تعرفه ينبغي ألا يبقى في قاعدة بياناتك كذلك.

الاستخدامات المسموح بها هي تقييم المخاطر التجارية وإدارة المستحقات والاستشارات القانونية والبحث والصحافة. أما الاستخدامات غير المسموح بها فهي: نشر إعلانات تخص أفرادًا، وإعادة بيع البيانات الخام، واتخاذ قرارات بشأن أشخاص طبيعيين تستند إلى هذه البيانات وحدها. وإذا كنت تعالج بيانات شخصية بالنيابة عنا فتتوافر اتفاقية معالجة بيانات.

الدعم

للأسئلة حول التكامل أو الحدود الأعلى أو الحقول الإضافية: [email protected] أو نموذج الاتصال. وللمشكلات التقنية يرجى ذكر وقت الطلب وأول أحرف من مفتاحك، فنجد الطلب في السجلات على الفور.

إذا كنت تريد ربط وكلاء الذكاء الاصطناعي بدلًا من كتابة عملاء HTTP، فالبيانات نفسها متاحة عبر خادم Model Context Protocol الموثق في خادم MCP. يشترك الاثنان في المفاتيح والحدود والعقد.

طلب الوصول

تُصدر المفاتيح يدويًا. أخبرنا باختصار بما تريد بناءه وبالحجم المتوقع، وغالبًا ما يصبح الوصول جاهزًا خلال يوم عمل واحد.

طلب الوصول