Skip to content

Latest commit

 

History

History

README.md

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

@geoalgeria/mobilis

The Mobilis sales network in Algeria, as data you can install.

npm npm downloads Code: MIT

The 164 commercial agencies (Agence Mobilis) and 12,180 approved points of sale (points de vente agréés) of Mobilis (ATM Mobilis), Algeria's state-owned mobile operator. Agencies come with bilingual FR/AR name and address and GPS coordinates; points of sale come with name, address, and the commune they sit in. Shipped as JSON, CSV, and GeoJSON. Part of GeoAlgeria.

npm install @geoalgeria/mobilis
import mobilis from "@geoalgeria/mobilis";

const agences = mobilis.agences();   // 164 geocoded Mobilis agencies
const pdv = mobilis.pdv();           // 12,180 approved points of sale
const all = mobilis.all();           // everything (agencies first)

// Agencies in a wilaya (joins GeoAlgeria's wilaya_code)
const inOran = agences.filter((a) => a.wilaya_code === "31");

// Points of sale in a commune
const inBabEzzouar = pdv.filter((p) => p.commune === "BAB EZZOUAR");

What you can build

  • Agency locators – coordinates on every one of the 164 agencies, ready for distance sorting or a map.
  • Coverage by commune – the points of sale are tagged with their commune, so you can count or rank Mobilis presence per commune/wilaya.
  • Bilingual directories – agency name and address in both French and Arabic.

What's inside

Dataset Count Coordinates Notes
Agencies (Agence Mobilis) 164 ✅ all 164 bilingual FR/AR, 65/69 wilayas
Approved points of sale 12,180 ❌ none FR name + address + commune

The points of sale are a commune-level directory, the source carries no coordinates for them. To map them, aggregate to commune centroids (join commune to the geoalgeria communes) or geocode the addresses yourself.

Formats

The npm package ships the JSON (importable directly):

import agences from "@geoalgeria/mobilis/data/agences.json" with { type: "json" };
// or via CDN, no install:
// https://cdn.jsdelivr.net/npm/@geoalgeria/mobilis/data/agences.json

The loaders and record shapes are fully typed, TypeScript definitions ship in the package:

import mobilis, { type Agence, type Pdv } from "@geoalgeria/mobilis";
const agences: Agence[] = mobilis.agences();

CSV and GeoJSON are in the repo under data/ and bundled in every GitHub Release:

data/
  agences.json              # 164 agencies (array)
  pdv.json                  # 12,180 points of sale (array)
  metadata.json             # source, counts, generated_at
  csv/agences.csv           # repo + Release bundle (not in npm tarball)
  csv/pdv.csv
  geojson/agences.geojson   # Point features (agencies only)

Only the agencies are geocoded, so only agences.geojson exists. The points of sale have no lat/lng and are not emitted as GeoJSON.

Record shapes

Agency (Agence Mobilis)

{
  "id": "ag-01-001",
  "code": "12237",
  "type": "agence",
  "name": "Agence Commerciale Adrar",
  "name_ar": "الوكالة التجارية أدرار",
  "address": "Rue de l'indépendance, Adrar",
  "address_ar": "شارع الإستقلال، أدرار.",
  "wilaya_code": "01",
  "lat": 27.877829,
  "lng": -0.274316
}

Approved point of sale

{
  "id": "pdv-01-001",
  "code": "2955",
  "type": "pdv",
  "name": "PDV LIBRAIRIE GAFA ABDERRAHMANE",
  "address": "RUE 17 OCTOBRE CITE 20 AOUT N 03",
  "commune": "ADRAR",
  "wilaya_code": "01",
  "lat": null,
  "lng": null
}

id is a stable {prefix}-{wilaya_code}-{seq} key synthesized by GeoAlgeria (ag- for agencies, pdv- for points of sale; seq ordered by the source id), so it stays unique across the merged all() collection. Mobilis' own id is kept as code. wilaya_code joins to GeoAlgeria's wilaya_code.

Need the administrative divisions too?

For wilayas, dairas, and communes, use the main geoalgeria package, it's how you turn a point of sale's commune into a polygon or centroid. Use @geoalgeria/mobilis when you only need the Mobilis network.

Source

Data comes from the Mobilis store locator (https://mobilis.dz/mapagence). There is no documented API, the locator calls a handful of JSON endpoints behind an X-Requested-With header, and the site sits behind a WAF. Run npm run fetch to regenerate every output: it primes a session, walks all 69 source wilayas for both categories, parses the "lat, lng" coordinate strings (handling the comma-decimal rows), and joins Mobilis's Arabic wilaya labels to GeoAlgeria's canonical codes. That name join is required because Mobilis's numeric ids 59–69 use a different ordering from the official codes.

License & attribution

Code is MIT. The underlying data is © ATM Mobilis, redistributed for reference and to power GeoAlgeria. Verify against Mobilis for authoritative, real-time information. The points-of-sale list churns as resellers come and go, each rebuild reflects whatever the locator currently shows.

API docs & field reference → · Browse all packages →


Made by Yasser's Studio · LinkedIn · X · hello@yasser.studio