# GET /v2/signals/{signal}

**List signal matches**

Return the set of tickers where the named signal is true (for boolean flags) or where the numeric value satisfies a single-bounded condition. Sorted by signal value descending for numerics, alphabetically by ticker for booleans.

## Plan access

- **Plan access.** Included on every plan, Hobby through Enterprise.
- **Rate limit.** Hobby 60/min · Pro 2,000/min · Scale 10,000/min.
- **Universe.** All ~12,000 tracked tickers on every plan.

## Query / path parameters

| Name | In | Type | Required | Description |
|------|----|----|----------|-------------|
| `signal` | path | string | yes | A column on `ticker`. Boolean flags (e.g. `golden_cross_today`, `above_sma_50`) are detected automatically; numerics (e.g. `rsi_14`, `market_cap`, `pe_ratio`) require a condition. Example: `rsi_14`. |
| `condition` | query | string | no | Required for numeric signals. Single bound, format `<op><value>`. Operators: `>`, `>=`, `=`, `!=`, `<`, `<=`. Examples: `>70`, `<=200`, `!=0`. Ignored for boolean flags. Example: `>70`. |
| `limit` | query | integer | no | Page size. Max 200. Default: `50`. |
| `cursor` | query | string | no | Opaque cursor from the previous response. |

## Status codes

- **200** — Page of matching tickers with `as_of`, `count`, `next_cursor`, and `results`.
- **400** — Numeric signal called without `condition`, malformed condition, or invalid cursor.
- **404** — Signal name does not exist on the schema.

## Sample response

```json
{
  "as_of": "2026-05-14T11:41:01.000Z",
  "signal": "rsi_14",
  "condition": ">70",
  "count": 3,
  "next_cursor": "eyJhZnRlcl92YWx1ZSI6ODcuMywiYWZ0ZXJfdGlja2VyIjoiUEJJIn0",
  "results": [
    { "ticker": "MXL", "name": "MaxLinear, Inc. Common Stock", "value": 97.21 },
    { "ticker": "PBI", "name": "Pitney Bowes Inc.",            "value": 92.08 },
    { "ticker": "TRT", "name": "Trio-Tech International",       "value": 90.95 }
  ]
}
```

## Examples

### Overbought RSI right now

Request:

```shell
curl "https://api.tickerbot.io/v2/signals/rsi_14?condition=>70&limit=3" \
  -H "Authorization: Bearer YOUR_KEY"
```

Response (`200`):

```json
{
  "as_of": "2026-05-14T11:41:01.000Z",
  "signal": "rsi_14",
  "condition": ">70",
  "count": 3,
  "next_cursor": "eyJhZnRlcl92YWx1ZSI6ODcuMywiYWZ0ZXJfdGlja2VyIjoiUEJJIn0",
  "results": [
    { "ticker": "MXL", "name": "MaxLinear, Inc. Common Stock", "value": 97.21 },
    { "ticker": "PBI", "name": "Pitney Bowes Inc.",            "value": 92.08 },
    { "ticker": "TRT", "name": "Trio-Tech International",       "value": 90.95 }
  ]
}
```

### Tickers at a 52-week high (boolean flag)

Request:

```shell
curl "https://api.tickerbot.io/v2/signals/at_52w_high?limit=3" \
  -H "Authorization: Bearer YOUR_KEY"
```

Response (`200`):

```json
{
  "as_of": "2026-05-14T11:41:01.000Z",
  "signal": "at_52w_high",
  "condition": null,
  "count": 3,
  "next_cursor": "eyJhZnRlcl90aWNrZXIiOiJBQVAifQ",
  "results": [
    { "ticker": "AAP",  "name": "ADVANCE AUTO PARTS INC", "value": true },
    { "ticker": "ABNB", "name": "Airbnb, Inc.",           "value": true },
    { "ticker": "ABT",  "name": "Abbott Labs",            "value": true }
  ]
}
```

## Notes

- For boolean flags, the response value is `true`/`false`. For numerics it's the column value at the time of the request.
- The match set is computed against the live `ticker` row (current state). For historical "who matched on this date" queries, use `GET /v2/scan?asof=YYYY-MM-DD`.

---

Interactive sandbox + parameter editor: https://tickerbot.io/api/endpoints/signals/matches
