---
title: "Anomaly Search"
method: GET
path: "/api/anomaly/search/{ticker}"
tags: ["Anomaly"]
---

# Anomaly Search

`GET /api/anomaly/search/{ticker}`

## Request

- Base URL: `https://api.xfinlab.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.xfinlab.com/api/anomaly/search/{ticker}`
- Auth: none declared

Single-ticker anomaly check -- lets a user check ANY global ticker,
separate from the batch watchlist scan above. Same AnomalyEngine
math, same real volume/price data, just scoped to one symbol instead
of the whole watchlist.

Unlike the batch endpoint above (which only lists tickers that
actually have an anomaly, since it's a "what needs my attention"
radar), this ALWAYS returns a result even when severity is NONE --
someone explicitly searching one ticker wants an honest "no anomaly
detected" answer, not silence.

2026-07-31 fix ("顯示「攞唔到 AAPL 嘅市場數據...」" regardless of UI
language): both error messages below used to be hardcoded Traditional
Chinese literals, so an English/Japanese/etc-mode user searching an
unrecognized or data-unavailable ticker still saw raw Cantonese. Now
accepts `lang` (same param anomaly.html already sends everywhere else
via I18N.currentLang) and looks the two messages up from
services/i18n.py's per-language dict, defaulting to the original
Chinese text for zh-HK/zh-TW/unset lang -- these are plain UI strings
(not AI-generated prose), so a direct dict lookup is simpler and more
reliable here than the ai_language_instruction() prompt-steering
pattern used for LLM endpoints elsewhere.

## Path parameters

- `ticker` string, required

## Query parameters

- `lang` string

## Response `200`

Successful Response

- unknown

## Other responses

- `422`: Validation Error

---

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