Stockholm Archipelago Trail

Data & Sources

Last reviewed: 2026-09-10

The travel planner combines open data (OpenStreetMap, Wikidata, public-transport timetables) with the trail route, which the Stockholm Archipelago Trail owns. Every object states its source, licence and freshness, and carries a persistent identifier — so it can be verified, reused, and corrected at the right place.

Map & data attribution

Map data & base-map tiles © OpenStreetMap contributors, licensed ODbL 1.0; tiles built with Protomaps. Places from OpenStreetMap (ODbL) and Wikidata (CC0). Ferry timetables via Trafiklab / Waxholmsbolaget. Trail route © Stockholm Archipelago Trail, licensed CC BY 4.0.

Full per-source licences and links in the table below.

1Who owns what

We are the source of truth for the trail itself, and a consumer / re-publisher of everything else. Fix data at its source and the fix benefits every map that uses it.

DatasetSource of truthLicenceOur role
Trail route + stages
Stockholm Archipelago TrailCC BY 4.0Source of truth
Places (POIs)
OpenStreetMapODbL 1.0Consumer / re-publisher
Names, photos, cross-links
Wikidata / Wikimedia CommonsCC0 / per photoConsumer
Defibrillators (AED)
Sveriges HjärtstartarregisterRegistry API termsConsumer
Firepits (grillplatser)
grillplatser.nuCC0 / CC BY / CC BY-SAConsumer
Ferry timetables
Waxholmsbolaget / TrafiklabOpen transport dataConsumer
Base map
OpenStreetMap (via Protomaps)ODbL 1.0Self-hosted tiles
Problem reports
This plannerReviewed public fieldsSource of truth
Routing, reachability, reliability scores
This planner—Derived / computed

2Sources & attribution

SourceWhat we use it forLicenceUpdated
The trail route
stockholmarchipelagotrail.com ↗
The hiking route geometry for each stage of the Stockholm Archipelago Trail. CC BY 4.0 © Stockholm Archipelago Trail On trail updates
OpenStreetMap
openstreetmap.org/copyright ↗
Points of interest (food, water, toilets, shops, viewpoints, shelters, …), island outlines, and nature-reserve areas. ODbL 1.0 © OpenStreetMap contributors On demand + regular re-publish
Trail surface & difficulty metadata
openstreetmap.org/copyright ↗
Surface type, difficulty (SAC scale), trail visibility, width and trail photos for each stage, derived from the mapped Stockholm Archipelago Trail ways in OpenStreetMap. ODbL 1.0 © OpenStreetMap contributors · photos per Wikimedia Commons licence On trail rebuild
Wikidata
wikidata.org ↗
Multilingual place names, photographs, and links to external databases. CC0 1.0 public-domain dedication Weekly
Wikimedia Commons
commons.wikimedia.org ↗
Photographs on place cards, and hero photos in the pier modals. Pier photos were matched stop-by-stop via Wikidata’s brygga class (Q133867301 ↗) and the salgo60 ferry-stops dataset ↗. Per image author + licence credited in the app With POI / pier refresh
Sveriges Hjärtstartarregister
hjartstartarregistret.se ↗
Defibrillator (AED) locations and their availability hours shown on the map. Registry API terms © Swedish Resuscitation Council Daily
grillplatser.nu
grillplatser.nu ↗
Firepit / barbecue sites — position, facilities and photos. grillplatser.nu is the source of truth; each firepit links back to its page there to view & update at the source. CC0 / CC BY / CC BY-SA © grillplatser.nu On POI refresh
Waxholmsbolaget ferry timetables
trafiklab.se ↗
Departure times, routes, and seasonal calendars used to plan the boat legs. Open transport data via Trafiklab / Samtrafiken (GTFS) Per season
ResRobot (Trafiklab)
trafiklab.se — ResRobot ↗
Used to detect departures that require advance booking (call-to-order lines). Open transport data via Trafiklab With timetables
SAT Passport locations
/data/sat-passport-locations.json ↗
Which places sell the SAT hiking passport and where it can be stamped — flagged on the matching place cards. A thin membership list (identity + role only); join to OpenStreetMap / Wikidata for names & coordinates. Seeded from salgo60 ↗. CC BY 4.0 membership © SAT; identity ODbL / CC0 On data refresh
Protomaps (base map)
protomaps.com ↗
The map background (base tiles, hillshade, contours) — self-hosted vector tiles, built from OpenStreetMap data and served from our own storage. ODbL 1.0 © OpenStreetMap contributors; tiles built with Protomaps On tile rebuild

