Transparency Statement

How Fan's Yer Bin? works, what it collects, and what it does with your data. No waffle.

Last updated: August 2026

The short version

We want to know whether Fan's Yer Bin? works — not who you are.

There are no accounts here, and no tracking cookies. The address you look up is saved on your device, not on our server.

Nearly every postcode is matched to its council on our own server, so it doesn't need to go to an outside postcode service.

We do count things — a lookup finishing, a share being used — but as totals, with nothing attached that says who you are.

The rest of this page is the detail behind those sentences, including the parts that are less tidy.

What we collect

During a search

DataCollected?Notes
Your postcodeTemporarilyUsed only to route your request to the right council
Your UPRN (property reference number)TemporarilySent to the council to retrieve your specific schedule
IP addressInfrastructure onlyVercel processes it to serve the request; our abuse guard briefly keeps a request count against it in memory
Persistent tracking identifierNoNothing that follows you across days or sites. Vercel counts a visitor with a hash that resets daily — see Vercel Analytics below
Tracking cookiesNoNone set
Search historyOn your deviceYour last 5 addresses, kept in your browser only
Name, email, or phoneNoNever asked, never held

What we do store

Theme preference. If you toggle light or dark mode, that choice is saved in your browser's localStorage — a small, local store on your device that never leaves it. We never read it server-side; it never reaches our servers.

Offline app shell. The service worker keeps the generic app shell, clean pages you visit, and static icons/assets in your browser's Cache Storage so the site can open when the network is unavailable. It never caches /api/ requests or bin dates, and shared URLs carrying a postcode or UPRN are deliberately not stored as cache keys. Each deployment rotates to a new app cache; clearing site data removes it.

Last-searched address. If you've done a search before, your postcode, UPRN, and address label are also saved in localStorage so the app can auto-load your schedule next time. This stays on your device only. Clear your browser storage to remove it.

Collection schedule cache. Once your bin schedule has loaded, the collection dates are saved in localStorage. For the first 6 hours the app treats them as fresh and shows your schedule instantly on a repeat visit — no server request needed. After that it checks with the council again. If the council can't be reached, it will still show you dates saved in the last 7 days, clearly badged as last-saved rather than current. This data lives entirely on your device, is never sent to us, and is replaced on your next successful lookup or when you clear your browser storage.

Recent addresses. The last 5 addresses you looked up successfully (postcode, UPRN, and address label) are kept in localStorage so you can switch between them in one tap — handy for a second property or a relative's house. They stay on your device, are never sent to us, and each one can be removed individually with the ✕ beside it.

Home screen tip. On an iPhone or iPad we show a one-line tip explaining how to add the site to your home screen. If you dismiss it, a single flag in localStorage records that so it never comes back. It holds nothing about you — only that the tip was closed.

Seagull game. If you find the wee game hidden in the footer, your high score, number of flights, lifetime total bins dodged, whether you muted the sound, and whether you chose the Modern or Retro art are saved in localStorage too. Those exact values stay on your device.

We do count that the game was opened, started, ended, replayed or shared — so we can tell whether it's worth keeping. Two of those carry a rough band rather than a number: your score as something like “5-9”, and how long you played as something like “10-30s”. Never your actual score, never a precise time, never your taps or key presses, and nothing that could tell one player from another.

How your postcode is handled

The short version: for almost every search, working out which council serves you happens on our own server — your postcode does not go to an outside postcode service to answer that. And if that outside service is having a bad day, your bin dates still work.

  1. You type a postcode into the browser.
  2. The app sends it to our server route.
  3. Our server looks the postcode up in a map of every AB postcode that ships with the app, to work out which council area it falls in (Aberdeen City or Aberdeenshire). This happens on our own server. Your postcode is not sent anywhere to answer it.
  4. Armed with the correct council, our server queries that council's systems to find the addresses at your postcode.
  5. You pick your address; the council returns your bin schedule.
  6. The result is sent back to your browser and displayed.
  7. The postcode is not written to an application database or permanent file by us.

That's it.

