@geoalgeria/telecom
v3.1.0
Published
Algeria mobile-network coverage as data: 4,093 5G coverage records from operator maps (Djezzy, Mobilis, Ooredoo), with 4,069 publishable coordinates. JSON, CSV, GeoJSON, TypeScript.
Maintainers
Readme
@geoalgeria/telecom
Algeria mobile-network coverage, as data you can install.
4,093 5G coverage records across Algeria, published by the operators' own coverage maps, Djezzy (1,000), Mobilis (2,917), and Ooredoo (176), with 4,069 publishable coordinates and wilaya/commune linkage. Shipped as JSON, CSV, GeoJSON, and TypeScript. Part of GeoAlgeria.
npm install @geoalgeria/telecomimport telecom from "@geoalgeria/telecom";
const sites = telecom.coverage(); // all 4,093 points
const djezzy = telecom.coverageByOperator("djezzy"); // 1,000
const mobilis = telecom.coverageByOperator("mobilis"); // 2,917
const ooredoo = telecom.coverageByOperator("ooredoo"); // 176
// 5G coverage in a wilaya (joins GeoAlgeria's wilaya_code)
const inAlger = sites.filter((s) => s.wilaya_code === "16");The loaders and record shapes are fully typed:
import telecom, { type CoverageSite } from "@geoalgeria/telecom";
const sites: CoverageSite[] = telecom.coverage("5G");What you can build
- 5G coverage checkers – "is there 5G near me / in my wilaya?"
- Operator comparison – Djezzy / Mobilis / Ooredoo footprint per wilaya/commune.
- Maps – drop-in GeoJSON point layers for the 5G rollout.
What's inside
| Operator | Points | Granularity | Source map | | --- | --- | --- | --- | | Djezzy | 1,000 | cell site | djezzy5g.dz | | Mobilis | 2,917 | cell site | mobilis.dz/map/5g | | Ooredoo | 176 | covered commune | ooredoo.dz |
Covering 67 current wilayas. The operator maps still use the 58-wilaya scheme; 40 Mobilis points are safely reassigned to nine daughter wilayas, and eight carry a reviewed wilaya correction with the evidence that settled it.
What a point is: each record is a point published on the operator's own 5G coverage map. Djezzy and Mobilis publish cell-site locations; Ooredoo publishes commune-level points within covered communes (a few communes carry several). The circles those maps draw are a fixed display radius, not measured RF coverage, treat these as 5G presence points, not coverage polygons.
Eighteen Djezzy records and six Mobilis records remain in the dataset without coordinates because the operator's own wilaya and commune labels contradict its published points. Their review receipts are included, while the false points are withheld from JSON map fields and GeoJSON until replacement coordinates can be verified.
Organization (future-proof)
Files are named by technology and operator, so adding a new generation later is purely additive, nothing renames:
data/
5g-djezzy.json 5g-mobilis.json 5g-ooredoo.json
csv/5g-djezzy.csv ... # CSV mirror per file
geojson/5g-djezzy.geojson ... # Point features per file
metadata.json # canonical v2 metadata (schema_version, sources[], entities[], by_operator)The npm package ships JSON, CSV and GeoJSON; the same files also ride in
every GitHub Release.
coverage() concatenates the per-operator files (ids are operator-prefixed, so
the union is collision-free).
Record shape
Records follow the canonical GeoAlgeria v2 contract (geo_precision,
geo_method, source as a key into metadata.sources[]), plus the
coverage-specific fields:
{
"id": "djezzy-ba5a8250cb",
"name": "Ain benian ville",
"wilaya_code": "16",
"commune_code": null,
"commune": null,
"commune_ar": null,
"lat": 36.7898,
"lng": 2.91341,
"geo_precision": "exact",
"geo_method": "operator_map",
"source": "djezzy",
"operator": "djezzy",
"technology": "5G",
"address": "AIN BENIAN"
}id is a deterministic {operator}-{coordinate-hash} key, stable across
re-fetches. wilaya_code joins to GeoAlgeria's current wilaya_code. For 40
Mobilis records, source_wilaya_code preserves the operator's mother wilaya and
commune_code records the corroborating canonical commune. commune_ar is the
commune's official Arabic name from the national commune registry wherever a
record resolves to a canonical commune, 3,013 of 4,093; where nothing resolves,
the operator's own Arabic label is published unchanged. The operators treat that
column as free text and rewrite it between pulls, so their spelling of it is not
what ships. Fields a given operator doesn't provide are null (Djezzy publishes
no commune at all; Mobilis and Ooredoo publish a commune name but no street
address). For Ooredoo,
name is the covered commune and points are approximate
(operator_commune_point), one point per covered commune, not a cell site.
Need the administrative divisions too?
For wilayas, dairas, and communes, use the main
geoalgeria package, it's how
you turn a wilaya_code into a polygon or name.
Source & regeneration
Data comes from each operator's public 5G coverage map. Run npm run fetch to
regenerate every output: it decodes Djezzy's encoded marker blob, reads Mobilis's
JSON endpoint, and reads Ooredoo's covered-communes endpoint from a real browser
session (the Ooredoo site authenticates itself; this step needs the
agent-browser CLI on PATH).
Everything is normalized into one schema with wilaya_code resolved to GeoAlgeria
codes. Operators file under the 58-wilaya scheme; Mobilis points are moved to a
current daughter wilaya only when an exact current or official ONS 2021 French or Arabic commune match and polygon containment
agree. Writes are all-or-nothing, so a
failed operator never overwrites good committed data with a partial set.
Licence & attribution
Code is MIT. The underlying data is © the respective operators (Djezzy, Mobilis, Ooredoo), redistributed for reference and to power GeoAlgeria. 5G rollout is ongoing, each rebuild reflects whatever the operators' maps currently show; verify against the operators for authoritative, real-time information.
API docs & field reference → · Browse all packages →
Made by Yasser's studio · LinkedIn · X · [email protected]
GeoAlgeria is free, and it stays free. The same studio also makes maps, websites, mobile apps and open data for clients.
