Live Price Oracle
Pricing
from $1.70 / 1,000 delivered token price observations
Live Price Oracle
Get timestamped DexScreener market observations for up to 100 token contracts or bounded ticker searches. Rows include selected pair, USD price, liquidity, volume, change, evidence, confidence, gaps, and billing. Ticker matches remain unverified; no-match rows are free. Not financial advice.
Pricing
from $1.70 / 1,000 delivered token price observations
Rating
0.0
(0)
Developer
Tim Zinin
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
6 days ago
Last modified
Categories
Share
Live Price Oracle — Crypto Price by Symbol or Address
Point this Actor at a token and get a timestamped USD market observation from DexScreener's public API — plus 24h change, liquidity and volume from the selected best-liquidity pair. A contract address supplies stronger identity evidence because the caller chooses the identifier. A ticker (WETH, TRUMP) is only a convenience search: DEX symbols are not unique, so the Actor exposes the actual contract, name, pair and alternative candidates it observed. No wallet, RPC node or API key is required.
Do not use either lookup mode as authority for an automatic trade. Prefer a chain-and-contract identifier, then independently verify the returned contract, venue, pair, liquidity and freshness. For ticker searches, also inspect matchBasis, name, symbol, tokenAddress and candidates before using any market field.

What you get
- Observation by address (stronger identity evidence) or ticker (unverified search). Pass an EVM
0x…address or Solana base58 address, or a plain search term likeWETH— one row per unique entry. - A ticker search tells you exactly what it found, not just a number. Every ticker-search row carries
matchBasis: "ticker-search", the realnameof the token it matched (not just its symbol — a symbol can look right while the name gives away a mismatch, as withTRUMPabove),candidateTokenCount(how many other tokens it found under that symbol within DexScreener's own search results) andcandidates(the ones it passed over, ranked by liquidity). Query by address instead and this is moot —matchBasis: "address", nothing to disambiguate. - Ticker search is bounded and non-exhaustive. The Actor merges bare and
$-prefixed query forms, but upstream search can still omit the intended contract or return a candidate whose symbol differs from the query.candidateTokenCountdescribes only distinct contracts retained from those responses. VerifytokenAddress, chain,nameandsymboltogether. - The full picture on the best pair: current USD price, 24h price change, that pair's liquidity and 24h volume, and which DEX and chain it trades on.
- Chain-scoped lookups. Set
chainIdto pin the search to one EVM chain (Ethereum, BSC, Base, Polygon, Arbitrum). Pass a chain this Actor doesn't recognize and the row is rejected outright —found: false, free — instead of silently handing back a pair from the wrong chain. - PulseChain guard. PulseChain is a full state-fork of Ethereum, so a pre-fork Ethereum address has an unrelated "twin" there with unrelated liquidity that could otherwise silently outrank the real chain. PulseChain pairs are excluded unless they're the only match.
- Stablecoin sanity guard. Query a canonical USDC/USDT/DAI address and the matched pair prices it outside $0.90–$1.10 (e.g. a wrong-chain "twin" pair slipping past the PulseChain guard above) and the row comes back
found: falsewith the reason instead of a silently wrong price — free, not charged. - Built for bounded machine-readable observations. Concurrency is capped at 20 and no source key is required. A caller must still apply its own identity, venue, risk and freshness controls before using a row in any downstream financial workflow.
- Runs on Apify: schedule it, monitor it, call it from the API or the MCP server, export to JSON/CSV/Excel, or push straight into your own pipeline.
Who uses it
- Risk-controlled market-data pipelines — retain the contract, chain, pair and observation time, then require independent verification before any financial action. Ticker searches remain unverified candidate selection.
- Portfolio trackers — refresh USD value across a token list without running a node (use contract addresses for the same reason as above).
- Researchers, dashboards and casual lookups — a ticker is fine here: you're reading
name/candidatesyourself, which is exactly the check an automated consumer needs to do instead.

How to run it
- Click Try for free — no card needed on the free plan.
- Paste contract addresses or tickers into Tokens, one per row, and optionally set Chain ID to pin the search to a single EVM chain.
- Press Start and read the results from the dataset — UI, API or webhook.
Pricing
Pay-per-event: $0.005 per run start + $0.002 per result. No monthly seat. 100 tokens cost about $0.21; 1,000 tokens about $2.01.
A token that could not be priced — not found on the requested chain, or an unrecognized chainId — is still returned with found: false and the reason, and it is not charged for. You pay for a price, not for an attempt.
简体中文说明
输入代币合约地址(EVM 0x… 或 Solana base58)或代币代码(如 WETH),此 Actor 会直接从 DexScreener 的公开 API 返回该代币当前美元价格,以及流动性最高交易对的 24 小时涨跌幅、流动性和成交量、所在的 DEX 和链。无需钱包、无需 RPC 节点、无需密钥,并发最高 20。
两种输入方式,证据强度不同。 合约地址由调用者提供,因此身份证据更强;代币代码只是非唯一的搜索词。两种模式都不是自动交易授权。请独立核对返回的链、合约、交易场所、交易对、流动性和时间;代码搜索还必须检查 matchBasis、name、symbol、tokenAddress 与 candidates。
可以用 chainId 把查询限定在一条 EVM 链上(以太坊、BSC、Base、Polygon、Arbitrum);传入本 Actor 不认识的链会直接免费返回 found: false,不会悄悄拿一条错误链上的交易对凑数。同一个合约地址若在多条链上都有交易对,本 Actor 默认取流动性最高的一个;PulseChain 是以太坊主网的完整分叉,会有一个流动性完全不同的"分身"交易对,除非是唯一匹配结果,否则会被排除,避免干扰对知名代币的判断。
计费为按事件付费:每次运行 $0.005,每个成功查到价格的代币 $0.002(result-found)。查不到价格的代币(该链上没有交易对,或 chainId 无法识别)仍会以 found: false 返回原因,不计费。100 个代币约 $0.21,1000 个约 $2.01。
这不是什么。 这是一个价格数据源,不构成财务建议——只呈现 DexScreener 公开数据展示的价格、流动性和成交量,不包含任何买入、卖出或持有的建议,交易前请自行核实。
Input
| Field | Type | Description |
|---|---|---|
tokens | array of strings | Contract addresses (EVM 0x… or Solana base58) or tickers/search terms. Up to 100. One row per entry. |
chainId | integer | Optional. Restrict to one EVM chain: 1=Ethereum, 56=BSC, 8453=Base, 137=Polygon, 42161=Arbitrum. An unrecognized chainId is rejected for free rather than falling through unfiltered. Leave empty to accept the best pair on any chain. |
maxConcurrency | integer | Parallelism (1–20, default 10). |
{"tokens": ["0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", "WETH"]}
Output
One Dataset row is emitted per unique processed input. Exact price, liquidity and candidate values are intentionally not embedded as evergreen facts because they can change immediately. The release receipt binds a bounded canary Dataset and KVS OUTPUT to the exact production build.
| Field | Description |
|---|---|
input | The address or search term you passed |
found | Whether a price was found |
chainId / dexId / pairAddress | Where the best pair trades |
matchBasis | "address" — the input itself was the identifier, nothing to disambiguate. "ticker-search" — the input was free text matched by DexScreener's search index; a symbol is not unique, see candidates. |
candidateTokenCount | Only set for matchBasis: "ticker-search": how many DISTINCT tokens (not pools) this Actor found under this symbol/name within DexScreener's own search results at query time — that search is capped (~30 raw pairs per query, up to ~60 once the bare and $-prefixed forms are merged) and not exhaustive, so this is a lower bound on real usage of the symbol, never a claim that no other token exists. null for an address lookup — there is nothing to count. |
candidates | Only set for matchBasis: "ticker-search" with more than one match: up to 5 of the other distinct tokens found under the same symbol/name within that same (capped) search, ranked by liquidity, that were NOT picked — each with its own chainId, tokenAddress, name, symbol and liquidityUsd so you can tell them apart. The token you actually meant can be missing from this list entirely if DexScreener's own search never surfaced it. |
name | The matched pair's real token name — the field that catches a symbol-only mismatch a ticker alone can hide (e.g. symbol: "TRUMP" can be the real thing or, live-verified, a token actually named "MAGA"). |
symbol | The token's ticker |
priceUsd | Current price in USD |
priceChangeH24 | 24h price change, percent |
liquidityUsd / volumeH24 | The best pair's pool liquidity and 24h volume |
source | Always "dexscreener" |
asOf / checkedAt | When this price was pulled |
summary | Human-readable one-liner, always says how the token was matched — by address, or by ticker search among N candidates with the real name it found |
error | Present only when found: false — why no price was returned, including an unsupported chainId |
API
Start a run with a bearer token and explicit JSON input:
curl -sS -X POST 'https://api.apify.com/v2/acts/zinin~live-price-oracle/runs?waitForFinish=60' \-H "Authorization: Bearer $APIFY_TOKEN" \-H 'Content-Type: application/json' \--data '{"tokens":["0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48","WETH"]}'
Read Dataset rows using the returned defaultDatasetId:
curl -sS "https://api.apify.com/v2/datasets/$DEFAULT_DATASET_ID/items?clean=true&format=json" \-H "Authorization: Bearer $APIFY_TOKEN"
MCP
For an Apify MCP client exposing the standard call-actor tool, send this exact payload:
{"name": "call-actor","arguments": {"actor": "zinin/live-price-oracle","input": {"tokens": ["0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", "WETH"]}}}
Related tools
Related tools for adjacent workflows in crypto and wallets, data pipelines for AI applications.
| Actor | What it does |
|---|---|
| Token Launch Radar | Pair it in the crypto and wallets workflow: Look up any token contract address or ticker across DEXes and get liquidity, 24h volume, pair age, a 0-100... |
| URL to Markdown Converter | Pair it in the data pipelines for AI applications workflow: Fetch any URL and convert it into clean, LLM-ready Markdown — headings, links, lists and emphasis... |
| Whale Wallet Tracker | Pair it in the crypto and wallets workflow: Track large native ETH and ERC-20 token movements for any wallet(s) via Etherscan's multichain API (bring... |
| Structured Data Extractor | Pair it in the data pipelines for AI applications workflow: Turn any URL into clean structured JSON — title, description, image, JSON-LD, headings, links, emails and... |
| Rug Pull Risk Scorer | Pair it in the crypto and wallets workflow: Score ERC-20/BEP-20 token rug-pull risk from honeypot.is simulation + DexScreener liquidity/age |
FAQ / Limitations
Does it need an API key or wallet? No — DexScreener's public API is free and keyless.
How fresh is the data? Every row records the observation time and computes freshness at run time. DexScreener controls upstream latency, which this Actor does not guarantee.
What happens if I pass a chain the token doesn't trade on, or a chain this Actor doesn't know? An unrecognized chainId is rejected up front — found: false, not charged. A recognized chain with no pair for that token also comes back found: false, with the reason spelled out.
How is "best pair" chosen, and is it the token I meant? The Actor chooses the highest-liquidity observed pair on the requested chain (or across supported observations when chainId is empty), with its PulseChain guard applied. An address request retains the caller-supplied identifier but is still not independent asset, venue or contract verification. A ticker request is a capped best-liquidity candidate search, not identity proof; inspect the returned contract, name, symbol and alternatives.
Is candidateTokenCount a complete count of every token using this symbol? No. It is the number of distinct contracts retained from bounded bare and $-prefixed source responses. Treat it as "at least this many observed," never a census. Verify the selected contract, chain, name and symbol independently.
Can I call it from an AI agent? Yes — it is a standard Apify Actor, callable via the Apify API or MCP. Have the agent branch on matchBasis: "address" provides stronger identity evidence but still requires independent market and risk checks; "ticker-search" is only a best-liquidity guess until a human confirms the intended contract.
What this is NOT. This is a price feed, not financial advice. It reports what DexScreener's public API shows — price, liquidity and volume — and nothing more. Nothing in its output is a recommendation to buy, sell or hold any token; verify independently before trading on it.
Found a wrong result, or need a chain we don't cover? Open an issue on this Actor's page.
Machine use
The Actor is callable through the Apify API, SDK, and Apify MCP server. The input and Dataset row are the machine-facing contract: found: false on a row is a real, free answer (unrecognized chain, no pair on the requested chain), not an error to retry blindly, and priceUsd/liquidityUsd/volumeH24 are a price feed reading, not a trading recommendation — an agent quoting a trade off this data should still apply its own risk checks.
A caller must never convert priceUsd into an automatic trade. Branch on matchBasis first: "address" means the input itself was the identifier, while "ticker-search" is a best-liquidity guess among observed candidates. In both cases, verify contract, venue, liquidity, freshness and the intended asset independently before any financial action.
Built by zinin. Questions? Telegram @timzinin.
What this Actor is — and is not
Live Price Oracle returns timestamped DexScreener market observations in a stable machine-readable shape. A row retains the requested identifier, matching basis, selected contract and pair, observed USD price, 24-hour change, liquidity, volume, evidence, confidence, gaps and a bounded next action.
Despite the product name, it is not a cryptographic oracle, consolidated market price, executable
quote, valuation, trading signal or investment recommendation. It does not establish asset identity
from a ticker, guarantee liquidity, simulate slippage or confirm that a venue is safe. Every row has
safeToAutomate:false because a price observation is not enough to authorize a financial action.
Evidence and identity hierarchy
A contract-address request is stronger than a ticker search because the input itself identifies a
token contract. It still requires independent confirmation of chain, venue, pair and freshness.
A ticker/name search is capped, non-exhaustive and non-unique. The highest-liquidity candidate can
be a different project using the same symbol. For search rows, inspect name, symbol,
tokenAddress, candidateTokenCount, candidates and matchBasis before using market fields.
confidenceScore measures the evidence path and identity quality. It does not measure future price
accuracy, solvency, contract safety or investment merit. The additive decision contract includes
confidenceReasons, confidenceRisks, sourceEvidence, dataGaps, negativeSignals,
recommendedAction, actionPriority, actionReason, interpretationBoundary, failureType,
retryable, partial, billing and safeToAutomate.
Safe decision workflow
- Use a verified chain-and-contract identifier whenever possible.
- Confirm that the returned contract and pair describe the intended asset.
- Check
observedAt; fetch a fresh row when time sensitivity matters. - Review liquidity, venue and quote asset before comparing prices.
- Resolve every identity and coverage gap with an independent source.
- Keep trading, treasury, listing and customer-facing actions behind a separate approval system.
VERIFY_TOKEN_IDENTITY_BEFORE_USING_MARKET_FIELDS is the normal action for a search result.
VERIFY_CONTRACT_AND_REVIEW_PRIMARY_MARKET_EVIDENCE applies to an address-based observation.
REVIEW_OR_CORRECT_TOKEN_INPUT means the Actor delivered no usable price row for that input.
OUTPUT and billing reconciliation
Read the default Dataset and KVS OUTPUT together. Dataset rows contain individual observations;
OUTPUT records requested, unique, duplicate, attempted, delivered, paid, free, failed and withheld
counts, plus status, partial, budgetStopped, fatalError, replaySafe and resultsUrl.
The Actor serializes the remaining-budget check and linked result delivery across concurrent
workers. A successful paid row is written with pushData(row, "result-found"); errors and policy
advisories remain free. If delivery and charging become ambiguous, OUTPUT becomes FAILED,
replaySafe becomes false, and the run fails instead of pretending completion.
Result patterns
An address happy path has found:true, matchBasis:"address", a selected pair, high identity
confidence and a manual verification action. It is usable evidence for a price-monitoring pipeline,
not permission to trade.
A ticker-search path can still have found:true while confidence is low. That is intentional: the
market fields were observed for the selected candidate, but identity remains unverified. Route the
row to contract confirmation.
A free advisory has found:false, recordType:"advisory", billing.billable:false, a specific
failureType and retryable flag. Retry transient source failures; correct invalid inputs; do not
blindly retry an ambiguous identity or a run with replaySafe:false.
Source and operating boundaries
The Actor makes bounded public DexScreener API requests with timeouts and response-size limits. It does not connect a wallet, submit a transaction, request credentials, bypass access controls or collect person-level contact data. Preserve source links and timestamps when exporting rows, review current source terms before redistribution, and apply retention controls to private watchlists.
For scheduled monitoring, keep observations append-only or versioned. A later row can supersede a price for operational use, but it should not erase the evidence showing what the earlier run saw.
Release evidence contract
Every production release is bound to one exact candidate build and one bounded no-retry canary. The acceptance receipt records the run, build, Dataset and KVS IDs, exact charged event counts, usage cost and cheapest-tier revenue coverage. It reconciles requested, unique, duplicate, attempted, successful, failed, delivered, paid, local, free and withheld outcomes.
That receipt is the source of truth for a live output example. This README intentionally avoids
freezing a token price or ticker candidate as an evergreen fact. A later consumer must recalculate
freshness from observedAt; the row's freshness object is only the age at creation.
Duplicate identifiers are not processed or charged twice. Unsupported chains, source failures and
no-pair observations use explicit advisory semantics. A row is paid only through linked Dataset
delivery. If that call throws and delivery state cannot be proved, OUTPUT is failed with
replaySafe:false; do not launch a blind retry.
Consumer acceptance rules
- Require
recordType:"result",found:trueand complete OUTPUT before normal ingestion. - Treat
matchBasis:"ticker-search"as unverified identity regardless of liquidity rank. - Reject stale observations according to your own time budget; the Actor does not choose it.
- Keep contract, chain, DEX, pair and source evidence beside every copied price.
- Never use
confidenceScoreas price accuracy, safety, liquidity or investment merit. - Route partial, failed and non-replay-safe runs to operations, not trading automation.