Skip to content
Documentation menu

Endpoints

List portfolio sites

GET
/api/v1/portfolio/sites

Your Portfolio Monitor sites. Portfolio Monitor customers only.

Returns the sites you uploaded to Portfolio Monitor, in the order you added them. Your own data, so it uses no records.

  • Access: Portfolio Monitor customers.
  • Records: free, uses none.

Parameters

ParameterTypeDescription
limitinteger 1-500Default: 100Page size, 1 to 500. Defaults to 100.Missing, zero or non-numeric values use 100; values above 500 are treated as 500.
cursorstringnext_cursor from the previous page, passed back exactly as returned (cur_...).400 bad_request if altered, or if it came from another endpoint.

Example request

curl "https://planningsignal.co.uk/api/v1/portfolio/sites?limit=100" \
  -H "Authorization: Bearer ps_live_your_key_here"

Example response

{
  "data": [
    {
      "id": 812,
      "site_ref": "STORE-0147",
      "name": "Hampstead High Street",
      "address": "52 High Street, London",
      "postcode": "NW3 1QH",
      "lat": 51.5566,
      "lng": -0.1779,
      "uprn": null,
      "region": "London North",
      "tags": [
        "retail"
      ],
      "radius_m": 250,
      "watch_on_site": true,
      "active": true,
      "geocode_status": "ok",
      "authority": "Camden",
      "covered": true,
      "created_at": "2026-10-01T09:30:00.000Z",
      "updated_at": "2026-10-01T09:30:00.000Z"
    }
  ],
  "next_cursor": null
}

Pass next_cursor back as cursor for the next page; it is null on the last page. See pagination.

Errors

StatuscodeWhen
400bad_requestAltered cursor.
403plan_requiredPortfolio Monitor is not active on the account.
401unauthorizedMissing, invalid or revoked key.
429rate_limitedOver 60 requests a minute.
500server_errorSomething failed on our side. Retry shortly.

Every error has the same JSON shape: { "error": "...", "code": "..." }, with extra fields on some codes. Full bodies are on rate limits and errors.

Questions? Contact us, or see the help centre.