التحليلات

كل نقطة نهاية لتحليلات الملف التجاري مع مثال باستخدام cURL وPython وNode: مقاييس يومية من Google وFacebook ومشاهدات أسبوعية من Bing لموقع.

توضح تحليلات الملف التجاري عدد مرات ظهور الموقع والإجراءات التي اتُّخذت بشأنه على كل منصة نشر: مرات الظهور، ومشاهدات الصفحة، وطلبات الاتجاهات، والمكالمات، والنقرات على الموقع الإلكتروني. توجد 3 نقاط نهاية، واحدة لكل منصة نشر، وجميعها مخصصة للقراءة، لذا يكفي مفتاح Read (قراءة). كل مقياس عبارة عن سلسلة زمنية من نقاط { startTime, value }؛ ولا تُرجع واجهة API إجماليات في صورة قيم مفردة، لذا فإن المجاميع التي تعرضها هي التي تحسبها بنفسك.

نظرة سريعة على نقاط النهاية

الطريقةالمسارالوظيفةالمرجع
GET/locations/{locationId}/google-analytics9 سلاسل يومية من Google Business Profile.تحليلات Google
GET/locations/{locationId}/facebook-analytics5 سلاسل يومية من صفحة Facebook.تحليلات Facebook
GET/locations/{locationId}/bing-analyticsسلسلة أسبوعية واحدة من Bing Places.تحليلات Bing

تشترك نقاط النهاية الثلاث في المعاملات نفسها. كلٌّ من fromDate وtoDate بالتنسيق YYYY-MM-DD، وكلاهما اختياري؛ إذا أغفلتهما، تُستخدم الفترة الحديثة الافتراضية لمنصة النشر. يقبل المسار معرّف Relay بترميز base64 أو الرقم مباشرةً. إذا لم تكن القيمة أيًّا منهما، تُرجع نقطة النهاية 200 مع تعيين كائن insights إلى null وإرفاق مصفوفة errors، وهو ما يبدو كحالة ملف تجاري غير متصل، لذا تحقّق من errors أولًا.

قراءة مقاييس Google لنطاق زمني

تُرجع GET /locations/{locationId}/google-analytics الكائن data.googleInsights مع سلسلة يومية واحدة لكل مقياس. يمثل total مرات ظهور الملف التجاري، أي search مضافًا إليه maps؛ ولا يشمل مقاييس الإجراءات. استخدمه لإعداد تقرير يقارن مستوى الظهور قبل تغيير البيانات وبعده.

الاسمالموضعمطلوبملاحظات
locationIdpathنعممعرّف Relay بترميز Base64 أو databaseId رقمي.
fromDatequeryلابداية النطاق، YYYY-MM-DD. تُستخدم فترة حديثة افتراضيًا.
toDatequeryلانهاية النطاق، YYYY-MM-DD.
Google
curl "https://listingsapi.com/api/v4/locations/TG9jYXRpb246MTgwMDI4OQ==/google-analytics?fromDate=2026-08-01&toDate=2026-08-31" \-H "Authorization: API $LISTINGSAPI_KEY"
JSON
{  "data": {    "googleInsights": {      "total": [        { "startTime": "2026-08-01T00:00:00+00:00", "value": 412 },        { "startTime": "2026-08-02T00:00:00+00:00", "value": 388 }      ],      "search": [{ "startTime": "2026-08-01T00:00:00+00:00", "value": 300 }],      "maps": [{ "startTime": "2026-08-01T00:00:00+00:00", "value": 112 }],      "directionsAction": [{ "startTime": "2026-08-01T00:00:00+00:00", "value": 24 }],      "phoneAction": [{ "startTime": "2026-08-01T00:00:00+00:00", "value": 8 }],      "websiteAction": [{ "startTime": "2026-08-01T00:00:00+00:00", "value": 41 }],      "businessBookings": [{ "startTime": "2026-08-01T00:00:00+00:00", "value": 0 }],      "businessFoodOrders": [{ "startTime": "2026-08-01T00:00:00+00:00", "value": 0 }],      "businessFoodMenuClicks": [{ "startTime": "2026-08-01T00:00:00+00:00", "value": 0 }]    }  }}

يمثل startTime في كل نقطة اليوم الذي يُجمَّع العدد ضمنه. في المثال، تبلغ قيمة total في اليوم الأول 412، وهي 300 من search مضافًا إليها 112 من maps.

السلسلةالمعنى
totalمرات ظهور الملف التجاري، أي search مضافًا إليه maps.
searchمرات الظهور في نتائج Google Search على أجهزة الكمبيوتر والأجهزة المحمولة مجتمعةً.
mapsمرات الظهور في نتائج Google Maps على أجهزة الكمبيوتر والأجهزة المحمولة مجتمعةً.
directionsActionطلبات الاتجاهات إلى الموقع.
phoneActionالنقرات على زر الاتصال.
websiteActionالنقرات للانتقال إلى الموقع الإلكتروني.
businessBookingsالحجوزات التي بُدئ بها من الملف التجاري.
businessFoodOrdersطلبات الطعام التي أُجريت من الملف التجاري.
businessFoodMenuClicksالنقرات على رابط قائمة الطعام.

تكون قيمة المقياس null، وليست مصفوفة فارغة، عندما لا تتوفر للموقع بيانات من Google خلال الفترة أو عندما لا يكون ملفه التجاري على Google متصلًا. تعامل مع null و[] بالطريقة نفسها عند التجميع.

