Helium Public API
A free, key-less, CORS-open mirror of our internal Helium data layer. Same JSON our own SSR pages use — no signup, no quota worth worrying about, 60 requests/minute per IP.
Endpoints
| Method | Path | Summary |
|---|---|---|
| GET | /helium/coverage/h3/{hex} | All known sources for one H3 hex (Foundation + first-party + curated). |
| GET | /helium/airports/{iata}/coverage | Coverage hexes within a radius of a major airport (JFK, LHR, …). |
| GET | /helium/hotels/{slug}/coverage | Coverage hexes around a curated hotel (marina-bay-sands, ritz-paris, …). |
| GET | /helium/coverage/by-traveler-density | Hexes most attested by LTE.app’s own fleet — real traveler density. |
| GET | /helium/coverage/geojson?country=XX | Daily-built FeatureCollection of active hexes for a country (24h cache). |
| GET | /helium/metrics | Prometheus exposition: coverage hex counts, last-refresh ages, geojson cache health. |
| GET | /helium/network/stats | Latest Helium Foundation network snapshot (daily). |
| GET | /helium/network/ticker | SSE stream of network stats, refreshed every 15 seconds. |
| GET | /helium/oracles/prices | Latest HNT / MOBILE / IOT oracle prices (?tokens=HNT,MOBILE). |
| GET | /helium/openapi.json | Curated OpenAPI 3.0 spec for this slice. |
Quick start
curl https://lte.app/helium/network/stats curl 'https://lte.app/helium/oracles/prices?tokens=HNT,MOBILE' curl https://lte.app/helium/airports/JFK/coverage curl 'https://lte.app/helium/coverage/geojson?country=US' curl https://lte.app/helium/metrics
Per-country GeoJSON
/helium/coverage/geojson?country=XX returns a daily-built FeatureCollection of every active hex we know about for an ISO-2 country. Served straight from the materialised cache with Cache-Control: public, max-age=86400 so you can drop it into MapLibre, Mapbox GL, Leaflet, or any GIS pipeline without spamming the API.
Prometheus metrics
/helium/metrics exposes a stable, public Prometheus contract: coverage hex counts and last-refresh ages by source, the freshness of the nightly Foundation snapshot, and the per-country GeoJSON cache build state. Point any Prometheus / Grafana Agent / Datadog OpenMetrics scraper at it.
scrape_configs:
- job_name: lte-helium-public
metrics_path: /helium/metrics
scheme: https
static_configs:
- targets: ['lte.app']Official SDKs
Both SDKs are MIT-licensed, hand-written, no codegen, and wrap every endpoint above with typed responses, exponential-backoff retries, and Retry-After handling.
JavaScript / TypeScript
npm install @lte/helium-public
import { createClient } from '@lte/helium-public';
const client = createClient();
const stats = await client.networkStats();
const us = await client.coverageGeoJson('US');
const metrics = await client.metricsText();Python
pip install lte-helium-public
from lte_helium_public import create_client
client = create_client()
stats = client.network_stats()
us = client.coverage_geojson("US")
print(client.metrics_text())Both packages ship sources on GitHub and are published as @lte/helium-public on npm and lte-helium-public on PyPI. Async variants in Python share the same surface with an a prefix (await client.anetwork_stats()).
Embed the coverage map
Drop our live coverage map onto any page with one snippet. The embed loads MapLibre from a CDN, points at the same vector tile endpoint our own pages use, and respects a few data-* attributes so you can pre-frame it.
<div data-lte-coverage
data-country="US"
data-center="40.7,-74.0"
data-zoom="5"
data-height="420"></div>
<script src="https://lte.app/embed/coverage.js" async></script>data-country— ISO-2 code, filters tiles to one country.data-center— initiallat,lng, e.g.40.7,-74.0.data-zoom— initial zoom (default 4).data-height— map height in pixels (default 360).
For SPAs that mount the container after the script loads, call window.LteCoverageEmbed.renderAll() (or .render(el)) once the node is in the DOM.
Data sources
- Helium Foundation Entity API (network counters, hotspot metadata)
- Solana RPC (reward signatures, balance deltas via free public endpoints)
- LTE.app first-party fleet (real traveler density, attestations)
- OpenStreetMap (basemap tiles for our SSR coverage maps)
Terms
Output is licensed CC-BY-4.0 — please credit LTE.app. Don’t hammer: the per-IP limit is firm. For higher volume, get in touch.