Per-place provenance in the app: every place card shows its own “last updated” date, links to the source object and its full edit history, and carries a persistent identifier with a shareable permalink.

3Persistent identifiers

Every object this planner publishes carries a permanent identifier:

satnamespace : sectiontype — trail · section · poi · pier · report : 3hz5yfrozen, opaque uid

Examples: sat:trail:daesy (the trail itself), sat:section:3hz5y (a stage), sat:poi:sjwtd (a place), sat:pier:25njf (a ferry pier), sat:vessel:3kjzv (a ferry vessel).

4Open data: the trail — we own the master

The trail route, its stages and curated descriptions — the one dataset where we are the source of truth. The trail is a first-class object (sat:trail:daesy), published as GeoJSON-LD following the Swedish national specification for trails as linked data ↗ with schema.org vocabulary: name, activity category, total length, elevation, the managing organisation, and an ordered itinerary of all stages in the official north-to-south order.

Endpoints

EndpointContents
/data/trail.jsonldThe whole trail as one GeoJSON-LD document (odta:Trail + schema.org): identity, category, total length, elevation, provider organisation, ordered stage itinerary, and the full route geometry (stages + connector legs).
/data/catalog.jsonldDCAT-AP-SE catalogue describing this dataset — harvestable by Sveriges dataportal ↗ and other DCAT aggregators (publisher, licence, theme, spatial extent, distributions, contact point).
/data/sections-index.jsonAll stages: satId, uid, slug, version, routeVersion, updated, orderInTrail, distance, difficulty, blurb.
/data/geojson/islands/<slug>.geojsonCurrent route per stage. Self-describing: a top-level metadata block and the route feature’s properties both carry satId / version / routeVersion.
/data/history/sections/<slug>/index.jsonList of archived route versions for a stage.
…/route-v<n>.geojsonA specific past route version — cite an exact route, not just a number.
…/route-v<n>.gpxThe same route version as a downloadable GPX track — washed geometry with elevation, for GPS devices and apps. Carries satId / version / routeVersion in its metadata.
/api/objects/<satId>Machine-readable record for one stage: name, description, length, version/routeVersion, licence, and links to the live GeoJSON, the archive and the version-pinned route (GeoJSON + GPX). Accepts sat:section:<uid>, the bare uid or the slug. sat:trail:<uid> returns the full trail document.
/?id=<satId> or /?section=<ref>Permalink — opens the stage in the app. The share button copies the canonical /?id=sat:section:<uid> (one form for every object type, survives sharing via Facebook/social). The typed /?section= also works and accepts slug, uid or sat:section:<uid>.

Stage identity & versioning

FieldMeaning
satIdPermanent identity, sat:section:<uid>. Never changes — cite this.
slugHuman handle used in URLs and filenames (e.g. orno). May change; the satId never does.
versionBumps on any change — description or route.
routeVersionBumps only when the walked geometry changes; keys the route archive.
orderInTrailThe stage’s position in the official north-to-south order (1–20).

Trail data © Stockholm Archipelago Trail, licensed CC BY 4.0 — attribute when reusing. Endpoints are best-effort and may change — open an issue if you build on them.

5Open data: places — upstream owns the master

An attributed projection of upstream open data, filtered to the trail. OpenStreetMap, Wikidata and the registries are the source of truth — consume and correct it there. Use these endpoints for permalinks, provenance and a trail-scoped extract.