قراءة مقاييس Facebook لنطاق زمني

تتبع GET /locations/{locationId}/facebook-analytics البنية نفسها ضمن data.facebookInsights، مع 5 سلاسل يومية. وتتطلب أن تكون صفحة Facebook الخاصة بالموقع متصلة. يُستخدم ctaAction لقياس أداء زر "احجز الآن" أو "اتصل الآن" خلال فترة الحملة.

الاسمالموضعمطلوبملاحظات
locationIdpathنعممعرّف Relay بترميز Base64 أو databaseId رقمي.
fromDatequeryلابداية النطاق، YYYY-MM-DD. تُستخدم فترة حديثة افتراضيًا.
toDatequeryلانهاية النطاق، YYYY-MM-DD.
Facebook
curl "https://listingsapi.com/api/v4/locations/TG9jYXRpb246MTgwMDI4OQ==/facebook-analytics?fromDate=2026-08-01&toDate=2026-08-31" \-H "Authorization: API $LISTINGSAPI_KEY"
JSON
{  "data": {    "facebookInsights": {      "views": [{ "startTime": "2026-08-01T00:00:00+00:00", "value": 120 }],      "ctaAction": [{ "startTime": "2026-08-01T00:00:00+00:00", "value": 5 }],      "directionsAction": [{ "startTime": "2026-08-01T00:00:00+00:00", "value": 3 }],      "phoneAction": [{ "startTime": "2026-08-01T00:00:00+00:00", "value": 2 }],      "websiteAction": [{ "startTime": "2026-08-01T00:00:00+00:00", "value": 9 }]    }  }}
السلسلةالمعنى
viewsإجمالي مشاهدات الصفحة.
ctaActionالنقرات على زر الدعوة إلى اتخاذ إجراء في الصفحة.
directionsActionطلبات الاتجاهات عبر الصفحة.
phoneActionالمكالمات التي بُدئ بها من الصفحة.
websiteActionالنقرات للانتقال من الصفحة إلى الموقع الإلكتروني.

لا يوجد مقياس لإعجابات الصفحة. تُرجع كل سلسلة القيمة null عندما لا تتوفر للصفحة بيانات ضمن النطاق أو عندما لا تكون متصلة، لذا تحقّق من null قبل التكرار عبر عناصرها.

قراءة مشاهدات Bing لنطاق زمني

يُرجع GET /locations/{locationId}/bing-analytics سلسلة واحدة، data.bingInsights.views، مجمّعة حسب الأسبوع بدلاً من اليوم. تمثل كل نقطة عدد المشاهدات لأسبوع واحد يبدأ عند startTime. تُحدَّث البيانات كل يوم اثنين للأسبوع السابق، لذا فإن أحدث أسبوع مكتمل هو آخر أسبوع ستراه. اجلب نطاقاً يمتد لعدة أشهر للحصول على خط اتجاه؛ فهو غير مناسب لإسناد النتائج على مستوى اليوم.

الاسمالموضعمطلوبملاحظات
locationIdpathنعممعرّف Relay بترميز Base64 أو databaseId رقمي.
fromDatequeryلابداية النطاق، YYYY-MM-DD. تكون القيمة الافتراضية ضمن فترة زمنية حديثة.
toDatequeryلانهاية النطاق، YYYY-MM-DD.
Bing
curl "https://listingsapi.com/api/v4/locations/TG9jYXRpb246MTgwMDI4OQ==/bing-analytics?fromDate=2026-06-01&toDate=2026-08-31" \-H "Authorization: API $LISTINGSAPI_KEY"
JSON
{  "data": {    "bingInsights": {      "views": [        { "startTime": "2026-06-01T00:00:00+00:00", "value": 73 },        { "startTime": "2026-06-08T00:00:00+00:00", "value": 58 }      ]    }  }}
السلسلةالمعنى
viewsمشاهدات الملف التجاري على Bing Places، بنقطة واحدة لكل أسبوع.

على خلاف Google وFacebook، يشير Bing إلى عدم وجود بيانات بمصفوفة views فارغة مع 200، وليس بصيغة null. تعامل مع كلتا الحالتين على أنهما "لا شيء لعرضه"، وتحقق من length == 0 إذا أردت إظهار عبارة "لا توجد بيانات"، لأن مجموع عناصر المصفوفة الفارغة يساوي 0.

الأخطاء التي ستواجهها

لا تذكر الصفحات المرجعية أي رموز أخطاء خاصة بموارد التحليلات. الحالات التي ستواجهها:

الرمزالمعنىالحل
401 مع SY90001مفتاح API مفقود أو غير صالح.أرسل Authorization: API $LISTINGSAPI_KEY.
200 مع ضبط googleInsights أو facebookInsights أو bingInsights على null ووجود مصفوفة errorslocationId ليس رقماً ولا معرّف Relay قابلاً لفك الترميز.مرّر المعرّف بترميز base64 الذي أرجعته نقطة نهاية للقراءة. لا تطبّق عليه ترميز URL.
200 مع مقياس بقيمة null في Google وFacebook أو مصفوفة views فارغة في Bing، ومن دون errorsلا توجد بيانات للفترة الزمنية، أو أن منصة النشر غير متصلة.اعرض "غير متاح"، وليس صفراً. اربط الحساب.
429حد معدل الطلبات.انتظر Retry-After. راجع حدود معدل الطلبات.

القائمة الكاملة موجودة في رموز الأخطاء.

الخطوات التالية