S&P/ASX 200 (AXJO) Price API — Intraday Tick and OHLC Endpoints Explained
You need to draw intraday candles and daily OHLC for the S&P/ASX 200 so you can chart live price action during the Sydney session and close out the day with a clean open–high–low–close. By the end of this guide you’ll query AXJO ticks and candles, fetch daily OHLC, and wire up a latest-price pull you can drop into dashboards, alerts, or backfill jobs.
What you’re building: real-time AXJO dashboard inputs
This walkthrough focuses on three endpoints that cover the majority of charting and monitoring use cases for the S&P/ASX 200 (AXJO):
- Latest price: one-call snapshot suitable for header ticks, alert checks, or warm cache population.
- Intraday interval candles: minute or other fixed-interval bars for the current (or a specific) trading day.
- Daily OHLC: open, high, low, close for the trading day for end-of-day charts and backtests.
We also outline how to pull a compact time-series to backfill a chart range. If you’re not fully sure of the symbol code you need or want to confirm AXJO coverage, check the Indices-API Supported Symbols page.
AXJO latest price: one request, ready for headers and alerts
Indices-API quotes are returned with a base of USD and expressed “per index.” Practically, you’ll use two fields for AXJO:
- rates.AXJO — the base-relative rate (USD → index units).
- rates.USDAXJO — the derived index level in USD-based units; for charting AXJO, this is typically the field you want to display as the latest print.
The latest endpoint updates on a schedule based on your plan. If you’re building a header ticker or alerting loop, cache responses locally for a short interval to avoid unnecessary requests. Timestamps are Unix seconds (UTC). The example below uses AXJO and includes an official sample JSON you can rely on while wiring up parsing.
curl request
curl "https://indices-api.com/api/latest?access_key=YOUR_API_KEY"
Real API response (AXJO)
{"data":{"success":true,"timestamp":1793752800,"date":"2026-11-04","base":"USD","rates":{"AXJO":0.00016211874364479,"USD":1,"USDAXJO":6168.318218595675}}}
Fields you will actually use:
- data.success — boolean indicating the call succeeded.
- data.timestamp — Unix epoch seconds in UTC. Use this to label your tick and for cache freshness checks.
- data.date — calendar date snapshot associated with the payload.
- data.base — the quoting base. Indices-API returns rates relative to USD.
- data.rates.AXJO — the rate in “per index” terms (USD → AXJO units). For most UI needs you won’t plot this directly.
- data.rates.USDAXJO — the index level derived from the base, suitable for rendering as “the AXJO value” on your chart or widget.
Python example: fetch, parse, and normalize the AXJO latest
import requests
from datetime import datetime, timezone
API_URL = "https://indices-api.com/api/latest"
API_KEY = "YOUR_API_KEY"
def fetch_axjo_latest():
r = requests.get(API_URL, params={"access_key": API_KEY}, timeout=10)
r.raise_for_status()
payload = r.json()["data"]
# Timestamps are Unix seconds (UTC)
ts = datetime.fromtimestamp(payload["timestamp"], tz=timezone.utc)
base = payload["base"] # "USD"
rates = payload["rates"]
# For dashboards and alerts, prefer the derived USDAXJO value (index level)
axjo_level = rates.get("USDAXJO")
axjo_rate = rates.get("AXJO") # base-relative rate (USD->index units), useful if you compute inverses
return {
"timestamp_utc": ts.isoformat(),
"date": payload["date"],
"base": base,
"axjo_level": axjo_level,
"axjo_rate": axjo_rate
}
if __name__ == "__main__":
latest = fetch_axjo_latest()
print(latest)
From here you can:
- Animate a header tick using axjo_level.
- Gate alert triggers by comparing axjo_level against thresholds.
- Seed your intraday cache with this point before fetching candles.
For full endpoint details and additional parameters, see the Indices-API Documentation. To start testing quickly, grab a free key with a 7‑day trial; PRO is $49.99/mo when you’re ready to ship.
Intraday candles for AXJO: interval bars you can chart
The Intraday endpoint returns interval-based candles for a specific date. Use it to build minute bars (or your preferred interval) during the ASX session. Typical flow:
- Determine the target trading day in Sydney time (AEST/AEDT). ASX trades Monday–Friday; weekends and public holidays return no advancing data.
- Call the Intraday endpoint with AXJO and your interval/date parameters.
- Render candles as time on X-axis and OHLC values on Y-axis. If you supplement with the latest endpoint, dedupe the last candle vs. the latest tick to avoid double-counting.
Practical notes for intraday pulls:
- Timezone: timestamps are returned in Unix seconds (UTC). Convert to Australia/Sydney for UI display and session splitting.
- Caching: cache per interval. If you’re re-polling during the live session, request only the active window to reduce bandwidth.
- Session gaps: expect no bars outside ASX trading hours; do not interpolate.
- Rollover: at midnight UTC, your local trading day may not have ended in Sydney. Use timestamps, not just dates, for session logic.
You’ll find parameter specifics (date selection and interval options) in the Indices-API Documentation. Keep the symbol as AXJO, and confirm in Symbols if needed.
Daily OHLC for AXJO: end-of-day close you can trust
The OHLC endpoint returns open, high, low, and close for the period. Use this for:
- End-of-day charts and summaries.
- Backtests that require consistent daily bars.
- Daily change calculations and performance tiles.
Response shape you’ll parse looks like this when you request a daily OHLC period:
{
"success": true,
"timestamp": 1793752807,
"base": "USD",
"date": "2026-11-04",
"rates": {
"DOW": {
"open": 0.00028,
"high": 0.00029,
"low": 0.00027,
"close": 0.00029
},
"NASDAQ": {
"open": 0.00038,
"high": 0.0004,
"low": 0.00037,
"close": 0.00039
},
"S&P 500": {
"open": 0.0124,
"high": 0.0126,
"low": 0.0123,
"close": 0.0125
},
"FTSE 100": {
"open": 0.0124,
"high": 0.0126,
"low": 0.0123,
"close": 0.0125
},
"DAX": {
"open": 0.0126,
"high": 0.0126,
"low": 0.0126,
"close": 0.0126
}
},
"unit": "per index"
}
For AXJO, you’ll read rates.AXJO.open|high|low|close (values expressed relative to the USD base as “per index”). If you prefer plotting a direct index level, invert each value or, where available, use the derived USDAXJO-style fields. Always store the timestamp (UTC) and the date for alignment with your analytics window.
Backfilling a short AXJO series: when you need a small window fast
For a lightweight historical pull (e.g., to populate a 1–2 week chart window on load), use the Time-Series endpoint. Provide a start_date and end_date and request AXJO only. Important constraints to keep your job stable:
- end_date cannot be today. Use the most recent completed trading day in Australia/Sydney or yesterday in UTC, depending on your pipeline’s boundary.
- Weekends and public holidays will appear with no new bars; do not assume continuity.
- The response returns daily points keyed by ISO date, each with AXJO values relative to the USD base.
The time-series response includes start_date, end_date, base, and a rates object keyed by date. Use the date keys for indexing and cross-check with your local session calendar. For exact parameters and limits, refer to the Documentation.
How quotes are expressed: base currency, units, and conversions
All examples above return base: USD. That means:
- rates.AXJO expresses the relationship relative to USD in “per index” terms.
- rates.USDAXJO is the inverse, which behaves like an “index level” you can plot directly in most UIs.
If your analytics pipeline prefers one convention over the other, either:
- Use rates.USDAXJO directly for visualization and alert thresholds, or
- Invert rates.AXJO to compute USDAXJO yourself when the derived field is present and you want to validate or when you’re normalizing across indices.
Because timestamps are UTC, convert to Australia/Sydney when aligning to the ASX trading session. The ASX trading calendar and session times are available from the exchange; consult the official calendar for holidays and daylight-saving changes on the ASX trading hours and calendar.
Update frequency, caching, and reliability tips
- Update cadence: the latest endpoint refreshes based on your plan (e.g., every 60 minutes, every 10 minutes, or faster on higher tiers). Read the plan notes in the Documentation.
- Client caching: cache successful responses for a short TTL aligned to your plan’s update frequency. Use the timestamp in the payload to prevent double-processing.
- Non-trading days: expect flat or unchanged series values on weekends and AU public holidays. Build your UI to tolerate missing bars.
- End dates: when calling time-series, set end_date to the latest completed day, not “today,” to avoid partials.
- Symbol hygiene: always verify the exact symbol on the Symbols page. If a symbol differs by venue/code, the symbols endpoint is the authority.
Putting it together: recommended minimal workflow
- Resolve and confirm symbol AXJO on Symbols.
- During market hours (Australia/Sydney):
- Poll Intraday endpoint for the active date and interval to build/extend the candle series.
- Optionally poll Latest to surface a headline tick (rates.USDAXJO) or drive alerts.
- After market close:
- Call OHLC endpoint for the day’s open, high, low, close to finalize the daily bar.
- Use Time-Series to backfill any missing days for analytics or chart history (remember: end_date cannot be today).
- Cache responses at the cadence supported by your plan and use the timestamp field for idempotent processing.
Where to go next
Explore additional parameters, pagination behavior, and response field nuances in the Indices-API Documentation. If your app needs multi-market synthesis or cross-venue normalization, review integration notes on MCP (market connectivity patterns). When you’re ready to build, get your key here: Register.
FAQ
Which field should I plot as the AXJO “price”?
Use rates.USDAXJO from the latest payload to display the index level directly. If you’re consuming OHLC or intraday values quoted “per index,” invert as needed or use provided derived fields when available.
Why does the series not update on weekends?
ASX trades Monday–Friday in Australia/Sydney time and observes public holidays. Expect no new intraday bars or daily closes on those dates. Use the official calendar and time conversions for session logic.
What timezone are timestamps in?
Timestamps are Unix seconds in UTC. Convert to Australia/Sydney in your UI and when deciding the active trading day.
Can I set end_date to today for time-series?
No. Use the most recent completed trading date (yesterday in UTC or the last AU session close). This avoids partial data and aligns with caching semantics.
How frequently does the latest endpoint refresh?
It depends on your subscription. Plans update at different cadences (e.g., every 60 minutes, every 10 minutes, etc.). Check the plan notes in the
Documentation.
If you’re building charts, alerts, or research pipelines around AXJO, you can start in minutes. Get an API key, hit the latest endpoint, and extend to intraday and OHLC as your UI takes shape: Register. Learn more about the platform at indices-api.com and keep the Documentation handy as you ship.