Live Price Oracle avatar

Live Price Oracle

Pricing

from $1.70 / 1,000 delivered token price observations

Go to Apify Store
Live Price Oracle

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

Tim Zinin

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

6 days ago

Last modified

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.

Token Price Evidence Feed: buyer input to evidence-backed action

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 like WETH — 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 real name of the token it matched (not just its symbol — a symbol can look right while the name gives away a mismatch, as with TRUMP above), candidateTokenCount (how many other tokens it found under that symbol within DexScreener's own search results) and candidates (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. candidateTokenCount describes only distinct contracts retained from those responses. Verify tokenAddress, chain, name and symbol together.
  • 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 chainId to 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: false with 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/candidates yourself, which is exactly the check an automated consumer needs to do instead.

Token Price Evidence Feed: evidence-to-action workflow

How to run it

  1. Click Try for free — no card needed on the free plan.
  2. Paste contract addresses or tickers into Tokens, one per row, and optionally set Chain ID to pin the search to a single EVM chain.
  3. 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。

两种输入方式,证据强度不同。 合约地址由调用者提供,因此身份证据更强;代币代码只是非唯一的搜索词。两种模式都不是自动交易授权。请独立核对返回的链、合约、交易场所、交易对、流动性和时间;代码搜索还必须检查 matchBasisnamesymboltokenAddresscandidates

可以用 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

FieldTypeDescription
tokensarray of stringsContract addresses (EVM 0x… or Solana base58) or tickers/search terms. Up to 100. One row per entry.
chainIdintegerOptional. 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.
maxConcurrencyintegerParallelism (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.

FieldDescription
inputThe address or search term you passed
foundWhether a price was found
chainId / dexId / pairAddressWhere 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.
candidateTokenCountOnly 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.
candidatesOnly 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.
nameThe 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").
symbolThe token's ticker
priceUsdCurrent price in USD
priceChangeH2424h price change, percent
liquidityUsd / volumeH24The best pair's pool liquidity and 24h volume
sourceAlways "dexscreener"
asOf / checkedAtWhen this price was pulled
summaryHuman-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
errorPresent 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 for adjacent workflows in crypto and wallets, data pipelines for AI applications.

ActorWhat it does
Token Launch RadarPair 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 ConverterPair 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 TrackerPair 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 ExtractorPair 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 ScorerPair 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

  1. Use a verified chain-and-contract identifier whenever possible.
  2. Confirm that the returned contract and pair describe the intended asset.
  3. Check observedAt; fetch a fresh row when time sensitivity matters.
  4. Review liquidity, venue and quote asset before comparing prices.
  5. Resolve every identity and coverage gap with an independent source.
  6. 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:true and 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 confidenceScore as price accuracy, safety, liquidity or investment merit.
  • Route partial, failed and non-replay-safe runs to operations, not trading automation.