List stored competitive reports

Overview

List every competitive report stored for one store location, newest first (paginated), so the account can re-open a past report. Use each row's competitive_report_id with Check status (poll until complete) to fetch the full payload. DB-only read — never calls ReviewData and never counts usage. Optional status/publisher/theme/foreign_key filters narrow the list. The summary carries store-wide status counts and the total reviews scored for the page header.

Prerequisites

  • A bearer token. Callable with Partner and Account tokens.

Base URL

EnvironmentURL
Productionhttps://production-api.shoutaboutus.com
Developmenthttps://development-api.shoutaboutus.com

Endpoint

POST /api/v1/account/competitive-report/list

Authentication

  • Requires a bearer token in the Authorization: Bearer <bearer-token> header.

  • Who can call it: Partner and Account tokens.

  • The route sits directly under the authenticated group, not behind partner-only access.

  • The store must sit inside your own account tree, keyed on store_id.

  • Reports cover only that one store, so a Partner can list any store in its tree, an Account only its own.

Rate limit

  • No rate limit.

Request body

  • Body (success wrapped as { data. }, HTTP 200):
FieldTypeRequiredDescription
store_idintegeryesMust be an existing location inside your own account tree.
statusstringnomax:32. Listing chip; mapped to raw DB statuses (queued, then queued/pending, in_progress, then waiting_for_scrape/processing/running, succeeded, then succeeded/success/complete/completed, failed, then failed/error).
publisherstringnomax:64. Exact match.
themestringnomax:64. Exact match.
foreign_keystringnomax:64. Accepts competitor_{id} or a bare id; non-numeric matches nothing.
per_pageintegerno10–100 (values below 10 are raised to 10); defaults to 50.
pageintegernomin:1; defaults to 1.
{
  "store_id": 42,
  "status": "succeeded",
  "publisher": "google",
  "theme": "home-services",
  "foreign_key": "competitor_1001",
  "per_page": 50,
  "page": 1
}

Response

  • reports[] (array of objects):
  • competitive_report_id (integer)
  • foreign_key (string) — competitor_{id}.
  • store_id (integer)
  • business (string|null) — store saucode.
  • business_name (string|null) — store name.
  • review_site_id (integer|null)
  • publisher (string)
  • year (integer)
  • month (integer|null)
  • theme (string)
  • status (string) — raw DB status.
  • competitor_count (integer)
  • competitors (array of string) — competitor names only.
  • review_count (integer|null)
  • owner_email (string|null) — requesting user email.
  • requested_by_user_id (integer|null)
  • created_at (string|null, ISO 8601)
  • completed_at (string|null, ISO 8601)
  • data.summary (object):
  • status_counts (object) — map of raw status → count, across ALL the store's reports.
  • reviews_scored (integer) — sum of review_count across all the store's reports.
  • total (integer) — total report count for the store.
  • data.data[].meta (object): current_page, last_page, per_page, total (all integers).

200 OK · 200

{
  "data": {
    "reports": [
      {
        "competitive_report_id": 1001,
        "store_id": 42,
        "publisher": "google",
        "year": 2026,
        "month": 5,
        "theme": "home-services",
        "status": "success",
        "competitor_count": 1,
        "completed_at": "2026-06-12T10:00:00Z"
      }
    ],
    "summary": {
      "status_counts": { "success": 1 },
      "reviews_scored": 128,
      "total": 1
    },
    "meta": {
      "current_page": 1,
      "last_page": 1,
      "per_page": 50,
      "total": 1
    }
  }
}

Errors

StatusMeaning
401The bearer token is missing, expired or invalid
422The request failed validation — the response names the fields
500Unexpected server error

Example request

curl --request POST \
  --url "https://production-api.shoutaboutus.com/api/v1/account/competitive-report/list" \
  --header 'Authorization: Bearer <bearer-token>' \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \
  --data '{"store_id": 42, "status": "succeeded", "publisher": "google", "theme": "home-services", "foreign_key": "competitor_1001", "per_page": 50, "page": 1}'

Did this page help you?