Api3 Data Feed Explorer
Analyze Api3 data feeds using only public data sources: Signed API endpoints, on-chain dAPI reads, and public exchange APIs.
Scripts
All scripts live in {baseDir}/scripts/.
explore-data-feeds.ts
Fetches per-provider off-chain data for a feed from Signed API:
ts-node {baseDir}/scripts/explore-data-feeds.ts <FEED_NAME>
Example: ts-node {baseDir}/scripts/explore-data-feeds.ts BTC/USD
Output starts with a config freshness note, then two summary lists, then one block per provider:
Note that this dAPI configuration is updated at 2026-06-11T12:00:00.000Z and may not reflect the latest changes.
Providers that support this feed:
[ '- blocksize', '- coingecko' ]
Providers that are used in the aggregation of this feed:
[ '- blocksize', '- coingecko' ]
**************************************************
- API Alias: blocksize
- Data Feed ID: 0x3502633779071a82a8a6a17e9ade05e97aa45dfc390b934cd360bef2e983edd7
- Signed API URL: https://signed-api.api3.org/public/0xBA910Eb2867977A0a651FE3D2607237ff4116B1C
- Homepage: https://www.blocksize.info
- Value: 62883.522017606105
- Timestamp: 2026-06-11T14:10:03.000Z
**************************************************
...
The config freshness timestamp is the last-modified date of the feed configuration, not the data itself.
get-chains.ts
Lists all chains supported by Api3, with their name, alias, and numeric id:
ts-node {baseDir}/scripts/get-chains.ts
Use this to discover valid chain aliases before calling read-data-feed.ts.
get-dapis.ts
Lists all currently active dAPI names:
ts-node {baseDir}/scripts/get-dapis.ts
Use this to enumerate available feeds or verify a feed name before passing it to other scripts.
read-data-feed.ts
Reads the on-chain value and timestamp for a feed on a specific chain:
ts-node {baseDir}/scripts/read-data-feed.ts <FEED_NAME> <CHAIN_ALIAS>
Example: ts-node {baseDir}/scripts/read-data-feed.ts BTC/USD ethereum
Output:
Proxy address: 0x...
value : 62901.234567890123
timestamp : 2026-06-11T14:08:00.000Z
The script derives the Api3ReaderProxyV1 proxy address from the feed name and chain, then reads it via the chain's default public RPC. Use get-chains.ts to find valid chain aliases.
Capabilities
1. List which providers support which feeds
Run explore-data-feeds.ts for the requested feed(s). The "Providers that support this feed" list in the output are the ones supporting that feed. To answer "which feeds does provider X support", run the script across the relevant feeds and collect where the provider's alias appears.
2. Show which providers are used in a feed's aggregation
Run explore-data-feeds.ts for the feed. The "Providers that are used in the aggregation" list shows the aggregation participants. Report the provider aliases and count. Note feeds with few providers (≤3) as concentration risk.
3. Fetch latest prices for any feed
Run explore-data-feeds.ts and report:
- The median of all provider values (this approximates the served price)
- Each provider's value and timestamp
- Flag any provider whose timestamp is older than 5 minutes as stale
4. Per-provider price comparison (spread, outliers, live)
From the explore-data-feeds.ts output, compute:
- Median of all provider values
- Spread: (max - min) / median, as a percentage
- Per-provider deviation: (value - median) / median, as a percentage
- Outliers: any provider deviating more than 0.5% from the median (adjust threshold for volatile or low-liquidity assets)
- Freshness: age of each provider's timestamp relative to now
Present results as a table: provider | value | deviation % | timestamp age. Call out outliers and stale providers explicitly.
5. On-chain vs. off-chain gap (staleness check)
- Compute the live off-chain median from the script output (capability 4).
- If the user has not specified a chain, ask which chain to check (run
get-chains.tsto list valid aliases). - Read the on-chain value with
read-data-feed.ts <FEED_NAME> <CHAIN_ALIAS>. - Report:
- On-chain value and its timestamp
- Live off-chain median
- Gap percentage: (off-chain median - on-chain value) / on-chain value
- Time since last on-chain update
Interpretation: on-chain data is updated on a 24h heartbeat or whenever the off-chain median deviates from the current on-chain value beyond the feed's deviation threshold. A gap within that threshold with an on-chain timestamp under 24h is healthy. A gap exceeding the threshold, or an on-chain timestamp older than 24h, indicates the update mechanism may be stalled.
6. List supported chains
Run get-chains.ts and report the chain names, aliases, and ids. Use this to answer "what chains does Api3 support?" or to look up a chain alias before calling read-data-feed.ts.
7. List active dAPIs
Run get-dapis.ts and report the names. Use this to answer "what feeds are available?" or to confirm a feed name exists before running other scripts.
8. Feed vs. exchange spot composite (divergence check)
- Compute the off-chain median from the script output.
- Fetch spot prices for the same pair from public exchange APIs (no keys required), e.g.:
- Binance:
https://api.binance.com/api/v3/ticker/price?symbol=BTCUSDT - Coinbase:
https://api.coinbase.com/v2/prices/BTC-USD/spot - Kraken:
https://api.kraken.com/0/public/Ticker?pair=XBTUSD
- Binance:
- Compute the exchange composite as the median of fetched spot prices.
- Report: feed median, exchange composite, divergence percentage.
- Flag divergence above 0.5% as notable, above 1% as significant.
Note: stablecoin-quoted pairs (USDT) vs USD pairs can legitimately differ slightly; mention this when comparing.
Workflow guidance
- Always run the script fresh for each question; do not reuse stale output across questions.
- When asked a general health question ("is BTC/USD healthy?"), run capabilities 4, 5, and 8 together and give a one-paragraph verdict followed by the numbers.
- Report timestamps in UTC and include data age in human-readable form ("23s ago").
- Never invent provider names, values, or feed IDs. Only report what the script and public APIs return. If a feed name is not found, say so.
- All data used by this skill is public. Do not attempt to access internal alerting, dashboards, or private infrastructure.
Limitations
- Provider list reflects the current feed configuration; historical composition is not available.
- The off-chain median computed here approximates but may not exactly match the on-chain aggregation logic.
- Exchange composite is an external sanity reference, not the feed's source of truth.
微信扫一扫