npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@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.

Readme

English | Français | العربية

@geoalgeria/telecom

Algeria mobile-network coverage, as data you can install.

npm npm downloads Code: MIT

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/telecom
import 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.