Second audit under the Jakarta public transport umbrella: comuline.com replicates KAI Commuter's official partner API (api-partner.krl.co.id); its data has been frozen since ~2025-03-30. Adds the umbrella hub, the comuline topic (sources/analysis/recipes/next-steps), and links the existing transjakarta-live-data topic under the umbrella.
2.9 KiB
2.9 KiB
| title | description | status | category | tags | draft | created | updated | |||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| TransJakarta live data — verified stack: MQTT stream, app REST API, GTFS | How TransJakarta realtime bus data works and how to use it — anonymous MQTT broker, guest REST API, official GTFS. Verified by cross-capture, Oct 2026. | concluded | technical |
|
true | 2026-10-12 | 2026-10-12 |
TransJakarta live data — verified stack
What this is: a verified map of TransJakarta's public realtime data services — the MQTT live-bus stream, the official app REST API, and the GTFS static feed — plus ready-to-use connection recipes.
Origin: reverse-engineering transit.oyenza.com (a third-party tracker) to determine what it uses. The trail led to TransJakarta's own services, which are reachable directly. Cross-capture verification proved the third-party tracker serves the same data as the official feed — see transjakarta-live-data/analysis.
TL;DR — the three services
- Live positions (MQTT):
wss://mqtt.tj.co.id:8084/mqtt— anonymous, no key needed. Topics/mobile_armada/<cell>/<route>/<trip>/<fleet-no>; one JSON payload per bus. - App REST API:
https://tijeapi.transjakarta.co.id— guest JWT viaPOST /v1/auth/login/guest(no account).POST /v1/busreturns nearby buses and the MQTT topics to subscribe. - Static schedule:
https://gtfs.transjakarta.co.id/files/file_gtfs.zip(~2.4 MB, open download; version observed 27 Jul 2026).
Key verified numbers (Oct 12, 2026)
- Live fleet: ~3,300–3,720 buses (BRT, Mikrotrans, Angkutan Umum Integrasi, Transjabodetabek, Royaltrans, Rusun).
- oyenza cross-capture: 1,794 common buses, 100% trip/route ID agreement, median position delta 8.9 m, 97.8% fleet overlap over 75 s.
- Broker: ~2,000+ retained messages delivered instantly on subscribe; per-bus refresh ~8–75 s in samples.
- Third-party tracker's own browser stream: full snapshot (3,722 buses) + deltas every 3.00 s.
Using it
- Copy-paste recipes (curl / node): transjakarta-live-data/recipes
- Ready tool: transjakarta-live-data/scripts/tj-snapshot.mjs — capture a live snapshot to JSON.
- Evidence archive:
workspace/transjakarta-live-captures/(raw captures, scripts, bundles).
Files
- transjakarta-live-data/sources — endpoints, repos, references
- transjakarta-live-data/analysis — architecture + verification evidence
- transjakarta-live-data/methodology — how it was verified (repeatable)
- transjakarta-live-data/recipes — connection examples
- transjakarta-live-data/next-steps — risks + future ideas
Related Research
- jakarta-public-transport-data/index — umbrella topic
- comuline-krl-data/index — sibling audit (rail schedules)