Orion Terminal APIscreener.orionterminal.com ↗
Access real-time open interest, funding rates, volume, and price data for crypto perpetual futures on Binance and Hyperliquid across 7 timeframes.
What is the Orion Terminal API?
The Orion Terminal Screener API exposes real-time perpetual futures data across Binance and Hyperliquid through 2 endpoints, returning per-symbol fields including open interest in USD, funding rate, volume deltas, and price changes across seven timeframes (5m through 1d). The get_screener_data endpoint supports filtering by symbol, sorting by metrics like oi or funding_rate, and limiting result count, making it suitable for programmatic screeners and alerting systems.
curl -X GET 'https://api.parse.bot/scraper/f11b55ec-7756-4afc-abb1-67bdedf60515/get_screener_data?limit=5&symbol=BTC&sort_by=oi&exchange=binance&sort_order=desc' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace screener-orionterminal-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Orion Screener SDK — crypto futures OI, volume, and funding data."""
from parse_apis.orion_screener___crypto_futures_oi_volume_api import (
OrionScreener, Sort, Exchange, Order, SymbolNotFound
)
client = OrionScreener()
# List top tickers by open interest on Binance
for ticker in client.tickers.list(sort_by=Sort.OI, sort_order=Order.DESC, exchange=Exchange.BINANCE, limit=5):
print(ticker.symbol, ticker.price, ticker.open_interest_usd, ticker.funding_rate)
# Search for a specific symbol and inspect its timeframe data
btc = client.tickers.search(symbol="BTC", limit=1).first()
if btc:
for tf_name, tf in btc.timeframes.items():
print(tf_name, tf.oi_change, tf.volume, tf.btc_correlation)
# Handle a symbol that doesn't exist on the exchange
try:
result = client.tickers.search(symbol="ZZZZZ", limit=1).first()
except SymbolNotFound as exc:
print(f"Symbol not found: {exc.symbol}")
print("exercised: tickers.list / tickers.search / timeframe access / SymbolNotFound handling")
List all crypto perpetual futures tickers with open interest, volume, price, and funding rate data. Supports filtering by symbol, sorting by various metrics, and limiting result count. Returns all symbols on the exchange when no filter is applied. Each ticker includes timeframe breakdowns (5m through 1d) with OI changes, volume, volatility, and BTC correlation.
| Param | Type | Description |
|---|---|---|
| limit | integer | Max number of results to return. 0 returns all results. |
| symbol | string | Filter by symbol(s), comma-separated (e.g. 'BTC,ETH,SOL'). Matches base asset or full symbol name. Omitting returns all symbols. |
| sort_by | string | Sort results by field. Omitting returns unsorted results. |
| exchange | string | Exchange to query. |
| sort_order | string | Sort order. |
{
"type": "object",
"fields": {
"tickers": "array of ticker objects each containing symbol, base_asset, price, open_interest_usd, funding_rate, and timeframes with OI/volume/price metrics",
"exchange": "string, the exchange queried",
"last_update": "integer, unix timestamp in milliseconds of last data update",
"symbol_count": "integer, number of tickers returned",
"total_symbols": "integer, total symbols available on the exchange"
}
}About the Orion Terminal API
What the API Returns
Both endpoints return an array of ticker objects containing symbol, base_asset, price, open_interest_usd, funding_rate, and timeframe-level breakdowns from tf5m through tf1d. Each timeframe object includes OI changes, volume deltas, volatility, and BTC correlation for that period. The top-level response also includes exchange, last_update (Unix timestamp in milliseconds), symbol_count, and total_symbols so you know how many contracts are available on the queried exchange.
Filtering and Sorting with get_screener_data
The get_screener_data endpoint accepts four optional parameters. symbol takes a comma-separated list of base assets or full symbol names (e.g. BTC,ETH,SOL) to narrow results. sort_by accepts values including oi, price, funding_rate, volume_5m, volume_1h, and volume_1d. Pair it with sort_order (asc or desc) to rank contracts by any of those metrics. limit controls how many tickers come back; passing 0 returns the full set. The exchange parameter switches between binance and hyperliquid (alias hl).
Focused Lookups with get_symbol_data
get_symbol_data requires a symbol parameter and returns full timeframe detail for each matching ticker. Unlike the screener endpoint, it is optimized for single or small-batch lookups and always returns the complete set of timeframe fields without needing to configure sorting or pagination. The response includes symbols_found so you can confirm whether a requested symbol is listed on the chosen exchange.
Coverage and Freshness
Data covers perpetual futures only — no spot markets, options, or quarterly contracts. The last_update timestamp on every response lets you determine data age in milliseconds. Coverage is limited to Binance and Hyperliquid; the exchange field in each response confirms which exchange the data came from.
The Orion Terminal API is a managed, monitored endpoint for screener.orionterminal.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when screener.orionterminal.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official screener.orionterminal.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Rank all Binance perpetual futures by open interest to identify the most actively held contracts at a given moment.
- Screen for contracts with extreme funding rates on Hyperliquid to find potential funding arbitrage setups.
- Monitor OI changes across multiple timeframes (5m, 1h, 4h) to detect unusual position buildup in real time.
- Filter and sort by
volume_1hto surface contracts with abnormal short-term trading activity relative to their baseline. - Build a BTC correlation heatmap using per-symbol correlation fields to group assets by market-beta regime.
- Set up automated alerts when a specific symbol's funding rate crosses a threshold using
get_symbol_dataon a polling schedule. - Compare OI and volume deltas across Binance and Hyperliquid for the same base asset to spot cross-exchange divergences.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Orion Terminal provide an official developer API?+
What does the `get_screener_data` endpoint return compared to `get_symbol_data`?+
get_screener_data returns the full list of perpetual futures on the selected exchange and accepts sort_by, sort_order, limit, and symbol filter parameters. get_symbol_data requires at least one symbol, skips sorting and pagination options, and always returns the complete set of timeframe fields for each matching ticker. Use get_screener_data for market-wide scanning and get_symbol_data for targeted lookups.How fresh is the data returned by these endpoints?+
last_update field expressed as a Unix timestamp in milliseconds. You can diff that value against the current time to determine data age. The API does not expose a guaranteed update interval, so checking last_update per response is the reliable way to confirm freshness.