Find sites missing a review URL

Overview

List every site across your locations that has no review URL or no landing page URL yet. This is a report; it changes nothing.

Use this after setting up new locations to see what still needs a URL, or as a regular check that collection is running everywhere it should.

You don't need any ids: it covers every location you can reach. Narrow it to one account with account_id, or to one site with review_site_id. For one location, use List all URLs for a location with store_id and filter missing.

Returns the sites missing either URL, sorted by location name and then site name, one page at a time. Fill them in with Set a site's URLs and credentials.

Prerequisites

Base URL

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

Endpoint

POST /api/v1/store-review-site/missing-urls

Authentication

Partner or Account token

  • Only locations inside your own account tree are listed. A Partner token sees every location under the partner; an Account token only its own account's locations.
  • An account_id outside your tree returns an empty page.

Rate limit

This endpoint has no rate limit.

Request parameters

None.

Request body

FieldTypeRequiredDescription
pageintegerNoThe page to return, from 1. Default 1.
per_pageintegerNoRows per page, 10–100. Default 20. Values below 10 are raised to 10; above 100 returns 422.
searchstringNoMatches part of the location name, the review site name or your client_location_id. Up to 255 characters.
review_site_idintegerNoOnly this review site. Must exist.
account_idintegerNoOnly this account's locations. Must exist.

Request payload

{
  "review_site_id": 1,
  "per_page": 10
}

Response body

The payload is inside data.

FieldTypeDescription
dataarray of objectsOne row per site missing a URL.
data[].idintegerThe connection's id (store_review_site_id). Use it with Set a site's URLs and credentials.
data[].store_idintegerThe location's id.
data[].store_namestringThe location's name.
data[].client_location_idstring or nullYour own id for the location, or null.
data[].brand_idinteger or nullThe account's id.
data[].brand_namestring or nullThe account's name.
data[].review_site_idintegerThe review site's id.
data[].review_site_namestringThe review site's name.
data[].review_site_urlstring or nullThe review URL, or null when not set.
data[].landing_page_urlstring or nullThe landing page URL, or null when not set.
data[].review_site_url_missingbooleantrue when there's no review URL.
data[].landing_page_url_missingbooleantrue when there's no landing page URL.
data[].sendto_scrapperstringY when review collection is on, N when it's off.
metaobjectPaging.
meta.current_pageintegerThis page.
meta.per_pageintegerRows per page.
meta.totalintegerRows across all pages.
meta.last_pageintegerThe last page.

Response payload

{
  "data": {
    "data": [
      {
        "id": 8782,
        "store_id": 3007,
        "store_name": "Acme Coffee",
        "client_location_id": "docs-test-loc-001",
        "brand_id": 5994,
        "brand_name": "Acme Coffee",
        "review_site_id": 1,
        "review_site_name": "Yelp",
        "review_site_url": null,
        "landing_page_url": null,
        "review_site_url_missing": true,
        "landing_page_url_missing": true,
        "sendto_scrapper": "Y"
      },
      {
        "id": 8785,
        "store_id": 3008,
        "store_name": "Acme Coffee - Circular Quay",
        "client_location_id": null,
        "brand_id": 5994,
        "brand_name": "Acme Coffee",
        "review_site_id": 1,
        "review_site_name": "Yelp",
        "review_site_url": null,
        "landing_page_url": null,
        "review_site_url_missing": true,
        "landing_page_url_missing": true,
        "sendto_scrapper": "Y"
      }
    ],
    "meta": {
      "current_page": 1,
      "per_page": 10,
      "total": 2,
      "last_page": 1
    }
  }
}

Examples

Success payload

Yelp missing on two locations: see Response payload.

Nothing missing, or an account_id outside your tree:

{
  "data": {
    "data": [],
    "meta": {
      "current_page": 1,
      "per_page": 20,
      "total": 0,
      "last_page": 1
    }
  }
}

Error payload

422 Invalid values

{
  "message": "The page field must be at least 1. (and 1 more error)",
  "errors": {
    "page": [
      "The page field must be at least 1."
    ],
    "search": [
      "The search field must not be greater than 255 characters."
    ]
  }
}

422 per_page over 100

{
  "message": "The per page field must not be greater than 100.",
  "errors": {
    "per_page": [
      "The per page field must not be greater than 100."
    ]
  }
}

422 Unknown ids

{
  "message": "The selected review site id is invalid. (and 1 more error)",
  "errors": {
    "review_site_id": [
      "The selected review site id is invalid."
    ],
    "account_id": [
      "The selected account id is invalid."
    ]
  }
}
StatusMeaning
200A page of rows, or an empty page.
401The token is missing, expired or invalid.
422A value is invalid, an id doesn't exist, or per_page is over 100.
500Unexpected server error.

Example request

curl --request POST \
  --url "https://production-api.shoutaboutus.com/api/v1/store-review-site/missing-urls" \
  --header 'Authorization: Bearer <bearer-token>' \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \
  --data '{"review_site_id": 1, "per_page": 10}'

Did this page help you?