List all URLs for a location

Overview

Get the review URL and landing page URL for every site on a location in one call.

Use this to audit what's set and what's missing before a review-request campaign, or to sync URLs into your own system.

You'll need the url_type (which URL you're working on), and the store_id for one location. Without store_id, every location you can reach is listed. Use filter to see only the sites missing that URL, or only those that have it.

Returns each site with both URLs, blank where not yet set, sorted by location name and then site name, one page at a time.

Prerequisites

  • A bearer token. See Authentication.
  • Optional: the location's store_id, or the account's id (account_id).

Base URL

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

Endpoint

POST /api/v1/store-review-site/url-list

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.
  • A store_id or account_id outside your tree returns an empty page.

Rate limit

This endpoint has no rate limit.

Request parameters

None.

Request body

FieldTypeRequiredDescription
url_typestringYesWhich URL you're working on: review_site (the review URL) or landing_page. filter applies to it.
filterstringNoall (default), missing (sites without that URL) or completed (sites that have it).
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.
store_idintegerNoOnly this location. Must exist.
oauthstringNoOnly sites that connect by signing in with the platform: yes (signed in) or no (not signed in).

Request payload

{
  "url_type": "review_site",
  "filter": "all",
  "store_id": 3007,
  "per_page": 10
}

Response body

The payload is inside data.

FieldTypeDescription
dataarray of objectsOne row per site per location.
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_iconstringURL of the site's logo.
data[].review_site_colorstring or nullThe site's brand colour, e.g. #d32200.
data[].scraping_enabledbooleanWhether reviews can be collected from this site.
data[].sendto_scrapperstringY when review collection is on for this location, N when it's off.
data[].url_statusstringenable or disable. Whether the landing page URL is used in review requests.
data[].oauth_supportedbooleantrue when the site connects by signing in with the platform.
data[].oauth_connectedbooleantrue when that sign-in is in place for this location. Always false for other sites.
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.
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": 8783,
        "store_id": 3007,
        "store_name": "Acme Coffee",
        "client_location_id": "docs-test-loc-001",
        "brand_id": 5994,
        "brand_name": "Acme Coffee",
        "review_site_id": 3,
        "review_site_name": "Facebook",
        "review_site_icon": "https://d2ny6zb7otrnhl.cloudfront.net/assets/backend/images/logos/facebook_ic.png",
        "review_site_color": "#1877F2",
        "scraping_enabled": true,
        "sendto_scrapper": "N",
        "url_status": "disable",
        "oauth_supported": true,
        "oauth_connected": false,
        "review_site_url": null,
        "landing_page_url": null,
        "review_site_url_missing": true,
        "landing_page_url_missing": true
      },
      {
        "id": 8784,
        "store_id": 3007,
        "store_name": "Acme Coffee",
        "client_location_id": "docs-test-loc-001",
        "brand_id": 5994,
        "brand_name": "Acme Coffee",
        "review_site_id": 44,
        "review_site_name": "Google",
        "review_site_icon": "https://d2ny6zb7otrnhl.cloudfront.net/assets/backend/images/logos/google_ic.png",
        "review_site_color": "#4285F4",
        "scraping_enabled": true,
        "sendto_scrapper": "Y",
        "url_status": "disable",
        "oauth_supported": true,
        "oauth_connected": false,
        "review_site_url": "https://www.google.com/maps/place/Wynyard/@-33.8648805,151.2065622,1523m/data=!3m1!1e3!4m6!3m5!1s0x6b12ae40e6fcf9eb:0x45845f7ff56e0d1!8m2!3d-33.86594!4d151.2061!16s%2Fg%2F1262gn7v0?entry=ttu&g_ep=EgoyMDI2MDkyMC4wIKXMDSoASAFQAw%3D%3D",
        "landing_page_url": "https://www.google.com/maps/place/Wynyard/@-33.8648805,151.2065622,1523m/data=!3m1!1e3!4m6!3m5!1s0x6b12ae40e6fcf9eb:0x45845f7ff56e0d1!8m2!3d-33.86594!4d151.2061!16s%2Fg%2F1262gn7v0?entry=ttu&g_ep=EgoyMDI2MDkyMC4wIKXMDSoASAFQAw%3D%3D",
        "review_site_url_missing": false,
        "landing_page_url_missing": false
      },
      {
        "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_icon": "https://d2ny6zb7otrnhl.cloudfront.net/assets/backend/images/logos/yelp_ic.png",
        "review_site_color": "#d32200",
        "scraping_enabled": true,
        "sendto_scrapper": "Y",
        "url_status": "disable",
        "oauth_supported": false,
        "oauth_connected": false,
        "review_site_url": null,
        "landing_page_url": null,
        "review_site_url_missing": true,
        "landing_page_url_missing": true
      }
    ],
    "meta": {
      "current_page": 1,
      "per_page": 10,
      "total": 3,
      "last_page": 1
    }
  }
}

Examples

Success payload

All the sites on one location: see Response payload.

No matching rows, or a store_id outside your tree:

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

Error payload

422 Missing url_type

{
  "message": "The url type field is required.",
  "errors": {
    "url_type": [
      "The url type field is required."
    ]
  }
}

422 Invalid values

{
  "message": "The selected url type is invalid. (and 2 more errors)",
  "errors": {
    "url_type": [
      "The selected url type is invalid."
    ],
    "filter": [
      "The selected filter is invalid."
    ],
    "oauth": [
      "The selected oauth is invalid."
    ]
  }
}

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."
    ]
  }
}
StatusMeaning
200A page of rows, or an empty page.
401The token is missing, expired or invalid.
422url_type is missing, a value isn't allowed, 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/url-list" \
  --header 'Authorization: Bearer <bearer-token>' \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \
  --data '{"url_type": "review_site", "filter": "all", "store_id": 3007, "per_page": 10}'

Did this page help you?