Multi-Market Price Comparison Widget
Layered close ribbons over the last several H1 windows, so a few markets’ recent paths read as parallel rivers. Built from documented candle closes, not invented snapshots.
The real embed in preview mode — synthetic data, no API key, zero network calls. Live data starts once you add your key.
Each additional domain slot adds half the base price.
A fast answer to one useful question.
Layered close ribbons over the last several H1 windows, so a few markets’ recent paths read as parallel rivers. Built from documented candle closes, not invented snapshots.
- Layered close ribbons · recent H1 windows · several symbols.
- Ships a curated default set (BTCUSD, XAUUSD, EURUSD, GBPUSD, USDJPY); symbols= swaps it for up to five of the allowed instruments.
- Renders inside a sandboxed Shadow DOM, so it cannot collide with your page’s CSS or scripts.
- Gateway kind
- ohlc
- Symbol axis
- A curated set, up to five symbols
- Allowed
- BTCUSD, XAUUSD, EURUSD, GBPUSD, USDJPY, AUDUSD, USDCHF, USDCAD, NZDUSD, ETHUSD
- Default set
- BTCUSD, XAUUSD, EURUSD, GBPUSD, USDJPY
- Pinned timeframe
- H1
- Pinned limit
- 48
- Refresh
- ~15 s, cached
Every value here is what the gateway enforces, not a description of it. A parameter outside this scope is rejected before any data is fetched.
Small enough for a sidebar. Useful enough for a homepage.
Price Rivers is a compact derived-data module rather than a full dashboard. It works best where you want one concise market observation with a clearly stated data basis.
Broker landing page relative-performance panel
Editorial market-comparison article
Docs example
for the ohlc kind with N symbols.
One script tag. No chart library. No build step.
Subscribe, authorize the domains that will host the widget, copy your public
wk_ key, and paste the snippet where you want Price Rivers to render.
Subscribe & authorize domains
Your subscription includes 1 domain slot. Add more slots when the same widget needs to run on more sites.
Copy the public widget key
The wk_ key is meant to appear in the page source. It is restricted to the domains you authorize and can be revoked.
Paste the embed
Choose your theme and symbols, then drop the generated script tag into the page.
<script src="https://tickatlas.com/widgets/embed.js?w=price-rivers&k=wk_YOUR_KEY&symbols=BTCUSD,XAUUSD,EURUSD,GBPUSD,USDJPY"></script>
Light is the default, so the snippet stays clean. Dark appends &theme=dark;
Auto appends &theme=auto and follows each visitor’s system preference.
Picking one re-renders the preview above in that theme.
Small configuration surface. Predictable output.
The querystring on the embed.js script tag stays intentionally compact.
Most sites only need the widget slug, the public widget key, a symbol and a theme.
| Parameter | Type | Required | Description |
|---|---|---|---|
| w | string | Yes | Widget slug — fixed to “price-rivers” for this widget. |
| k | string | No | Your public wk_ key. With it the widget goes live on your authorized domains; omit it for the SIMULATED preview (synthetic data, zero network). Default: preview mode. |
| symbols | symbols | No | Comma-separated symbols to display (max 5; extras are dropped), each within the widget’s allowed set. Omit for the widget’s curated default set. Allowed: BTCUSD, XAUUSD, EURUSD, GBPUSD, USDJPY, AUDUSD, USDCHF, USDCAD, NZDUSD, ETHUSD. Default: BTCUSD,XAUUSD,EURUSD,GBPUSD,USDJPY. |
| mode | enum | No | Force preview even with a key, e.g. for a staging page. Allowed: live, preview. Default: live when k is present, else preview. |
| theme | enum | No | Colour theme. light (default) is today’s look; dark uses a WCAG-AA dark palette; auto follows each visitor’s system (prefers-color-scheme). Omit for light. Allowed: light, dark, auto. Default: light. |
Default set
What the embed ships when you pass no symbols=.
Full covered universe
Choose up to five from these 10.
Public embed key outside. Short-lived access inside.
The browser-facing key is domain-scoped by design. The embed exchanges it through our gateway, calls the hosted widget endpoint with short-lived authorization, and renders inside an isolated Shadow DOM.
A sandboxed Shadow DOM with all:initial keeps your page’s styles and scripts out and the widget’s styles in. It fits its container’s width, never wider.
The public wk_ key only renders on domains you add to the subscription, and you can revoke it from your dashboard at any time.
It refreshes about every 15 seconds against cached data, so many visitors collapse onto one computation. Over the per-key / per-domain limit the gateway returns 429 and the widget keeps its last frame.
No current data, a revoked key or an unauthorized domain all produce an explicit “unavailable” state — never a fabricated or zeroed value, and never a thrown error on your page.
Price Rivers subscription
Base subscription includes 1 domain slot.
- Live widget data on the domains you authorize
- Light, dark and auto themes
- Up to five configured symbols
- A public, revocable widget key
- Cancel any time; the embed stays live through the paid month
Domain slot calculator
Each additional domain adds half the base price.
1 domain slot = $9.99 base subscription. Slots are fixed at purchase; manage domains and your key from your dashboard.
The embed has a simple hosted endpoint behind it.
The embed calls this endpoint for you on each refresh, using a short-lived token
minted from your wk_ key — your key never leaves the gateway.
Market data for this widget
Layered close ribbons · recent H1 windows · several symbols.
/widgets/api/price-rivers/ohlc?symbols=BTCUSD,XAUUSD,EURUSD,GBPUSD,USDJPY&timeframe=H1&limit=48 { "success": true, "widget": "price-rivers", "cached": true, "data": { timeframe, assets:[{ symbol, candles:[…], count }] } }
Endpoint parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| symbols | symbols | No | Comparison widgets: comma-separated symbols. Its presence selects the multi-series (assets[]) response. Allowed: BTCUSD, XAUUSD, EURUSD, GBPUSD, USDJPY, AUDUSD, USDCHF, USDCAD, NZDUSD, ETHUSD. Default: BTCUSD, XAUUSD, EURUSD, GBPUSD, USDJPY. This widget pins it to its full configured set. |
| timeframe | enum | No | Candle timeframe. Allowed: M1, M5, M15, M30, H1, H4, D1. Default: H1. This widget pins it to H1. |
| limit | integer | No | Number of most-recent candles returned. Allowed: 1–500. Default: 100. This widget pins it to 48. |
This widget renders the symbol set configured for it, so its embed takes no
symbol — it always requests its full allowed set: BTCUSD, XAUUSD, EURUSD, GBPUSD, USDJPY, AUDUSD, USDCHF, USDCAD, NZDUSD, ETHUSD.
Build a broader market-data surface.
Widgets that pair with Price Rivers on the same page, and the API endpoints behind the same data.
Volatility Compression Widget
H1 candle high/low · last 20 bars · one symbol.
View widget →Market Movement Mosaic Widget
12-window H1 movement mosaic · one symbol (from a set of up to 5).
View widget →Two-Asset Price Comparison Widget
Two-market relative move · recent H1 windows.
View widget →Price Movement Rhythm Widget
Absolute-move rhythm · recent H1 windows · one symbol (from a set of up to 5).
View widget →Before you embed it.
What the widget reads, how preview mode works, and what happens when data is temporarily unavailable.
Which symbols show by default?
BTCUSD, XAUUSD, EURUSD, GBPUSD, USDJPY.
Can I choose different symbols?
Yes, symbols= as a comma list, max 5, from the ten covered instruments.
What's plotted?
Layered close ribbons over recent H1 windows, built from documented candle closes, not invented snapshots — a comparison, not a call.
How often does it refresh?
New points appear as H1 bars close; polling is ~15-second cached with the last verified series held on a gap.
Is it free to preview?
Yes, synthetic and keyless; the live widget is a paid subscription.
Embed it in minutes
Preview it with synthetic data and no key. When you're ready, authorize your domain, add the public widget key and switch the same embed to live data — from $9.99/mo per domain.