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 type | Update frequency | Source | Notes |
|---|---|---|---|
| New tokens & pairs | Real-time | Goldsky Subgraph | Indexed from Uniswap V2, V3, V4, and Aerodrome on Base |
| Price / Liquidity / Volume | Every 10 minutes | DexScreener API | Batched in groups of 30 tokens via price-worker |
| Risk scores | Every 5 minutes | Basescan + Honeypot.is | Processes 20 unscored tokens per cycle via risk-worker |
| Holder distribution | Every 6 hours | Basescan APIs | Top 10 holder percentage |
| Trending rankings | Every 10 minutes | Computed from price snapshots | Based 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 } } }