BS
BaseScreener

Data Freshness

SLA for data availability and update frequency

Data Freshness

The Base Screener processes real-time trading metrics from multiple data sources. Each data type has a different update frequency.

Update schedule

Data typeUpdate frequencySourceNotes
New tokens & pairsReal-timeGoldsky SubgraphIndexed from Uniswap V2, V3, V4, and Aerodrome on Base
Price / Liquidity / VolumeEvery 10 minutesDexScreener APIBatched in groups of 30 tokens via price-worker
Risk scoresEvery 5 minutesBasescan + Honeypot.isProcesses 20 unscored tokens per cycle via risk-worker
Holder distributionEvery 6 hoursBasescan APIsTop 10 holder percentage
Trending rankingsEvery 10 minutesComputed from price snapshotsBased on aggregate 24h volume

Data pipeline

Base L2 → Goldsky Subgraph → Neon Postgres (tokens + pairs)
                                    ↑
DexScreener API ──→ price-worker ──→ price_snapshots table
Honeypot.is API ──→ risk-worker ──→ tokens table (risk fields)
Basescan API    ──→ risk-worker ──→ tokens table (verification + holders)

Latency expectations

  • New token discovery: Tokens appear within seconds of pair creation on-chain (Goldsky indexing)
  • First price data: Available within 10 minutes of discovery (next price-worker cycle)
  • First risk score: Available within 5 minutes of discovery (next risk-worker cycle)
  • API query response: Typically < 100ms for cached data from Neon Postgres

Checking data freshness

Use the price.updatedAt and risk.updatedAt fields to verify when data was last refreshed:

graphql
{ token(address: "0x...") { price { usd updatedAt } risk { score updatedAt } } }