Privacy at a glance
You can check arrivals without an account. When you tap Track, we keep the bus, stop and a delivery token so arrival estimates can reach your phone while the app is closed. If you save a recurring schedule, we keep its details against a random identifier for your installation so it can run again.
Your phone keeps favourites and nicknames. If you turn on favourite bus alerts in a version that offers them, we also receive the saved bus numbers and stop codes needed to match notices. We do not sell personal information or use behavioural advertising or analytics SDKs.
Who operates the app?
“Bus Where?” is an independently developed community app operated by Raymond Canete. For support, privacy questions or deletion requests, contact raymondcanete1997@gmail.com. The app is not affiliated with LTA or any public transport operator.
Location and nearby stops
The app requests foreground location to centre the map and identify nearby stops in the Singapore region. Location fixes are held in device memory, with a validity limit of five minutes. The app does not request background location or persist GPS history. To find nearby stops, the app sends the bounds of an area centred on your current position to the “Bus Where?” API. The centre of those bounds can reveal your precise position.
The API receives map viewport bounds, search text, selected stop codes and bus service numbers to return results. These requests can reveal the area you are browsing. When the map follows your device, its bounds can also indicate your position. Map providers may process location and map requests under their own terms.
You can revoke location permission in your device settings. Singapore bus arrivals, search and tracking remain available worldwide without location permission. Nearby suggestions use your location on the phone.
Favourites and device preferences
Saved stops, bus services, stop nicknames and appearance preferences are stored on your device. They are not uploaded as a user profile or travel history. You can remove saved items in the app. Device backup and secure-storage behaviour are controlled by your operating system.
Updates and sharing
The Updates inbox shows bus service notices. The app remembers which updates you have read on your device so it can show an unread dot. If you enable Favourite bus alerts, the server stores your saved service numbers, stop codes and Apple notification token encrypted to send matching advisories. Turning alerts off deletes that registration when your phone connects. Inactive registrations expire after 90 days.
Share “Bus Where?” opens your device’s share sheet with the public Apple App Store link on iOS or our website on Android. You choose the destination. The link contains no location, tracking session details or personal identifier.
Temporary tracking sessions
Tracking creates a random session identifier and a separate authorization secret for one stop and one service. For iPhone Live Activities, the server associates an activity-specific Apple push token with that session. This lets us update the Lock Screen and Dynamic Island. The phone stores the secret using platform secure storage. The backend stores a hash of that secret, lifecycle information, and encrypted session and push-token data using AES-256-GCM.
Sessions last no more than 60 minutes. After a session ends or expires, its record becomes eligible for deletion after five minutes, and the running server removes it during cleanup. Untrack removes the local active pin and requests server termination; a connection failure may delay server cleanup until expiry. No historical journey log is kept.
Uninstalling stops the app from running, but operating-system secure-storage behaviour can vary. Any remaining server session still expires. Reinstalling must not automatically recreate a dismissed tracking surface.
Optional scheduled tracking
When you enable scheduled tracking, we store your chosen stops, services, weekdays, Singapore times, optional schedule names and notes, and alert preferences on the server, together with a random installation identifier and, for automatic starts on iPhone, an Apple push-to-start token. The identifier lets our server recognise the same installation the next time the schedule runs. You do not need to supply a name, email or Apple ID. This information is encrypted at rest. Your authorization secret stays in device Keychain; the server stores its hash. The current session's authorization is encrypted so native background code can securely register updates. Only the latest schedule outcome is retained, not a journey history.
Use each schedule’s Delete button in Settings → Scheduled tracking to remove it. Use Untrack to end an active session. Unused registrations expire after 90 days without app or token interaction. Uninstalling cannot immediately notify the server: delete schedules before uninstalling. Automatic starts require iOS permission, and delivery timing is controlled by Apple and network connectivity.
If you enable start notifications, your schedule name and note can appear in a notification after your iPhone adopts the Live Activity. Avoid putting sensitive information in notes. Notification previews, sounds, haptics and Focus behaviour are controlled by iOS.
Push notifications, maps and LTA
When remote delivery is configured and tracking is enabled, Apple or Google process the delivery token and the stop, service and arrival content required for the native tracking surface. Remote iPhone Live Activity updates use Apple Push Notification service and can continue while the app is closed. Delivery timing is controlled by the operating system and updates may be delayed. The Android preview updates estimates while the app is open. It does not register a Firebase token for preview tracking.
Apple Maps provides the map on iOS. On Android, the app uses MapLibre to request map tiles and styles from OpenFreeMap. Tile requests reveal the viewed area and your network address to the provider. See the privacy policies for Apple and OpenFreeMap. Public transport information comes from LTA DataMall. “Bus Where?” shares stop-arrival requests across viewers and pins; passenger identities are not sent to LTA.
Connection data and operational logs
The backend processes IP addresses transiently for one-minute rate-limit buckets. Application request logs omit IP addresses, request bodies, authorization headers and search query strings. Operational logs record aggregate requests, failures and active-session counts.
The API runs on Railway in its Singapore region. Railway’s HTTP logs record source IP addresses, timestamps, device or browser user-agent strings and request paths. A path can include a stop code or a service number. Network providers may also process connection metadata. Our application logs exclude raw IP addresses, push tokens, authorization secrets and schedule choices. The server also keeps the latest delivery outcome for a schedule, associated with its installation, to help diagnose missed starts.
Private issue reports
In versions that offer Report an issue, choosing Send report sends your title, subject, description and optional screenshot through Railway and Resend to our support mailbox. The API does not keep a copy. Resend processes the email, and we keep it in our Gmail inbox as needed to resolve the issue. Please crop personal details from screenshots before sending. You can request deletion using the contact below.
This website
This is a static information website hosted on Vercel. It has no “Bus Where?” account system, advertising, contact-form database or analytics scripts. Fonts and illustrations are served with the page. The hosting provider may process requests and technical logs under its own policies; see Vercel’s privacy policy.
Contact and your choices
You can remove favourites, stop tracking and revoke location permission. To ask what we hold, request a correction or deletion, or withdraw permission for an optional feature, email raymondcanete1997@gmail.com. Please do not send your tracking secret, push token or precise location.
If you email us, your email address and message are processed by Gmail and retained as needed to respond and resolve the issue. You can request deletion of that correspondence, subject to any applicable retention obligations.
Policy updates
We will update this page when the app’s data handling or hosting changes. The effective date above identifies this version. Material new uses of personal information will be explained before they are introduced.