EndpointContentsLicence
/data/geojson/pois.geojsonEvery place. Per feature: source, OpenStreetMap id + version/changeset, Wikidata QID, sameAs, derived reliability. Top-level metadata (licence, attribution, generated-at).ODbL / CC0
/data/history/pois/index.json
…/<YYYY-MM-DD>.geojson
Dated snapshots of the place extract, written only when the data changes.ODbL / CC0
/api/aedDefibrillators from Sveriges Hjärtstartarregister (daily). Each carries shr:<id> and, where cross-referenced in OpenStreetMap, that node’s verified position.Registry API terms
/data/geojson/reserves.geojsonNature-reserve outlines from OpenStreetMap, filtered to those the trail passes through.ODbL 1.0
/data/geojson/poi-concordance.jsonConcordance table: every known external identifier (OpenStreetMap id, Wikidata QID, …) → the place’s permanent sat:poi:<uid>. Re-published on every data build.CC0
/data/pois-identity.jsonThe identity register itself: per place, its frozen uid, all identifiers ever associated with it (append-only), status and first-seen date.CC0
/data/piers-identity.jsonFerry-pier identity register: every pier and mainland hub with its frozen sat:pier:<uid>, GTFS stop-ids and slug history (append-only — GTFS ids rotate between exports; old references resolve forever). /api/objects/sat:pier:<uid> returns the record.CC0
/data/vessels-identity.jsonFerry-vessel identity register: every named vessel with its frozen sat:vessel:<uid>, Wikidata QID and GTFS-RT vehicle-id history (append-only — vehicle-ids rotate; old references resolve forever). /api/objects/sat:vessel:<uid> returns the record (schema.org Vehicle, with the Wikidata QID as sameAs).CC0
/api/objects/<id>Machine-readable record for one place (JSON, open CORS, light JSON-LD). Accepts the canonical sat:poi:<uid> or any identifier the place has ever had — old ids resolve forever and the response normalises to the canonical one. A place that has left the dataset returns a tombstone (HTTP 410) with its identity and known identifiers, never a dead link.—
/?id=<satId> or /?pier=<ref>Permalink — opens the pier panel (departure board, photo). The pier’s share button copies the canonical /?id=sat:pier:<uid> (one form for every object type, survives sharing via Facebook/social). The typed /?pier= also works and accepts the slug or sat:pier:<uid>.—
/?id=<satId> or /?vessel=<ref>Permalink — focuses the vessel: opens its live-position popup if it is sailing now, otherwise an info card. The /?vessel= form accepts the sat:vessel:<uid>, the raw GTFS-RT vehicle-id or the Wikidata QID.—
/?id=<satId> or /?poi=<id>Permalink — opens the place in the app. The share button copies the canonical /?id=sat:poi:<uid> (one form for every object type, survives sharing via Facebook/social). The typed /?poi= also works; id is the canonical sat:poi:<uid>, and previous identifiers (e.g. osm:node:2550378999, wikidata:Q…, firepits’ grillplatser:<gid>) keep working.—

6Open reports & trail information

Published problem reports, warnings and trail information are available without an account or API key. Each has a permanent sat:report:<uid> identifier, just like trails, stages, places and piers. Only reviewed, explicitly published fields are included. Raw submissions, contact details, attachments, private tracking tokens and internal notes are excluded.

Choose how to access reports

AccessURLWhat you get
Browse open reports/report?status=openA public list of currently open, published reports.
List reports as JSON/api/reports?status=open&limit=100A Collection with an items array and a next URL. Follow next until it is null to read all pages.
Fetch one report/api/objects/sat:report:d3vejAn example object record with its public title, note, status, coordinates, timestamps and related SAT identifiers in about. Replace d3vej with the report’s UID. links.permalink opens its public status page.
Add reports to a map/api/reports/mapA GeoJSON FeatureCollection of current published markers with valid coordinates. Point coordinates are [longitude, latitude]. A report that covers an area also carries it as a GeoJSON Polygon or MultiPolygon in properties.area; the point is then an anchor inside that area. Add ?geometry=area to receive the area itself as each feature’s geometry (instead of in properties.area), for tools such as uMap or QGIS. This endpoint does not include the archive or reports without a position.

JSON list filters and pagination

Example request:

curl 'https://map.stockholmarchipelagotrail.com/api/reports?status=open&limit=100&lang=en'

The JSON records use received, in_progress and resolved for status, and error or information for reportType. GeoJSON uses source field names such as report_type and Swedish status values such as pagaende; match records using their shared id.

Reports that cover an area include area (GeoJSON, WGS84) and a schema.org spatialCoverage with a GeoShape box (south west north east). How much the report affects visitors is given in impact: unknown, passable, difficult or blocked — the map’s colours and hatching are only a presentation of these fields.

To open an active report’s tooltip on the main map, use /sv?mode=discover&report=sat:report:<uid>&c=<latitude>,<longitude>&z=15. A marker is available only while the report is published and active. Resolved reports can still have a public status page.

Freshness and integration

These read-only endpoints support cross-origin browser requests (CORS). Publication changes are served without republishing the whole map. GeoJSON has a short edge cache of up to five seconds; the public map normally refreshes it every ten seconds. The JSON list is served with Cache-Control: no-store. Avoid excessive polling, handle HTTP 429 by backing off, and use the GeoJSON endpoint when you need the current map markers.

endDate / end_date controls when information leaves the map or when a warning needs review. It is not a statement that a physical route change ends on that date. A report that is no longer published is not available through the open object API; a previously valid URL may then return HTTP 404.

Found an error?

Most place data lives in OpenStreetMap — edit it there and the fix flows back on the next refresh, benefiting every map that uses OpenStreetMap. For routing or trail issues, use “Report a problem” in the app. A private tracking link lets the reporter follow their submission before publication; it is separate from the open dataset.