Why a map rather than the postcode number? Postcode-to-council boundaries don't follow simple numeric patterns. Fourteen of the thirty-four AB postcode districts are split between more than one council, so guessing from the number would send thousands of households the wrong bin dates. The AB area also reaches into Moray, Angus and Highland, which we don't cover — so “starts with AB” is not the same as “we can help”.

Where the map comes from: Ordnance Survey's Code-Point Open, a free, official dataset of every current postcode in Great Britain. We take the AB portion, keep only the postcode and the council that serves it, and ship it with the app. It's refreshed when Ordnance Survey publish a new release, roughly every three months.

Contains OS data © Crown copyright and database right 2026. Contains Royal Mail data © Royal Mail copyright and database right 2026. Contains National Statistics data © Crown copyright and database right 2026.

Server-side caching

To avoid hammering the council systems with repeat requests, our server keeps a short-lived, in-memory cache. Here's exactly what that means:

  • What's cached: The bin collection schedule for a given UPRN (your property reference number — a code assigned by Ordnance Survey to every addressable property in the UK).
  • What's not cached here: Your IP address, or anything identifying you. Your postcode is not part of this cache's key. A postcode our built-in map doesn't recognise is remembered separately for up to 24 hours, so we don't ask an outside service about it twice (see “Postcode routing” below).
  • How long: 6 hours. After that, the entry is discarded and the council is queried fresh on the next request.
  • Where: In the memory of the Vercel serverless function instance. This is not a database. It is not persisted to disk. When the instance shuts down or is replaced, the cache is gone.
  • Who can see it: It is internal process memory, not a public data store.

A UPRN on its own is publicly available information — it's linked to an address, not a person.

Automated health monitoring

A scheduled check runs a couple of times a day to make sure the council lookups still work (the councils occasionally change their websites and break things). It's deliberately gentle and privacy-preserving:

  • What it checks: one public postcode per council, taking whichever property the council lists first. It has to be a normal residential postcode, because only a real kerbside schedule can prove the lookup still works. Nobody's address or property reference is written down: none is stored in our code, and the reports record only counts — how many addresses came back, and how many future dates.
  • What it does with your searches: nothing — your searches are not logged, stored, or used by the monitoring.
  • If a council's system breaks: we're alerted automatically and any diagnostic detail is sanitised (session tokens and property references stripped) before it's recorded. Meanwhile the app shows your last saved dates, clearly marked, rather than failing outright.

Third-party services

We use the following external services.

Vercel (hosting)

Fan's Yer Bin? is deployed on Vercel. Vercel handles the infrastructure, so its edge network processes incoming requests and may retain standard infrastructure or function-log metadata under its own privacy policy. We do not deliberately write postcodes, UPRNs, addresses, or analytics payloads into our application logs.

Three of them measure the site, and each answers a different question.

  • Vercel Analytics — how many people use the site, and which pages.
  • Vercel Speed Insights — whether it's fast, and where it isn't.
  • GoatCounter — whether a feature is actually useful. It tells us what happened on the site, not who did it.

None of the three is given your postcode, your address, or your property reference.

Vercel Analytics

We use Vercel Analytics to measure page views and general traffic. It sets no cookies and builds no lasting identifier for you. Vercel counts a visitor using a privacy-focused hash made from the incoming request; that hash is valid for one day and then resets, so it cannot follow somebody across days or across different websites. The dashboard gives us aggregate page and visitor totals plus broad breakdowns such as referrer, country, browser, operating system, and device type — not a persistent visitor profile.

Before a page-view event leaves the browser, we remove any postcode or uprn query parameter from its URL. Shared lookup details therefore do not reach Vercel Analytics.

Vercel Speed Insights

We use Vercel Speed Insights to measure Core Web Vitals. Its data points can include the route/path, network speed, browser, device type, operating system, country, the measured Web Vital, and the HTML element associated with a performance issue. Vercel says these points are anonymous, are not tied to an individual visitor or IP address, and cannot reconstruct a browsing session across pages.

The same URL redaction applies here: postcode and uprn query parameters are removed before a performance event is sent.

GoatCounter (product analytics)

We use GoatCounter to count how the site is actually used — how often a lookup succeeds, how often a cooncil's system fails us, whether folk use the share or save buttons. It tells us where to spend our time. It's an open-source service run from Ireland.

