Skip to content

Repository files navigation

DGERT Licensed Schools — Portugal Interactive Map

An interactive map of all professional training centres in Portugal licensed by DGERT (Direção-Geral do Emprego e das Relações de Trabalho).

These are the institutions authorised to issue an enrolment certificate — a document required for obtaining or renewing a Portuguese residence permit (AIMA/SEF).

Data snapshot: April 2026 — 3,361 licensed institutions across all of Portugal.


Open the map

Just double-click map.html — it opens in your browser with no server required.

The included schools.js already contains pre-geocoded coordinates for all schools, so the map works immediately out of the box.


Features

  • 3,361 schools across all 18 districts of Portugal
  • Cluster view — markers group at low zoom, expand as you zoom in
  • Filters — search by name, district, or training area (CNEF code)
  • School popup — address, contacts, licensed training areas
  • Notes — add contact status and free-text notes per school, saved in localStorage
  • Export / Import notes as JSON — share progress with others or across devices

Data source

The school list comes from the official DGERT public registry: certifica.dgert.gov.pt

The raw export (download_listagem_15-04-2026-15-45-07.csv) is included as-is for transparency. I normalised it into schools.csv (UTF-8, clean fields) and geocoded the addresses using the Google Maps Geocoding API. The result is schools.geojson / schools.js.

Anyone is free to use this data — it is a public government registry.


Files

File Description
map.html The interactive map — open directly in browser
schools.js Pre-geocoded school data (loaded by map.html)
schools.geojson Same data as GeoJSON — use with QGIS, Mapbox, etc.
schools.csv Normalised CSV — name, address, district, CNEF areas
download_listagem_*.csv Original DGERT export (UTF-16, semicolon-separated)
geocode.py Script to re-geocode or extend the dataset
geocode_cache.json Per-school geocoding cache (keyed by NIPC)

Re-geocoding (optional)

If you want to re-run geocoding — for example, to fix failures or extend to new data:

# Set your Google Maps API key
export GOOGLE_MAPS_API_KEY=AIza...

# Test on 20 schools
python3 geocode.py --filter lisboa --limit 20

# Greater Lisbon (Lisboa + Setúbal districts, ~1,253 schools)
python3 geocode.py --filter lisboa-area

# All of Portugal (3,361 schools, ~$17 in API cost — within Google's free $200/month)
python3 geocode.py --filter all

The cache is keyed by NIPC (the school's tax ID), so re-running only charges for schools not already in geocode_cache.json.

CLI options

Flag Description
--key KEY API key (or set GOOGLE_MAPS_API_KEY env var)
--filter lisboa | lisboa-area | porto | all | Braga,Aveiro,...
--limit N Geocode at most N schools (for testing)
--rate 0.05 Pause between requests in seconds (Google allows 50 qps)
--force Re-geocode even if already cached

Training area codes (CNEF)

Schools are tagged with CNEF codes (Portugal's official education area classification). The first digit indicates the broad category:

Code Area
0 General education programmes
1 Education and pedagogy
2 Arts and humanities (22x = languages)
3 Social sciences, business, law (34x = business/admin, 38x = law)
4 Science, mathematics, IT (48x = computing)
5 Engineering, industry, construction
6 Agriculture
7 Health and social services (72x = healthcare, 76x = social work)
8 Services (81x = hospitality, 86x = security)

License

Code: MIT

Data: public government registry (DGERT) — free to use, no restrictions.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages