Export your data
Spreadsheet exports from the dashboards, and API keys for automated extracts.
There are two ways to get data out: download it from a dashboard, or pull it programmatically with an API key.
Spreadsheet export
Every dashboard offers Export CSV and Export Excel. The download covers the scope and period currently on screen, so set the period selector — Today, This week, Term or School year — before exporting.
This is the right route for a programme report, a board paper, or anything you are going to open in Excel anyway.
API keys
For a recurring extract into your own reporting system, use an API key. Only Council Administrators can issue them, from API keys.
Issuing a key
- Open API keys.
- Create a key, scoped either to your council or to a single school.
- Copy it immediately.
The key is shown to you once, at creation. Only a hash of it is stored, so it cannot be recovered or shown again. If you lose it, revoke it and issue a new one.
Handling a key
A key is a credential with standing read access to your programme data. Under the terms you have agreed:
- store it in a secrets manager or equivalent — never in a spreadsheet, an email, a shared drive or a source code repository;
- use it only for the scope it was issued for, and only for council or school programme purposes;
- revoke it promptly when the integration it serves is decommissioned, or if it may have been exposed.
Issue one key per integration. Shared keys cannot be revoked without breaking everything at once, and tell you nothing about who was using them.
Calling the API
GET /api/v1/export
Authorization: Bearer <your key>
| Parameter | Values | Default |
|---|---|---|
scope |
school or council |
Whatever the key is scoped to |
id |
The school or council id | The key's own scope |
from |
YYYY-MM-DD |
30 days ago |
to |
YYYY-MM-DD |
Today |
Example:
curl -H "Authorization: Bearer $ATT_KEY" \
"https://tapin.ie/api/v1/export?scope=council&from=2026-09-01&to=2026-09-30"
A key can only read within its own scope. Asking for a council or school the key
was not issued for returns 403, not data.
The API reference lists every endpoint a key can call, including the dashboard figures, with the fields each returns. The same OpenAPI specification can be downloaded and imported into tools such as Postman.
What comes back
JSON, aggregated by date, school, class and mode. No individual pupil appears — the response says so itself:
{
"meta": {
"scope": "council",
"id": "…",
"from": "2026-09-01",
"to": "2026-09-30",
"totalRecords": 1284,
"note": "Data is aggregated by date/school/class/mode. No individual student identifiers are included."
},
"data": [
{
"date": "2026-09-01",
"school": "St. Brigid's NS",
"className": "3rd Class A",
"yearGroup": "3rd",
"mode": "WALK",
"count": 18
}
]
}
One row per date, class and mode, with a count of journeys. mode is one of
WALK, CYCLE, SCOOTER, PARK_STRIDE, BUS, RAIL, CAR_SHARE, CAR.
Calculating rates yourself
The export gives you raw counts, not rates. If you are reproducing the
active-travel rate the dashboards show, remember it counts every mode except
CAR — see reading your dashboards for
why that distinction matters in a report.
CO₂ saved and km walked / wheeled are not in the export because they are not stored —
they are modelled from journey counts using a 2 km average journey and 0.17 kg
of CO₂ per km. Apply the same factors if you need to reproduce them.
Response codes
| Code | Meaning |
|---|---|
401 |
No key, or the key is not valid |
403 |
The key does not cover the requested school or council |
404 |
The school or council does not exist |
400 |
scope was something other than school or council |
Practical notes
- Pull the next morning. Journeys can be amended until 23:59 on the day they were recorded, so a same-day pull can disagree with the dashboard later.
- Ask for explicit
fromandtodates. The 30-day default moves under you. - Re-pulling a past period is safe and returns the same figures.
Still stuck? Email our support team.