Your browser never contacts GoatCounter. The counts are sent from our server, not from your device. That means no third-party script runs on the page, no cookie is set, and it stores nothing on your device — which is also why you see no cookie banner here.

What gets counted: an event name and the time it happened. The name carries a few fixed labels — which cooncil, whether the data was live or cached, why a postcode was rejected, roughly how many addresses came back. Every one of those is chosen from a short pre-agreed list, so it is a counter and nothing more: “lookup completed, Aberdeenshire, live” went up by one.

What never gets sent: your postcode, your address, your UPRN, your IP address, your browser's user-agent, your screen size, your language, or the page you came from. GoatCounter is sent none of those, so it has nothing to group your visits by and cannot build a profile even if it wanted to. If your browser sends a “Do Not Track” or Global Privacy Control signal, we send no product events at all. That signal stops these counters; it does not switch off Vercel's page-view and performance measurement described above.

Postcode routing (only for a postcode we don't recognise)

The map described above holds every AB postcode that existed when it was built, so nearly every search is answered on our own server and your postcode goes nowhere. Royal Mail creates a handful of new AB postcodes each month, mostly for new-build houses. If yours is newer than our map, we ask an outside postcode service rather than guess.

  • This only happens for a postcode the built-in map doesn't hold. If you get your bin dates without an error, and your street isn't brand new, it almost certainly didn't happen.
  • When it does, we ask postcodes.io and, if that doesn't answer quickly, findthatpostcode.uk as well. Both are free, open-data services built on the same official statistics. We use two so that one being down doesn't leave you stuck.
  • They receive the postcode and nothing else. They return a council code. They do not receive your UPRN, your address, or anything about you.
  • Their own handling is covered by the postcodes.io privacy policy and the findthatpostcode.uk privacy policy.

Postcode lookup cache: When an outside service does answer, our server remembers that one postcode→council mapping in memory for up to 24 hours, so we don't ask twice. It holds the postcode string and the council name — no user account or profile. It lives in process memory and is discarded when the server restarts. Postcodes answered by the built-in map never enter it, because there is nothing to remember.

Security-policy reports: The site tells your browser exactly which scripts and styles it's allowed to load. If something violates that policy, your browser posts a short report back to us naming the page and the blocked resource. It goes to our own server, not a third party, and it's there so we notice if anything unexpected ever tries to run on the site.

What we don't use

  • Google Analytics
  • Mixpanel, Amplitude, or any visitor-level behavioural profiling. We do count product actions — a lookup finishing, a share being used — but as totals, with no visitor attached
  • Advertising networks or tracking pixels
  • Session recording tools (Hotjar, FullStory, etc.)
  • Third-party font or asset CDNs — the one display font is self-hosted from our own domain, body text uses the fonts already on your device, and nothing is fetched from Google Fonts or similar

Data retention

ItemRetained for
Postcode inputNot written to an application database or permanent file by us
Postcode → council mapping (server cache, unrecognised postcodes only)Up to 24 hours, then discarded
UPRN + collection schedule (server cache)Up to 6 hours, then discarded
Short-lived abuse counterRequest count against an IP in server memory for a 60-second window; never written to disk by us
Theme preferenceIndefinitely in your browser's localStorage (never sent to us)
Offline app shell and static assetsIn browser Cache Storage until a later deployment rotates the app cache or you clear site data
Last-searched addressIndefinitely in your browser's localStorage (never sent to us)
Collection schedule (browser cache)Fresh for 6 hours, then kept up to 7 days as badged last-saved dates, in your browser's localStorage (never sent to us)
Recent addresses (last 5)Indefinitely in your browser's localStorage, or until you remove them (never sent to us)
Home screen tip dismissed (a single flag, iOS only)Indefinitely in your browser's localStorage (never sent to us)
Seagull high score, flights, lifetime total, mute setting, and art choiceIndefinitely in your browser's localStorage (the exact values never leave your device)
Page view counts (Vercel Analytics)Per Vercel's policy; the visitor hash resets daily
Performance metrics (Speed Insights)Per Vercel's policy
Product event counts (GoatCounter)Per GoatCounter's policy. Each one is a count with no visitor attached, so there is nothing to tie a later event to an earlier one

How it compares to the official council websites

Council siteFan's Yer Bin?
Data sourceOfficial council systemsSame council systems
Account requiredSometimesNo
Account or customer profile storedYes (if you have an account)No
Cookie trackingOften yesNo
Covers both councilsNo (separate sites)Yes
Works well on a phoneVariesYes

Security

  • HTTPS everywhere. All traffic is served over HTTPS, and browsers are told (via HSTS) to refuse insecure connections in future. Your postcode and UPRN are encrypted in transit.
  • Strict browser security headers. A Content Security Policy restricts where scripts, styles and images can come from; the site declines to be embedded in iframes on other origins; MIME-type sniffing is disabled; referrer data is minimised.
  • Input validation. Every postcode and UPRN is checked against a strict format on the server before it's used — malformed or crafted inputs are rejected before they reach any upstream system.
  • Abuse protection. The API endpoints that look up addresses and collection dates are rate-limited, with a firewall rule in front of them, so a single bad actor can't hammer the site or the council systems behind it. Keeping that count means briefly holding a request tally against your IP in memory for 60 seconds — it is never written to disk and never deliberately logged by the app. The count stops applying the moment it expires; the expired entry itself is cleared the next time that server tidies up, and always when the server restarts.
  • No account database. There are no user accounts, passwords, customer profiles, or email list. Server-side state is limited to short-lived in-memory caches and abuse counters, while Vercel's infrastructure handles normal hosting metadata under its own policy.
  • Kept current. Dependencies are updated regularly, and the codebase is periodically reviewed end-to-end for common web vulnerabilities (injection, cross-site scripting, SSRF, etc.). The most recent review was in August 2026.
  • Infrastructure. Vercel provides DDoS protection and edge-level filtering at the infrastructure layer.

What we can and can't guarantee

We can guarantee

  • No user accounts, advertising profile, or customer database.
  • No tracking cookies, advertising pixels, or persistent cross-site identifier set by us.
  • The schedule cache contains only UPRNs (public property references) paired with bin schedules — no names or user account.
  • Postcode and UPRN query parameters are removed before Vercel observability events are sent.
  • Honest updates to this document if any of the above changes.

Outside our control

  • Some addresses have no regular schedule. Communal bin stores, on-demand collections, and privately-managed properties may not appear in council scheduling systems. If your address has no fixed collection day, the app will say so — it won't show incorrect dates.
  • Some Aberdeenshire dates are estimated. Aberdeenshire's system often returns only your next confirmed collection per bin. Dates beyond that are projected forward from the published collection pattern and clearly marked est. in your schedule — a sensible estimate, not a confirmed date, that can shift around bank holidays. The next collection shown is always the council's confirmed one. We only project about eight weeks ahead, and we stop before Christmas and New Year entirely: festive collections move every year, so an estimate over that period would be a guess we have good reason to doubt. Check with the council directly for December and January.
  • Aberdeen City Council's and Aberdeenshire Council's systems will process your UPRN when we query them. Their data handling is governed by their own privacy policies.
  • If your postcode is newer than our built-in map, it is sent to postcodes.io and possibly findthatpostcode.uk to find out which council serves it. This does not happen for a postcode the map already holds, which is nearly all of them. Their handling follows their own privacy policies, linked above.
  • Your ISP sees that you visited this site. That's true of every website.
  • Vercel's infrastructure-level logging follows Vercel's own privacy policy, not ours.

Your rights

We do not run user accounts or keep a customer database, so there is normally no profile here for us to retrieve, correct, or delete. Data saved by the app in your browser can be removed by clearing site data, or by removing recent addresses in the app.

If you have a question about a particular record, how the site works, or a privacy concern, get in touch via the contact page. We will explain what we can access and, where infrastructure is controlled by a third party, point you to the relevant service's process.

Changes to this statement

If we add a new third-party service, change how caching works, or make any other privacy-relevant change, we will update this document and note the date at the top. We won't bury changes.