NTLSN.com
← Back to the commons
◇ Open Data & API · Free · CORS-enabled

The sector's data, open to anything.

NTLSN is a static, public commons — no backend, no logins. But every dataset behind it is openly readable: query it, embed it, pipe it into a spreadsheet, or wire it straight into an AI assistant. One open source of truth for Australian higher-ed teaching & learning.

All endpoints return JSON over HTTPS with Access-Control-Allow-Origin: *, so they work from any site or script. Curation licensed CC BY-NC-SA 4.0; linked third-party works belong to their authors. NTLSN claims no endorsement by the universities or bodies it catalogues.

No API keyNo rate limitNo loginsCC BY-NC-SA 4.0

01The endpoints

Base URL https://www.ntlsn.com/data/. Everything is a plain static JSON file — fast, cacheable, and impossible to take down with traffic.

/data/events.json
94 sector events — conferences, showcases, workshops, webinars across all 42 universities.
id · title · uni · date · endDate · type · desc · url · verified
Array · ~27 KB
/data/ltr.json
The rescued archive — 1,431 ALTC- & OLT-funded teaching-scholarship works, 1994–2025.
t (title) · a (author) · y (year) · u (url)
Array · ~270 KB
/data/ltr-bestpractice.json
80 curated Good Practice Reports & guides, 2006–2024.
t · a · y · u · theme
Array · ~14 KB
/data/universities.json
All 42 universities — geo-coords, alliance group, real L&T team page, and the Traditional Country each stands on.
id · name · abbr · city · state · lat · lng · group · tlUrl · traditionalCountry
Array · ~13 KB
/data/rcf.json
The Recognition Credit Framework — open, versioned, sourced point-weights for teaching recognition.
framework · version · updated · status · domains[] · cite
Object · ~7 KB
/feed.xml  ·  /events.ics
The same events as an RSS feed and a subscribable iCalendar file — drop into any reader or calendar.
RSS 2.0 · iCalendar (VEVENT)
Feeds

02Quick start — fetch it

No setup. From a browser, a Node script, a notebook — anywhere:

// the next five sector events, anywhere
fetch('https://www.ntlsn.com/data/events.json')
  .then(r => r.json())
  .then(events => {
    const soon = events
      .filter(e => e.date >= new Date().toISOString().slice(0,10))
      .sort((a,b) => a.date.localeCompare(b.date));
    console.log(soon.slice(0,5));
  });

03Embed live events on your site

One line. A self-contained, shadow-DOM widget that never clashes with your CSS — sector-wide, or filtered to one university. ~5 KB, no dependencies.

<script src="https://www.ntlsn.com/widget.js" data-limit="5" data-uni="usq"></script>

data-limit = how many to show (default 5). data-uni = optional university id (e.g. usq, unimelb, curtin) — omit for sector-wide. It reads /data/events.json and links back here.

04Wire it into AI — the MCP server

This is the part that turns NTLSN into infrastructure: a small Model Context Protocol server wraps these open endpoints into tools any AI assistant (Claude, etc.) can call — "what teaching conferences are coming up in WA?", "search the archive for work on academic integrity." MCP is the USB-C standard for AI ↔ data; NTLSN is the sector's plug.

⚡ Zero setup — we host it for you. Point any MCP-compatible AI client straight at https://ntlsn.com/.netlify/functions/mcp (MCP over HTTP, JSON-RPC 2.0 — tools: upcoming_events, search_archive, universities). No Python, no install, no key. See it live →  ·  or run your own copy below for offline/custom tools.
Run it in three steps. pip install "mcp[cli]" httpx → save the file below as ntlsn_mcp.py → register it in your client (claude mcp add ntlsn -- python /path/to/ntlsn_mcp.py). No NTLSN credentials needed — it only reads the public open data.
# ntlsn_mcp.py — expose NTLSN's open sector data to any AI assistant via MCP.
# pip install "mcp[cli]" httpx
import httpx
from mcp.server.fastmcp import FastMCP

BASE = "https://www.ntlsn.com/data"
mcp = FastMCP("ntlsn")

@mcp.tool()
def upcoming_events(uni: str = "", limit: int = 10) -> list:
    """Upcoming Australian higher-ed teaching & learning events. Optional uni id, e.g. usq."""
    data = httpx.get(f"{BASE}/events.json", timeout=15).json()
    today = __import__("datetime").date.today().isoformat()
    data = [e for e in data if e.get("date","") >= today]
    if uni: data = [e for e in data if e.get("uni") == uni.lower()]
    return sorted(data, key=lambda e: e["date"])[:limit]

@mcp.tool()
def search_archive(query: str, limit: int = 15) -> list:
    """Search the 1,431-work ALTC/OLT teaching-scholarship archive (1994-2025)."""
    q = query.lower()
    data = httpx.get(f"{BASE}/ltr.json", timeout=30).json()
    hits = [w for w in data if q in (w.get("t","") + " " + w.get("a","")).lower()]
    return hits[:limit]

@mcp.tool()
def universities() -> list:
    """All 42 Australian universities: L&T team pages, alliance group, Traditional Country."""
    return httpx.get(f"{BASE}/universities.json", timeout=15).json()

if __name__ == "__main__":
    mcp.run()

That's three tools over open data, no backend required. Fork it, add best_practices or recognition_framework, and you've given any AI the sector's teaching & learning memory. llms.txt describes the commons for AI crawlers too.

05Use it well

NTLSN — the National Teaching & Learning Sector Network. A free, open Open Educational Practice commons. Found a gap in the data or want an endpoint added? Get in touch.
Curation © NTLSN, licensed CC BY-NC-SA 4.0. Built by A/Prof Seb Dianati, University of Southern Queensland.