# GET /v2/signals/{signal}

**Live 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. Pass `asof` — a date for the match set at the close of that day, or a full ISO timestamp for the match set at that intraday moment (`_meta.resolution` reports the granularity served).

## Plan access

- **Plan access.** Included on every plan, Free through Enterprise.
- **Rate limit.** Hobby 600/min · Pro 6,000/min · Scale 60,000/min.
- **Universe.** All 14,399+ 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`, `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`. |
| `asof` | query | string | no | Optional. A `YYYY-MM-DD` date matches at the close of that day; a full ISO timestamp matches at that intraday moment. Plan window: Free reaches back 30 days; every paid plan is unlimited (`403 asof_tier_required` beyond the window). Example: `2026-06-16`. |
| `universe` | query | string | no | Optional. Scope to a system or caller-owned universe slug. |
| `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`. When `asof` is set, response carries `_meta.resolution` (the granularity served: minute, hourly, or daily) and `_meta.frozen_fields` for static columns.
- **400** — Numeric signal called without `condition`, malformed condition, malformed `asof`, 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

- Custom signals: `{signal}` may be one of your custom signals — it resolves as a boolean signal (matches where its predicate is true; `condition` is ignored). See Create a custom signal.
- For boolean flags, the response value is `true`/`false`. For numerics it's the column value at the time of the request.
- Pair with `asof` to ask "who matched at a past moment" — see [As-of matches](/docs/endpoints/signals/asof). For a per-ticker time series of one signal, see [Signal history](/docs/endpoints/signals/history).

---

Interactive sandbox + parameter editor: https://tickerbot.io/docs/endpoints/signals/live
