---
title: "Surveillance lists"
method: GET
path: "/v1/market/surveillance"
tags: ["reference"]
---

# Surveillance lists

`GET /v1/market/surveillance`

## Request

- Base URL: `https://api.tapetide.com`
- URL: `https://api.tapetide.com/v1/market/surveillance`
- Auth: HTTP bearer

Stocks currently under exchange surveillance frameworks (ASM, ESM, GSM) as per the latest published list, with the specific measure and stage. Updated each trading day; returns an empty list if the latest list is more than a week old rather than a stale one. Filter by `framework`; sorted by framework then symbol.

## Query parameters

- `framework` 'asm' | 'esm' | 'gsm'
- `limit` integer
- `cursor` string

## Response `200`

OK. Costs one request unit.

- object
  - `data` MarketSurveillanceItem[], required
    - `symbol` string, required: Stock symbol.
    - `name` string, nullable, required: Company name.
    - `framework` 'asm' | 'esm' | 'gsm', required: asm (additional surveillance measure), esm (enhanced surveillance measure, SME platform), gsm (graded surveillance measure).
    - `measure` string, required: Specific measure: long_term_asm, short_term_asm, esm, gsm, or ibc (insolvency-linked).
    - `stage` integer, nullable, required: Stage within the framework (GSM stage 0 = shortlisted); null when the framework has no stage.
    - `description` string, nullable, required: Exchange description of the measure.
    - `as_of` string, required: Date of the list this entry comes from (YYYY-MM-DD).
    - `first_seen` string, required: Earliest date in our coverage (from 2026-06-26) this stock appeared under this framework; a stock that exited and re-entered keeps its first date (YYYY-MM-DD).
  - `meta` ListMeta, required
    - `as_of` string, date-time, required: When this response was assembled (UTC).
    - `route` string, required: operationId that served the request.
    - `count` integer, required: Items in this page.
    - `limit` integer, required: Page size applied.
    - `has_more` boolean, required: Whether another page exists.
    - `next_cursor` string, nullable, required: Pass as `cursor` to fetch the next page; null on the last page.
  - `links` Links, required
    - `next` string, nullable: Relative URL of the next page, or null.

## Other responses

- `400`: Malformed or out-of-range parameter. Not charged.
- `401`: Missing or invalid bearer token.
- `404`: The requested resource does not exist. Not charged.
- `429`: Per-minute burst cap (`rate_limited`) or plan quota (`quota_exhausted`) reached.
- `500`: Unexpected server error. Not charged.
- `502`: A data dependency was unavailable. Not charged.
- `503`: Authentication or quota service temporarily unavailable (`service_unavailable`). Not charged; retry after `Retry-After` seconds.

---

[API](https://skmtc.dev/tapetide/apis/tapetide-api.md) · [All operations](https://skmtc.dev/tapetide/apis/tapetide-api/llms.txt) · [OpenAPI document](https://skmtc.dev/tapetide/apis/tapetide-api/revisions/261ec086bde5?raw)
