/api/v4/locations/{locationId}/reviewsعرض قائمة التفاعلات لموقع
يُرجع قائمة بالتقييمات والتفاعلات الاجتماعية لموقع واحد، مقسّمة إلى صفحات باستخدام المؤشر، مع إمكانية التصفية.
المعلمات
المسار
| الاسم | النوع | مطلوب | الوصف |
|---|---|---|---|
| locationId | string | مطلوب | Location ID, a raw numeric database ID (e.g. `1800289`) or its Base64-encoded Relay ID (e.g. `TG9jYXRpb246MTgwMDI4OQ==`). |
الاستعلام
| الاسم | النوع | مطلوب | الوصف | الافتراضي |
|---|---|---|---|---|
| siteUrls | string | اختياري | JSON-encoded array of publisher hostnames to include, e.g. `["maps.google.com","yelp.com"]`. | — |
| startDate | string | اختياري | Start of the date-range filter (YYYY-MM-DD). | — |
| endDate | string | اختياري | End of the date-range filter (YYYY-MM-DD). | — |
| searchString | string | اختياري | Full-text search across interaction content. | — |
| category | string | اختياري | Single interaction category, e.g. `REVIEW`. | — |
| categories | string | اختياري | JSON-encoded array of interaction categories. | — |
| ratingFilters | string | اختياري | JSON-encoded array of star ratings to include, e.g. `[3,4]`. | — |
| ratingFilter | integer | اختياري | Single star rating to filter by. | — |
| responseStatus | string | اختياري | JSON-encoded response-status filter. Values: `RESPONDED`, `PENDING`. | — |
| sortOrder | string | اختياري | JSON-encoded sort order. Values: `NEWEST_FIRST`, `OLDEST_FIRST`, `LAST_RESPONDED`. | — |
| first | integer | اختياري | Number of records to return from the beginning (newest first). Defaults to 20 when omitted, the endpoint always returns a single page, never the whole history. | — |
| after | string | اختياري | Cursor to page forward from. Pass `pageInfo.endCursor`, or equivalently the `cursor` of the last edge in the previous page. | — |
| last | integer | اختياري | Number of records to return from the end. | — |
| before | string | اختياري | Cursor to page backward from, used with `last`. Pass the `cursor` of the first edge of the page you are moving back from. `pageInfo` carries no `startCursor` field, so the edge cursor is the value to use. | — |
الاستجابات
200Paginated interactions result. `data.interactions` holds the connection.
{ "data": { "interactions": { "pageInfo": { "hasNextPage": true, "hasPreviousPage": false, "endCursor": "SW50ZXJhY3Rpb246MV8xNTU0MjQzMDczMDM2LTllMjZkMmE4LWE2ZWQtNDJlYS04NDU0LTQ3ZDFjOTJlYTg0MQ==" }, "edges": [ { "node": { "id": "9e26d2a8-a6ed-42ea-8454-47d1c92ea841", "source": "maps.google.com", "content": "nice place for family together", "authorName": "vaibhav nakate", "rating": 5, "date": "2019-04-02T22:11:13.036997+00:00", "category": "Review", "type": "Review", "responded": false, "responseCount": 0, "canRespond": true, "permalink": "https://maps.google.com/maps?cid=..." }, "cursor": "SW50ZXJhY3Rpb246MV8xNTU0MjQzMDczMDM2LTllMjZkMmE4LWE2ZWQtNDJlYS04NDU0LTQ3ZDFjOTJlYTg0MQ==" } ], "totalCount": 425 } }}401Unauthenticated, missing or invalid API key.
429Rate limit exceeded. Retry after the `Retry-After` header value.
يُرجع التقييمات والتفاعلات الاجتماعية لموقع باستخدام تقسيم الصفحات المستند إلى المؤشر. تُرتَّب النتائج افتراضيًا من الأحدث إلى الأقدم. يوجد الاتصال في data.interactions ويحتوي على edges[].node (راجع مرجع سمات التفاعل)، وعلى endCursor داخل pageInfo، وعلى totalCount.
يمثّل totalCount عدد التفاعلات المطابقة لعوامل التصفية عبر مجموعة النتائج بأكملها، وليس العدد المُرجَع في هذه الصفحة. استخدمه لتقدير حجم عملية استرجاع البيانات السابقة أو للتحقق من العدد الذي حسبته: فموقع لديه totalCount: 450 وتُقرأ بياناته باستخدام first=50 يتطلب 9 طلبات، وينبغي أن يبلغ مجموع الأعداد 450 عند الوصول إلى النهاية. يؤدي إغفال first إلى إرجاع 20 سجلًا، لذا لا يعيد استدعاء واحد كل التفاعلات السابقة أبدًا.
حالة استخدام: صندوق وارد للتقييمات لكل متجر
لإنشاء صندوق وارد للتقييمات لموقع واحد، انتقل إلى الصفحات التالية باستخدام first وafter: اطلب first=25، ثم مرّر قيمة pageInfo.endCursor الواردة في الاستجابة بوصفها after في الاستدعاء التالي. تحمل كل حافة أيضًا قيمة cursor الخاصة بها، وتكون قيمة cursor للحافة الأخيرة هي قيمة endCursor لتلك الصفحة، لذا يمكن استخدام أيٍّ من القيمتين بوصفها after. توقّف عندما تكون قيمة hasNextPage هي false أو عندما تُرجع صفحة مصفوفة edges فارغة، وتحقّق من كلا الشرطين، لأن الصفحة التي تقع نهايتها عند أقدم تقييم تمامًا تتبعها صفحة أخيرة فارغة. أضف responseStatus=["PENDING"] لعرض التقييمات التي لا تزال تنتظر ردًا من المالك فقط، أو ratingFilters=[1,2] لفرز التقييمات السلبية والتعامل معها أولًا. من كل node، تكون قيمة id هي ما تمرّره إلى الرد على تفاعل، ويبيّن لك canRespond ما إذا كان ذلك المصدر يقبل ردود المالك.
حالة استخدام: المزامنة التزايدية
لإبقاء نسخة محلية متزامنة، صفِّ النتائج باستخدام startDate/endDate ورتّبها باستخدام sortOrder=["NEWEST_FIRST"]، مع حفظ أعلى قيمة date صادفتها. لاحظ أن نقطة النهاية هذه تُرجع النتائج على صفحات وتخضع لحدود معدل الطلبات، لذا التزم بترويسة Retry-After عند تلقي 429 وتجنّب إعادة جلب كل التفاعلات السابقة في كل تشغيل.
تتوفر Google Maps وFacebook في كل خطة. تتوفر Yelp في خطتَي Growth وEnterprise. تُمرَّر عوامل التصفية المرمَّزة بصيغة JSON (siteUrls، categories، ratingFilters، responseStatus، sortOrder) كسلاسل نصية بصيغة JSON خاضعة لترميز URL.
curl -X GET 'https://listingsapi.com/api/v4/locations/<locationId>/reviews' \ -H "Authorization: API $LISTINGSAPI_KEY"