Open data for agents
AI guide to Skolkoll's open data
A compact reference for AI agents, browser agents and other programs that need to find, read and compare Swedish school data without manual navigation.
Machine-readable CSV download catalogue
The page's #ai-data-endpoints script contains the same open-data download catalogue as JSON: CSV URLs, file format, field descriptions, rights terms, row granularity and typical agent flows.
- Format
- CSV (UTF-8, semicolon, Swedish decimal comma)
- Schema
- Schema.org DataCatalog with one Dataset per CSV endpoint and a DataDownload distribution
- Recommended parsing
- Read CSV with
sep=";", encoding="utf-8-sig", decimal="," and comment="#"
CSV endpoints
| Endpoint | Row granularity | Content | Source |
|---|
/nedladdning/skolor.csv Documentation | One row per school unit | All school units in Sweden with operator, school form, municipality, status, coordinates and key metrics. | Skolverket |
/nedladdning/kommuner.csv Documentation | One row per municipality | Aggregated compulsory-school statistics per municipality with results, teacher certification, pupil counts and finances. | Kolada |
/nedladdning/historik.csv Documentation | One row per municipality and statistics year | Time series per municipality for compulsory school: results, cost per pupil, pupils per teacher and teacher certification. | Kolada |
/nedladdning/antagning.csv Documentation | One row per school, upper-secondary programme and admissions year. | Admissions scores per upper-secondary school, programme and specialisation, as time series per admissions year from Skolverket's admissions statistics. States whether each score is the lowest admitted or the average admissions score. | Skolverket Planned Educations API v3 |
Agent flows
Top list within a municipality
Query: Find the top 10 compulsory schools in Uppsala by final-grade score and show teacher certification alongside.
Method: Filter skolor.csv on kommunNamn=Uppsala and skolformer containing GR, sort descending by meritvardeAk9.
Data files: School data
Municipality comparison
Query: Compare cost per pupil, teacher certification and final-grade score between Nacka, Uppsala and Lund.
Method: Use kommuner.csv for the latest values and historik.csv for trends over time per kommunKod.
Data files: Municipality data, History
Upper-secondary choice
Query: List Natural Sciences programmes in Gothenburg where the latest admission score is below 270.
Method: Filter antagning.csv on kommun=Göteborg and programkod=NA, convert antagningspoang to a number and sort.
Data files: Admissions
Fields to start with
School data
| Field | Description |
|---|
skolenhetskod | Skolverket's unique identifier for the school unit |
skolenhetNamn | Official name of the school unit |
kommunNamn / kommunKod | Municipality name and four-digit municipality code |
huvudmanNamn | Operator or organisation running the school |
skolformer | School forms such as GR (compulsory), GY (upper-secondary) and FORSK (preschool) |
lat / lng | Coordinates in WGS84 when geocoding is available |
meritvardeAk9 | Average final-grade score in Year 9 |
behorigaLararePct | The share of teachers (in full-time equivalents) who hold a Swedish teaching licence (lärarlegitimation) and are qualified to teach, where qualification covers the school type, subject and, in compulsory school, the grade band of the teaching they do. For preschools without a compulsory or upper-secondary school: the share of staff with pedagogical higher education. |
Municipality data
| Field | Description |
|---|
kommunKod | Four-digit municipality code |
kommunNamn | Municipality name |
kostnadPerElev_kr | Total compulsory-school cost per pupil |
elevPerLarare | Pupils per teacher |
meritvardeSnitt | Average final-grade score in Year 9 |
behorighetsgrad_pct | Share of certified teachers in compulsory school in % (Kolada N15813, full-time equivalents, definition: https://skolkoll.se/en/glossary/larbehorighet/) |
andelKommunalElever_pct | Share of pupils in municipal schools |
andelFristaendeElever_pct | Share of pupils in independent schools |
History
| Field | Description |
|---|
kommunKod / kommunNamn | Municipality identifier and name |
ar | Statistics year |
meritvardeSnitt | Average final-grade score in Year 9 |
kostnadPerElev_kr | Total compulsory-school cost per pupil |
elevPerLarare | Pupils per teacher |
behorighetsgrad_pct | Share of certified teachers in compulsory school in % (Kolada N15813, full-time equivalents, definition: https://skolkoll.se/en/glossary/larbehorighet/) |
Admissions
| Field | Description |
|---|
schoolCode | School unit code |
schoolName | School name |
municipality | Municipality name |
programme | Upper-secondary programme name |
programmeCode | Upper-secondary programme code |
specialisation | Specialisation, if applicable |
year | Admissions year |
admissionsScore | Published admissions score |
scoreMeasure | What the admissions score measures: lowest = lowest admitted score, average = average admissions score. Empty = the source does not state it. |
Python example
import pandas as pd
schools = pd.read_csv(
"https://skolkoll.se/nedladdning/skolor.csv",
sep=";",
encoding="utf-8-sig",
decimal=",",
comment="#",
)
uppsala_top10 = (
schools[
(schools["kommunNamn"] == "Uppsala")
& schools["skolformer"].str.contains("GR", na=False)
]
.sort_values("meritvardeAk9", ascending=False)
.head(10)
)
print(uppsala_top10[["skolenhetNamn", "meritvardeAk9", "behorigaLararePct"]])
For more data files and historical versions, see downloadable data files(the metadata-rich portal is currently Swedish-only).