Deployer Hunter

Pump.fun deployer alerts

New token launches from profiled Pump.fun deployers, enriched with deployer tier, deployer.best_token_peak_mc, deployer.runner_rate (fraction of the deployer's labeled tokens that ran — peak >=60min — with deployer.labeled_tokens as the confidence denominator; gate on >=3) and deployer.avg_time_to_bond_minutes, plus any active KOL buys. Each alert carries deployer_sol_balance — the deployer wallet's SOL balance snapshotted at alert time (SOL; null for rows before 2026-06-21 or on RPC failure). Pagination: cursor= (strict (created_at, id) keyset, next_cursor) is preferred; before= (strict timestamp — skips alerts sharing the boundary created_at) and offset stay supported. kol_buys is an exact per-mint aggregate (was a page-wide 500-row sample until 2026-09-21), and min_kol_buys is served by a bounded scan — see has_more / scan.

get/deployer-hunter/alerts

Request

  • Base URL: https://madeonsol.com/api/v1
  • URL: https://madeonsol.com/api/v1/deployer-hunter/alerts
  • Auth: HTTP bearer

Query parameters

limitinteger
sincestring date-time

Only alerts after this ISO timestamp

beforestring date-time

Cursor: only alerts strictly older than this ISO timestamp. Use next_before from the previous response.

offsetinteger

Legacy offset pagination. Prefer cursor for high-scale polling.

cursorstring

PREFERRED pagination (audit F09 follow-up): the next_cursor from a previous page — an opaque strict (created_at, id) keyset, so paging never repeats or skips rows that share a sort value and progresses with limit=1 through runs of identical timestamps. Malformed or tampered → 400. Cannot be combined with before= or offset= (400).

tier'elite' | 'good' | 'moderate' | 'rising' | 'cold'

Filter by deployer reputation tier

alert_typestring

Filter by alert_type (e.g. new_token, bonded, rug_flagged)

priority'high' | 'medium' | 'low'

Filter by alert priority

min_kol_buysinteger

Only alerts where at least N distinct KOLs bought the token (post-filter on kol_buys.count, served by a bounded scan — see scan)

token_mintstring

Scope to one token's alert history — combine with alert_type=bonded to check if/when a specific token bonded

Response

OK. Includes next_before cursor.

limitinteger
offsetinteger
next_beforestring date-time nullable

Legacy cursor — pass as ?before= to fetch older alerts (strict timestamp bound: skips alerts sharing the boundary created_at). Prefer next_cursor.

next_cursorstring nullable

Opaque keyset cursor for the next (older) page — pass as cursor=. null = end of feed. PREFERRED over the strict-timestamp legacy cursor, which skips same-timestamp siblings of the boundary row.

has_moreboolean

false only when the candidate feed is exhausted (not merely when the page is short).

kol_buys_completeboolean

false when the per-mint KOL-buy aggregate could not be read exactly: the pre-migration fallback hit the 1,000-row page clamp (kol_buys counts are lower bounds), or the read failed (kol_buys is null = unknown, not "no KOL buys"; with min_kol_buys the request fails instead).

data_age_secondsinteger nullable
delaystring nullable

BASIC tier only — present when the feed is free-tier delayed, e.g. "5m"

delay_secondsinteger nullable
as_ofstring date-time nullable
delay_notestring nullable
upgradestring nullable

Example response

{
  "coverage": {
    "scope": "launchpad pipeline (pump.fun and LaunchLab/bonk deploys; bags.fm tokens are covered in trade data but their deploys are not attributed here; no direct-to-DEX launches)"
  }
}

Changes

No recorded changes to this operation across all 1 revision of this API.