Datasets · commercial

Finnish school holidays for every municipality

Finnish school-year calendars, basic-education pupil counts, and school-age population by age band — one consistent dataset, per municipality. The same data this site uses for parent queries.

Coverage

308 Municipalities live
308 Finnish municipalities

Built for

If your business cares when families are home or away, this dataset is for you.

Childcare and after-school

Staff and capacity planning around the days families are home.

Family-calendar apps

Drop school breaks alongside personal events without scraping 308 municipal sites.

Off-peak pricing

Rooms, activities, retail — price for when families are local versus traveling.

What's in a package

A normalized multi-file export. Calendars, typed events, municipal sources, and Statistics Finland area profiles, cross-referenced by ID with ISO dates throughout. Every file ships with a SHA-256 checksum.

FileFormatContents
calendars.jsonjsonOne record per municipality × school year: term bounds, provider, coverage, status, and references into events and sources.
events.jsonjsonTyped term and break events with localized names and ISO dates.
sources.jsonjsonMunicipal source URLs, publishers, and retrieval dates behind every calendar.
area-profiles.jsonjsonStatistics Finland pupil counts and school-age population by age band.
municipalities.jsonjsonAll 308 municipalities with localized names, slugs, and coordinates.
coverage-report.jsonjsonPer-municipality coverage extent and verification warnings.
manifest.jsonjsonPackage id, schema version, record counts, and per-file SHA-256.
SHA256SUMS.txttxtChecksums for integrity verification, alongside README and LICENSE.
calendars.json · one record · truncated
{
  "id": "cal_005_2025_2026_basic_all",
  "municipalityCode": "005",
  "schoolYear": "2025-2026",
  "startDate": "2025-08-01",
  "endDate": "2026-07-31",
  "provider": { "name": "City of Alajärvi", "type": "municipality", "homepageUrl": "https://alajarvi.fi/" },
  "educationLevel": "basic_education",
  "languageTrack": "all",
  "scope": "municipality_wide",
  "coverage": { "extent": "full_municipality" },
  "status": "published",
  "confidence": 0.98,
  "version": "fi-school-calendar-005-2025-2026.1",
  "lastVerifiedAt": "2026-05-16T00:00:00Z",
  "eventIds": [
    "cal_005_2025_2026_basic_all:evt_005_2025_2026_autumn_break",
    "…"
  ],
  "sourceIds": [
    "cal_005_2025_2026_basic_all:src_005_2025_2026_alajarvi_school_term_dates_2025_2026"
  ]
}
events.json · one record · truncated
{
  "id": "cal_005_2025_2026_basic_all:evt_005_2025_2026_autumn_break",
  "calendarId": "cal_005_2025_2026_basic_all",
  "type": "autumn_break",
  "name": { "fi": "Syysloma", "sv": "Höstlov", "en": "Autumn holiday" },
  "startDate": "2025-10-13",
  "endDate": "2025-10-17",
  "isDerived": false,
  "certainty": "exact",
  "datePrecision": "exact_date",
  "sourceIds": [
    "cal_005_2025_2026_basic_all:src_005_2025_2026_alajarvi_school_term_dates_2025_2026"
  ]
}
Calendar fieldTypeDescription
idstringStable calendar id: municipality × school year × track.
municipalityCodestringOfficial Finnish municipality code (Tilastokeskus).
schoolYearstringAcademic year, e.g. 2025-2026.
startDate / endDatestringISO bounds of the school year.
providerobjectEducation provider name, type, and homepage.
educationLevelenumbasic_education, general_upper_secondary_education, and others.
languageTrackenumall, fi, sv, se, smn, sms.
scopeenummunicipality_wide, school_specific, provider_specific.
coverageobjectFull vs partial municipality, with stage and track scoping.
statusenumpublished, verified, proposed, and others.
confidencenumber0–1 confidence in the compiled dates.
lastVerifiedAtstringISO timestamp of the most recent source check.
appliesToobjectLocalized label and caveat for who the dates cover.
eventIdsarrayReferences into events.json.
sourceIdsarrayReferences into sources.json.

How many pupils are on holiday

Every municipality also carries basic-education pupil counts and school-age population by age band (6, 7–12, 13–15, 16–18), sourced from Statistics Finland. Joined with the calendar data, that's how many pupils are out on any given day in any given region — by age.

area-profiles.json · one record · truncated
{
  "municipalityCode": "005",
  "municipalityName": "Alajärvi",
  "region": { "code": "14", "name": "South Ostrobothnia" },
  "metrics": {
    "basicEducationPupilCount": { "value": 973, "year": 2025, "unit": "pupils" },
    "schoolAgePopulation": {
      "value": 1471,
      "year": 2025,
      "buckets": { "age6": 89, "age7To12": 623, "age13To15": 384, "age16To18": 375 }
    },
    "population": { "value": 8982, "year": 2025, "unit": "persons" }
  }
}

Licensing

Available for commercial licensing. Tell us what you're building and we'll work out the terms.

Get in touch

Looking for the free public-holiday JSON API instead? See the API docs. Finnish public holidays are CC-BY-4.0 and a separate product from this commercial school-holiday dataset.