PRIVACY POLICY
Last updated: 18 September 2026
TrainTime has no accounts, no user analytics, no advertising and no tracking. Your coordinates are used only to find nearby stations. They are never written to our logs and never stored.
DATA CONTROLLER
Evan Thomas, Switzerland
privacy@traintime.ch
Requests under the Swiss Federal Act on Data Protection (FADP) go to this address. The supervisory authority is the Federal Data Protection and Information Commissioner (FDPIC).
LOCATION DATA
TrainTime uses your device's location to find nearby stations. Your coordinates:
- Go over HTTPS to our API (
api.traintime.ch), where they are matched against a station database held in memory - Are used for that one request and then discarded. The request line that carries them is not written to our logs
- Are never passed on to opentransportdata.swiss. Departures are fetched using station identifiers only
- Your last known position is cached on your device for faster startup
DATA STORED ON YOUR DEVICE
- Last known position - cached for faster startup when GPS is unavailable
- Transport mode preference - your last selected mode (train, bus or tram)
- Favourites, pinned stations and settings - shared between your phone and watch through the watch platform's own device link
- Saved routes and reminders - if you use them
No other data is persisted. Departure information is fetched fresh and held only in memory.
WHY TRAINTIME RUNS ITS OWN API
Swiss public transport data comes from opentransportdata.swiss through separate services: OJP 2.0 for departures and a formation service for train composition. Our API matches your position to the nearest stations, fetches departures and formations, merges them into one response and caches it for a minute, so thousands of watches do not each hit the upstream. It receives nothing beyond the coordinates and station identifiers a request needs. Its source is public: github.com/evanjt/traintime-api.
THIRD-PARTY SERVICES
TrainTime API (api.traintime.ch)
- Hosting - the API runs on Cloudflare Workers (Cloudflare, Inc., USA) and on a server in Switzerland operated by us. Both are reached through Cloudflare's network
- Operational logs - per request we record the endpoint, the HTTP status, the response time, whether the answer came from cache, and a short label of the app platform. We do not record coordinates, IP address, device or any user identifier. Cloudflare keeps a sample of these lines for three days. On our own server they sit in a small rotating buffer that is never copied elsewhere
- Aggregate statistics - request counts per endpoint and per platform, without personal data
- Purpose - understanding usage, sizing resources up and down, and detecting abuse such as denial-of-service attacks
- Cloudflare - as our processor under its Data Processing Addendum, Cloudflare processes connection metadata including your IP address to deliver and protect the service, in the USA and other countries where Cloudflare operates. Cloudflare, Inc. is certified under the Swiss-U.S. Data Privacy Framework, which the Federal Council recognises as adequate for certified companies. The standard contractual clauses in the addendum apply as a fallback
- Source code: github.com/evanjt/traintime-api
Open Transport Data Switzerland (opentransportdata.swiss)
- Provides timetable, real-time and formation data. Operated by SBB Infrastructure on behalf of the Federal Office of Transport
- Receives station identifiers only. Your coordinates are never sent to this service
- Terms of use
Data the app sends leaves your device to us, the developer, and not to Apple, Google or Garmin. No other third-party services, SDKs or APIs are used. No user analytics, advertising, crash reporting or tracking. Only aggregate request counts without personal data.
EXTERNAL DATA
- Transit information (stations, departures, delays, platforms, formations) is sourced from opentransportdata.swiss and provided as-is
- We do not control or guarantee the accuracy, completeness or availability of this external data
- Service interruptions or data inaccuracies from upstream providers are outside our control
- Data source: opentransportdata.swiss (attribution required by their terms of use)
DATA SHARING
Your coordinates are sent to our API to find nearby stations and are discarded once the request is answered. Departure data is fetched using station identifiers only. The operational logs described above contain no personal data. We do not sell or share data with anyone.
CHILDREN'S PRIVACY
TrainTime does not collect data from any user, including children under 13.
YOUR RIGHTS
- Ask what we hold: You can ask at any time whether we process data about you. We will answer within 30 days. The answer will be that the server holds nothing linkable to you, so there is nothing to export or delete on our side
- View your data: All data on your device is visible within the app
- Delete your data: Uninstall the app to remove all locally stored data
- Revoke location access: Disable location permission in your device settings at any time
CHANGES
This policy may be updated. Check the "Last updated" date above. Continued use after changes constitutes acceptance.
CONTACT
privacy@traintime.ch
GitHub Issues for anything that is not personal