---
title: "Emerging Tokens"
method: GET
path: "/v1/tokens/emerging"
tags: ["tokens"]
---

# Emerging Tokens

`GET /v1/tokens/emerging`

## Request

- Base URL: `https://api.bitpoort.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.bitpoort.com/v1/tokens/emerging`
- Auth: one of:
  - API key in header `X-API-Key`
  - HTTP bearer

Top emerging tokens ranked by momentum score (swap activity, trader
growth, smart-money interest). Underlying ``token_discoveries`` data is
ETH-only today; the ``chain`` param is accepted for symmetry with the
rest of the API and ignored otherwise.

Authentication: protected. Requires ``X-API-Key`` (or ``Authorization:
Bearer``). The aliases ``/v1/feed/emerging-tokens`` and
``/v1/intelligence/emerging`` are public for backwards compatibility
with public-facing dashboards. Ages are served live (stored age +
drift since scored_at), not frozen at scoring time.

## Query parameters

- `limit` integer: Max items to return (1-200, default 20).
- `min_score` number: Drop items with momentum score below this floor (0.0-1.0). Default 0.05.
- `chain` string: Chain filter. Accepted: ETH (default; full coverage), BTC, HL, MATIC. Underlying token_discoveries data is currently ETH-only -- other values are accepted for forward-compatibility and ignored.
- `since` string, nullable: Optional ISO 8601 lower bound on scored_at, e.g. 2026-05-01T00:00:00Z. Combinable with until.
- `until` string, nullable: Optional ISO 8601 upper bound on scored_at, e.g. 2026-05-02T00:00:00Z. Combinable with since.
- `window_hours` number: Only include tokens re-scored within the last N hours (the scorer re-scores active tokens every 15 min, so scored_at = last time a token still qualified as emerging). 0 disables the window. An explicit `since` replaces this default.
- `max_launch_age_hours` number, nullable: Only tokens whose TRUE launch — earliest liquidity-pool creation on the decoded layer, not scorer first-sight — is within N hours. Rows always carry launch_age_hours when the deep store answers (null = no pool found / store unreachable = unknown, never treated as fresh); unknown-launch rows are excluded when this filter is set. Omit = no launch filter.

## Response `200`

List of emerging tokens ranked by momentum score. Each item carries swap activity, holder growth, smart-money interest, and a scored_at timestamp. Currently ETH-only; the chain param is accepted for symmetry.

- EmergingTokenItem[]
  - `token_address` string, required
  - `symbol` string, nullable
  - `score` number, required
  - `swap_count` integer, required
  - `unique_traders` integer, required
  - `total_volume_usd` number, required
  - `unique_holders` integer, required
  - `holders_per_hour` number, required
  - `age_hours` number, required
  - `trader_diversity` number, required
  - `smart_buyers` integer
  - `smart_volume_usd` number
  - `pair_age_hours` number
  - `sell_ratio` number
  - `unique_sellers` integer
  - `launch_age_hours` number, nullable
  - `scored_at` string, nullable

## Other responses

- `422`: Validation Error

---

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