ParkGratis — Integritetspolicy
Senast uppdaterad: 2026-09-06
ParkGratis hjälper dig hitta gratis och billig parkering i Sverige. Appen är byggd för att skydda din integritet: den har inget kontosystem, inga analys-SDK:er, ingen kraschrapportering, inga tredjepartsspårare och den sätter inga cookies. Nästan allt körs på din enhet. Ett fåtal förfrågningar når infrastruktur som vi driver, och var och en av dem beskrivs i sin helhet nedan.
Den här sidan beskriver den version av ParkGratis som är publicerad nu. Om våra datarutiner ändras i en framtida version uppdateras den här sidan först.
Vad appen sparar
Allt appen minns lagras på din enhet — i webbläsarens
localStorage och i ett fall dessutom i appens egen privata
datamapp — och lämnar aldrig enheten annat än enligt nedan:
- Inställningar — språk, tema och filter.
- Bekräftelser — dina "bekräfta gratis / inte gratis"-markeringar.
- Senaste sökningar — platser du sökt på.
- Bilplats och favoriter — platsen du sparar som "min bil", dina favoriter och eventuella Hem/Jobb-platser, endast på din enhet.
- API-nycklar du anger — de valfria nycklarna för Stockholm och Göteborg. De lagras lokalt och skickas endast till dessa officiella kommunala API:er när du söker i respektive stad.
- Ett enhets-id för erbjudanden — ett slumpmässigt id
på 32 tecken, som lagras under nyckeln
pg_didilocalStorageoch speglas till en fil som heterpg_didi appens egen privata datamapp, så att det överlever att systemet rensar webblagringen. Det skapas först den gång du använder ett erbjudande, det är inte kopplat till dig, till ett konto eller till någon annan app, och det skickas bara till våra inlösningsfunktioner (avsnitt 3b). Använder du aldrig ett erbjudande skapas det aldrig. Att rensa webbläsarens lagring tar inte bort den speglade kopian; att avinstallera appen gör det.
Plats
ParkGratis frågar efter enhetens position när appen öppnas — om du tillåter det — och när du trycker på "Använd min plats". Positionen används på din enhet för att centrera kartan och bygga parkeringsförfrågan. Din position lagras aldrig på någon server, kopplas aldrig till ett namn eller ett konto och används inte för att spåra dig. Den lämnar enheten på tre sätt: som ett sökområde till parkeringstjänsterna nedan (precis som en adress du skriver); om du använder gå-vägbeskrivningen tillbaka till bilen, som en av de två koordinater som skickas till ruttjänsten OSRM; och — bara om du väljer att använda ett sponsrat erbjudande — som kontrollen av att du är nära just den verksamheten, som jämförs och kastas (avsnitt 3b).
Oberoende av din egen position är dessutom det kartområde du tittar på synligt för den som levererar kartbilderna. I satellitläge kommer en del av de bilderna från en CDN som vi driver; det beskrivs i nästa avsnitt.
Servrar som vi driver
ParkGratis utgår från ett dataset som följer med i appen, så kartan, reglerna och bedömningarna behöver ingen server alls. Fyra saker i den nuvarande versionen når ändå infrastruktur som vi styr över. Ingen av dem omfattar ett konto eller en cookie — ParkGratis har inga konton, så det finns ingen identitet som en förfrågan skulle kunna kopplas till. Bara en av dem bär över huvud taget en identifierare: inlösning av ett erbjudande (3b) skickar ett slumpmässigt enhets-id, som finns för att ett erbjudande ska kunna begränsas till det antal användningar annonsören har bestämt, och som beskrivs i sin helhet där.
1b. Kartrutor (parkgratismaps.b-cdn.net)
- Vad det är — den vanliga kartan, ljus och mörk. Vi bygger den själva av OpenStreetMap-data, som en enda fil med täckning över Sverige, och levererar den från en Bunny-CDN-zon som vi styr över. Till och med version 1.2.4 kom kartan från CARTO i stället; från 1.2.5 kontaktar appen inte CARTO alls.
- Vad som skickas — ett byteintervall i den filen, plus din IP-adress, vilket varje nätverksförfrågan måste bära med sig. Intervallet anger vilken del av kartan som visas på din skärm, ungefär med den precision som området du ser har. Det säger inte var du befinner dig — det säger var kartan befinner sig, vilket är samma sak bara om du har tryckt på lokaliseringsknappen.
- Vad som inte skickas — inget konto, ingen identifierare, ingen kaka. Appen har inga konton.
- Vem mer ser det — Bunny, som CDN-leverantör, på samma sätt och enligt samma villkor som flygbilderna nedan.
1. Flygbilder (parkgratisorto.b-cdn.net)
- Vad det är — när du växlar kartan till satellitläge ritar ParkGratis Lantmäteriets ortofoto med 0,16 m upplösning över de tätorter vi har förberett kartrutor för. Vi skär rutorna själva och levererar dem från en Bunny-CDN-zon som vi styr över.
- När — endast i satellitläge. I det vanliga ljusa och mörka kartläget efterfrågas ingenting alls från den här CDN:en.
- Vad som skickas — adressen till varje kartruta på skärmen: en zoomnivå samt rutans rad och kolumn, plus din IP-adress, vilket varje nätverksförfrågan måste bära med sig. På den högsta zoomnivån täcker en ruta ungefär 39 meter, så de rutor du begär beskriver vilken del av kartan du tittar på, med ungefär den precisionen. Det säger inte var du befinner dig — det säger var kartan befinner sig, vilket är dit du har panorerat eller sökt.
- Vad som inte skickas — inget konto, ingen identifierare, ingen cookie, inga sökord och inte enhetens egen position.
- Utanför de områdena, och i alla lägen som inte är satellit, kommer bilderna från Esri eller CARTO (se längre ned) och vi ser ingenting.
2. Delade kartlänkar (/api/resolve)
- Vad det är — du kan klistra in eller dela en kartlänk
till ParkGratis, så centreras kartan på den platsen. Nästan alla länkar
tolkas helt på din enhet: fullständiga Google Maps-adresser, Apple
Maps-länkar, Waze-länkar och rena koordinatpar tolkas offline och skickar
ingenting. Det enda undantaget är Googles korta länkar
(
maps.app.goo.gl,goo.gl), som gömmer koordinaterna bakom en omdirigering som din webbläsare inte får läsa. För dessa, och endast dessa, går länken till en liten funktion hos oss som följer omdirigeringen och lämnar tillbaka den slutliga adressen. - Vad som skickas — själva den korta länken. Eftersom den länken står för en plats du tänker åka till bör den betraktas som platsdata: det är det känsligaste den här funktionen hanterar.
- Vad vi gör med den — följer omdirigeringskedjan på serversidan, högst sex steg, och avvisar varje värd som inte tillhör Google. Vi returnerar den slutliga adressen som en textsträng. Vi hämtar aldrig sidans innehåll tillbaka till dig, och funktionen kan inte användas för att hämta något annat.
- Vad som lagras — ingenting. Funktionen har ingen databas, ingen nyckel-värde-lagring, ingen objektlagring och ingen egen cache; den har ingen lagring över huvud taget. Svaret märks som cachebart i ett dygn så att din enhet slipper fråga två gånger om samma länk.
- Din IP-adress — når Cloudflares nätverk, vilket den måste för varje nätverksförfrågan. Se "Vad våra leverantörer ser" nedan.
3. Sponsrade platser (/api/sponsors)
- Vad det är — listan över sponsrade platser följer med i appen så att den fungerar offline, och appen kontrollerar dessutom om det finns en uppdaterad lista, så att en placering kan rättas eller dras tillbaka utan att invänta en ny release i app-butiken.
- Vad som skickas — ingenting om dig. Det är en enkel GET av ett offentligt dokument, utan cookies och utan inloggningsuppgifter, utan frågesträng, utan innehåll och utan identifierare. Det är exakt samma förfrågan från varenda enhet i världen. Den kan inte berätta var du är, vad du har sökt på eller vad du har tittat på.
- Hur ofta — högst var femtonde minut, och kontrollen är villkorlig, så det vanliga svaret är "oförändrat" utan något innehåll alls.
- När den upphör — om du stänger av "Visa sponsrade platser" i inställningarna görs förfrågan inte längre.
3b. Inlösning av erbjudanden (/api/redeem/…)
- Vad det är — vissa sponsrade platser har ett erbjudande som du kan använda i kassan. Du hämtar en engångskod i appen och visar den som en QR-kod; verksamheten skannar den.
- Vad som skickas — när du trycker på "Använd erbjudande" skickar appen ett slumpmässigt enhets-id (32 hexadecimala tecken, som skapas på din enhet första gången det behövs, sparas i appens egen lagring och inte är kopplat till dig, till ett konto eller till någon annan app), vilket erbjudande det gäller och din nuvarande position. Positionen jämförs med verksamhetens plats för att kontrollera att du är inom erbjudandets radie (normalt 300 meter), och den lagras inte.
- Vad vi sparar — koden, enhets-id:t, en ögonblicksbild av erbjudandet (verksamhetens namn, erbjudandetexten och annonsören), tidpunkterna då koden hämtades och användes, ett avståndsintervall som bara anger om du var inom 50, 150 eller 300 meter från verksamheten eller längre bort — aldrig positionen själv — vilken telefonplattform appen kördes på (iOS eller Android) och vilket språk appen visade. Det sparas i upp till 400 dagar, av två skäl: för att ett erbjudande bara ska kunna användas så många gånger som annonsören har bestämt — en gång, en gång per dag, eller utan gräns tills annonsören tar bort det — och för att annonsören ska kunna få veta hur många gånger det har använts. Aldrig av vem.
- Vad annonsören ser — per kampanj: antal, tidpunkterna för inlösningarna, vid vilken av annonsörens egna platser var och en skedde, och de tre första tecknen i varje kod. Dessutom, per kampanj och per dag, hur många koder som hämtades och användes och hur många förfrågningar som nekades — för att telefonen var för långt bort, för att erbjudandets gräns redan var nådd, eller för att en redan använd kod skannades igen. Det är enbart antal: de säger hur många, aldrig vem. Inget enhets-id och ingen position.
- Kassans sida — QR-koden öppnar
/r/<kod>i verksamhetens webbläsare, inte i din, och visar bara erbjudandet och om koden är giltig, redan använd eller utgången. Kassapersonalens åtgärd noteras med en tidpunkt, och ingenting om personalen. - Var det lagras — i en Cloudflare D1-databas inom EU (regionen EEUR), enligt samma villkor hos Cloudflare som de övriga funktionerna här. Se "Vad våra leverantörer ser" nedan.
- När den upphör — ingenting skickas, och inget enhets-id skapas, om du inte trycker på "Använd erbjudande". Avinstallerar du appen försvinner enhets-id:t från enheten; raderna hos oss upphör efter 400 dagar.
4. Sponsorloggor (/api/logo/<id>)
- Vad det är — om en sponsrad plats har ett varumärke hämtas bilden från oss i stället för från annonsören, så att annonsören aldrig ser din enhet.
- Vad som skickas — bildens adress, som är en innehållshash av själva bildfilen och ingenting annat. Den bär inget konto, ingen identifierare och ingen cookie. Däremot antyder den svagt vilken sponsrad placering din karta ritade, och som varje förfrågan kommer den med din IP-adress. Eftersom adressen är en innehållshash av filen kan bilden aldrig ändras, så din enhet hämtar varje logga en gång och sparar den i ett år.
- När den upphör — stänger du av "Visa sponsrade platser" ritas inga sponsrade nålar, och därmed görs inte heller den här förfrågan.
"Visa skylten" — borttagen, och funktionens återstående tid
Tidigare versioner av ParkGratis hade en knapp "Visa skylten" som letade upp ett gatufoto av parkeringsskylten på platsen. Den funktionen är borttagen ur appen. Den nuvarande versionen har ingen sådan knapp och kontaktar aldrig den funktion som betjänade den.
Funktionen (/api/signphoto) är fortfarande igång, eftersom
kopior av den äldre versionen fortfarande är installerade i människors
telefoner och deras knapp fortfarande fungerar. För dessa äldre
installationer gäller följande:
- Vad som skickas — koordinaterna för den parkeringsplats som visas (inte användarens egen position), avrundade till fyra decimaler, plus en sökradie i meter. På Stockholms breddgrad motsvarar den avrundningen ett rutnät på ungefär 11 meter i nord-sydlig och 6 meter i öst-västlig riktning. Inget annat bifogas.
- Cachning — svaret cachas hos Cloudflare under en nyckel som bara består av dessa avrundade koordinater och radien: 7 dagar när ett foto hittades, 1 dag när inget hittades. Det som blir kvar är alltså "någon har frågat om den här 11-metersrutan", utan tidpunkt, utan ordning och utan något som binder ihop två uppslagningar.
- Din IP-adress — läses för ett enda syfte: en enkel räknare, med tak på 60 förfrågningar per minut, som ligger i minnet hos den serverprocess som råkar svara och aldrig skrivs ned någonstans. Vi sparar ingen egen förfrågningslogg.
- Varför den gick via oss — fotona kommer från
Mapillary, som levererar sina bilder från signerade länkar till
Facebooks CDN (
fbcdn.net). Att bädda in en sådan länk direkt hade lämnat din IP-adress till Facebooks CDN tillsammans med platsen för den skylt du var på väg att parkera vid. I stället hämtades bildbyten på serversidan och skickades tillbaka från vår egen domän, så att Mapillary och Facebook bara någonsin såg vår server.
När den sista av dessa äldre installationer är borta stängs funktionen av och det här avsnittet tas bort.
Kamera och foton (skyltläsning)
Skyltskannern läser parkeringsskyltar helt i din telefon. Textigenkänningen, tolkningen och bilden du kontrollerar mot skylten körs alla på enheten. Skyltfoton laddas aldrig upp, skickas aldrig till någon AI-tjänst och sparas inte när du stänger skannern.
Aviseringar
Om du ställer in en parkeringspåminnelse schemalägger ParkGratis en lokal avisering på din enhet. Påminnelser skapas och visas helt på din enhet — ingen påminnelsedata skickas någonstans.
Externa tjänster som anropas direkt från din webbläsare
- Våra egna kartrutor (
parkgratismaps.b-cdn.net) — det ljusa och det mörka kartläget. Vi bygger dem själva av OpenStreetMap-data, med täckning över Sverige, och levererar dem från en Bunny-CDN-zon som vi styr över. Se avsnitt 1b nedan. - CARTO-kartrutor (basemaps.cartocdn.com) — kartbilder i det ljusa och det mörka kartläget, baserade på OpenStreetMap-data. Från och med version 1.2.5 ritar appen sina egna kartrutor (ovan) och anropar inte CARTO. Posten står kvar eftersom äldre versioner, som fortfarande finns installerade på en del enheter, gör det.
- Esri World Imagery (server.arcgisonline.com) — satellitkartan, som används överallt där satellitläget är på. Våra egna flygbilder (ovan) ritas ovanpå den inom de områden vi täcker; i övrigt är det Esri du ser.
- Photon / Komoot (photon.komoot.io) — adress- och platssökning.
- Overpass API — live-parkeringsdata, endast som
reserv för appens medföljande offline-dataset. Appen provar publika
community-speglar i tur och ordning:
overpass-api.deochoverpass.private.coffee. En reservförfrågan skickar ett sökområde och ingenting annat. Vi varken driver eller står värd för dessa frivilligdrivna instanser, så var och en av dem får sökområdet och din IP-adress direkt från din enhet, precis som vid varje annan förfrågan din enhet gör. Versioner till och med 1.2.4 provade en fjärde spegel,maps.mail.ru, allra först. Den spegeln drivs i Ryssland och har tagits bort. Kör du fortfarande en av de äldre versionerna är den kvar som första spegel tills du uppdaterar. - OSRM-ruttning (routing.openstreetmap.de) — gå-vägbeskrivningen till din parkerade bil skickar två koordinater (din position och bilen) till OSRM:s community-ruttningstjänst; endast koordinater, ingen identitet.
- Stockholm LTF-tolken (openparking.stockholm.se) — kommunala parkeringsregler, endast om du lägger till en nyckel och söker i Stockholm.
- Göteborg ParkingService (data.goteborg.se) — kommunal parkeringsdata, endast om du lägger till en nyckel och söker i Göteborg.
Var och en av dessa får endast det som behövs för att besvara en förfrågan (ett sökområde, en frågesträng eller en kartruteadress). Dessa anrop går direkt från din enhet till tjänsten — vi mellanlagrar, loggar eller kombinerar dem inte, och vi kan inte se dem.
Genvägar till navigation och betalning
Ett parkeringskort kan lämna över platsen till en annan app i din telefon. Väljer du Navigera öppnas Google Maps, Apple Maps eller Waze med målet inskrivet i länken — parkeringsplatsens latitud och longitud, eller din parkerade bils när du ber om gångvägbeskrivning tillbaka till den. Väljer du en parkeringsapp (EasyPark, Parkster, Mobill, Aimo Park) öppnas bara den appen och ingenting mer: inga koordinater, ingen plats och ingenting om dig läggs i den länken. Är appen inte installerad öppnas i stället sökningen efter den i App Store eller Google Play.
ParkGratis gör ingen egen förfrågan när detta sker och får ingenting tillbaka. När den andra appen har öppnats omfattas det den samlar in av den appens egen integritetspolicy och inte av den här.
Vad våra leverantörer ser oavsett vår kod
Våra funktioner körs på Cloudflare Pages och våra flygbilder levereras av Bunny CDN. Båda är leverantörer som vi anlitar för att leverera appen, och båda sparar sina egna förfrågningsuppgifter — IP-adress, användaragent, den adress som efterfrågades och en tidsstämpel — i sina egna loggar och sin egen statistik, oavsett vad vår kod gör eller inte gör. Vi lägger ingenting till de uppgifterna, vi exporterar dem inte och vi kombinerar dem inte med något annat. Vi kan inte få dem att inte finnas. Detsamma gäller varje webbplats du besöker och varje tjänst som räknas upp ovan.
Analys, spårning och reklam
ParkGratis innehåller inga analys-SDK:er, ingen kraschrapportering och inga tredjepartsspårare, och sätter inga cookies. Appen kan visa enstaka sponsrade platser nära den del av kartan som du tittar på — vilket när du öppnar appen oftast är där du själv befinner dig — eller nära en destination som du själv har valt, om du har valt någon. Hela listan över sponsrade platser laddas ner som den är, och valet av vilka som ska visas görs i din egen telefon; din position skickas aldrig till oss för att välja dem. De är alltid märkta "Sponsrad", de påverkar aldrig vilka parkeringar som listas, deras ordning, pris eller om de räknas som gratis, och de går att stänga av i inställningarna.
Sponsrade platser är inte personanpassade, och att se en mäts inte. Listan över placeringar är ett enda offentligt dokument, identiskt för alla enheter, som hämtas utan cookies och utan någon identifierare. Ingenting om dig — inte din position, inte dina sökningar, ingen profil, inget annons-ID — skickas för att du ska få det, och varken visningar eller klick rapporteras tillbaka till oss eller till någon annan. Vilken placering du ser avgörs i din egen telefon, utifrån den karta du redan tittar på. Det enda som räknas är ett erbjudande som du själv väljer att använda, vilket beskrivs i avsnitt 3b.
Enhets-id:t som används när du löser in ett erbjudande är en förstapartsidentifierare: det finns bara för att upprätthålla just det erbjudandets begränsning, det skapas bara om du trycker på "Använd erbjudande", det kopplas inte ihop med något annat vi har, det lämnas inte till annonsören och det används inte för att bygga en annonsprofil eller för att följa dig mellan andra appar eller webbplatser. Det är inte spårning i Apples eller Googles mening, och ParkGratis ber inte om något spårningstillstånd.
Eftersom ingenting om dig behandlas för att välja ut, rikta eller visa en sponsrad plats finns det inget annonssamtycke att inhämta, och ParkGratis kör därför ingen samtyckesplattform. Om det någon gång ändras — om en placering väljs utifrån något som rör dig, eller om visningar börjar räknas — uppdateras den här sidan först, och samtycke inhämtas innan det sker.
Kontakt
Frågor: info@parkgratis.se
ParkGratis — Privacy Policy
Last updated: 2026-09-06
ParkGratis helps you find free and low-cost parking in Sweden. It is built to be privacy-preserving: it has no account system, no analytics SDK, no crash reporter, no third-party tracker, and it sets no cookies. Almost everything runs on your device. A small number of requests do reach infrastructure we operate, and every one of them is listed in full below.
This page describes the version of ParkGratis currently published. If our data practices change in a future version, this page is updated first.
What the app stores
Everything the app remembers is stored on your device — in the browser's
localStorage, and in one case also in the app's own private
data folder — and never leaves your device except as described below.
Specifically:
- Settings — your chosen language, theme, and filters.
- Confirmations — the "confirm free / not free" marks you add to spots.
- Recent searches — the places you looked up, so you can return to them.
- Parked-car location & favorites — the spot you save as "my car", your starred favorites, and any Home/Work locations, all kept only on your device.
- API keys you enter — the optional Stockholm and Göteborg municipal-data keys. They are stored locally and sent only to those official municipal APIs when you search inside those cities.
- An offer device id — a random 32-character id, stored
under the key
pg_didinlocalStorageand mirrored to a file namedpg_didin the app's own private data folder, so that it survives the system clearing web storage. It is created only the first time you use an offer, it is not linked to you, to an account, or to any other app, and it is sent only to our redemption endpoints (section 3b). If you never use an offer, it is never created. Clearing the browser's storage does not remove the mirrored copy; uninstalling the app does.
You can clear this at any time from the app's settings or your browser — except the mirrored copy of the offer device id, which goes when you uninstall the app.
Location
ParkGratis asks for your device's geolocation when the app opens — if you allow it — and when you tap "Use my location". It is used on your device to center the map and build the parking query. Your position is never stored on a server, is never attached to a name or an account, and is not used to track you. It leaves your device in three ways: as a search area sent to the parking-data services listed below (the same as any address you type); if you use the walk-back directions, as one of the two coordinates sent to the OSRM routing service; and — only if you choose to use a sponsored offer — as the check that you are near that one business, which is compared and discarded (section 3b).
Separately, and independently of your own position, the area of the map you are looking at is visible to whoever serves the map imagery. In satellite mode part of that imagery comes from a CDN we operate; that is described in the next section.
Servers we operate
ParkGratis works from a dataset bundled inside the app, so the map, the rules, and the verdicts need no server at all. Four things in the current version do reach infrastructure we control. None of them involves an account or a cookie — ParkGratis has no accounts, so there is no identity a request could be linked to. Only one of them carries an identifier at all: redeeming an offer (3b) sends a random device id, which exists so that an offer can be limited to the number of uses the advertiser set, and which is described in full there.
1b. Map tiles (parkgratismaps.b-cdn.net)
- What it is — the ordinary light and dark map. We build it ourselves from OpenStreetMap data, as a single file covering Sweden, and serve it from a Bunny CDN zone we control. Up to and including version 1.2.4 this map came from CARTO instead; from 1.2.5 the app does not contact CARTO at all.
- What is sent — a byte range within that file, plus your IP address, as any network request must carry. The range identifies which part of the map is on your screen, at roughly the precision of the area you can see. It does not say where you are — it says where the map is, which is the same thing only if you have pressed the locate button.
- What is not sent — no account, no identifier, no cookie. The app has no accounts.
- Who else sees it — Bunny, as the CDN operator, in the same way and under the same terms as the aerial tiles below.
1. Aerial imagery tiles (parkgratisorto.b-cdn.net)
- What it is — when you switch the map to satellite, ParkGratis draws Lantmäteriet's 0.16 m aerial photography over the built-up areas we have prepared tiles for. We cut those tiles ourselves and serve them from a Bunny CDN zone we control.
- When — only in satellite map mode. In the ordinary light and dark map styles, nothing is requested from this CDN at all.
- What is sent — the address of each tile on screen: a zoom level and a tile row and column, plus your IP address, as any network request must carry. At the highest zoom a tile covers roughly 39 metres across, so the set of tiles you request describes which part of the map you are viewing, to about that precision. It does not tell us where you are — it tells us where the map is, which is wherever you panned or searched to.
- What is not sent — no account, no identifier, no cookie, no search terms, and not your device's own position.
- Outside those areas, and in every non-satellite style, the imagery comes from Esri or CARTO (listed further down) and we see nothing.
2. Shared map links (/api/resolve)
- What it is — you can paste or share a map link into
ParkGratis and it will centre on that place. Almost every link is read
entirely on your device: full Google Maps URLs, Apple Maps links, Waze
links, and plain coordinate pairs all parse offline and send nothing.
The one exception is Google's short links
(
maps.app.goo.gl,goo.gl), which hide the coordinates behind a redirect your browser is not allowed to read. For those, and only those, the link goes to a small function of ours that follows the redirect and hands back the final address. - What is sent — the short link itself. Because that link stands for a place you intend to go, please treat it as location data: it is the most sensitive thing this endpoint handles.
- What we do with it — follow the redirect chain server-side, at most six hops, refusing any host that is not a Google property. We return the final address as a string. We never fetch the page's contents back to you, and the endpoint cannot be used to retrieve anything else.
- What is stored — nothing. The function has no database, no key-value store, no object store, and no cache of its own; it holds no storage of any kind. The answer is marked cacheable for one day so your device need not ask twice for the same link.
- Your IP address — reaches our Cloudflare edge, as it must for any network request. See "What our providers see" below.
3. Sponsored places (/api/sponsors)
- What it is — the list of sponsored places is bundled with the app so it works offline, and the app also checks for an updated list so a placement can be corrected or withdrawn without waiting for an app-store release.
- What is sent — nothing about you. It is a plain GET of one public document, sent without cookies or credentials, with no query, no body, and no identifier. It is byte-for-byte the same request from every device in the world. It cannot say where you are, what you searched for, or what you looked at.
- How often — at most once every 15 minutes, and the check is conditional, so the usual answer is "unchanged" with no content at all.
- When it stops — turning off "Show sponsored places" in Settings stops the request being made.
3b. Redeeming an offer (/api/redeem/…)
- What it is — some sponsored places carry an offer you can use at the till. You fetch a single-use code in the app and show it as a QR code; the business scans it.
- What is sent — when you press "Använd erbjudande" the app sends a random device id (32 hexadecimal characters, generated on your device the first time it is needed, kept in the app's own storage, and not linked to you, to an account, or to any other app), which offer it concerns, and your current position. The position is compared with the business's location to check that you are within the offer's radius (normally 300 metres), and it is not stored.
- What we store — the code, the device id, a snapshot of the offer (the business's name, the offer text, and the advertiser), the times the code was fetched and used, a distance band saying only whether you were within 50, 150 or 300 metres of the business or further away — never the position itself — which phone platform the app was running on (iOS or Android) and which language the app was showing. It is kept for up to 400 days, for two reasons: so that an offer can only be used as many times as the advertiser set — once, once per day, or without limit until the advertiser withdraws it — and so that the advertiser can be told how many times it was used. Never by whom.
- What the advertiser sees — per campaign: counts, the times of the redemptions, which of the advertiser's own places each one happened at, and the first three characters of each code. Also, per campaign and per day, how many codes were fetched and used and how many requests were refused — because the phone was too far away, or because the offer's limit had already been reached, or because a code that had already been used was scanned again. Those are counts only: they say how many, never who. No device id and no position.
- The merchant's page — the QR code opens
/r/<code>in the business's browser, not in yours, and shows only the offer and whether the code is valid, already used, or expired. The cashier's action is recorded with a time, and nothing about the cashier. - Where it is stored — in a Cloudflare D1 database in the EU (region EEUR), under the same Cloudflare terms as the other endpoints here. See "What our providers see" below.
- When it stops — nothing is sent, and no device id is created, unless you press "Använd erbjudande". Uninstalling the app removes the device id from your device; the rows on our side expire after 400 days.
4. Sponsor logos (/api/logo/<id>)
- What it is — if a sponsored place has a brand mark, the image is fetched from us rather than from the advertiser, so the advertiser never sees your device.
- What is sent — the image's address, which is a fingerprint of the image bytes themselves and nothing else. It carries no account, no identifier, and no cookie. It does, however, weakly indicate which sponsored placement your map drew, and like any request it arrives with your IP address. Because the address is a fingerprint of the bytes, the image can never change, so your device fetches each logo once and caches it for a year.
- When it stops — turning off "Show sponsored places" stops sponsored pins being drawn, and therefore stops this request.
"Show the sign" — removed, and its endpoint's remaining life
Earlier versions of ParkGratis had a "Show the sign" button that looked up a street-level photo of the parking sign at a spot. That feature has been removed from the app. The current version has no such button and never contacts the endpoint that served it.
The endpoint (/api/signphoto) is still running, because copies
of the older version are still installed on people's phones and their button
still works. For those older installs, this is what it does:
- What is sent — the coordinates of the parking spot being viewed (not the user's own position), rounded to four decimal places, plus a search radius in metres. At Stockholm's latitude that rounding is a grid of roughly 11 metres north-to-south and 6 metres east-to-west. Nothing else is attached.
- Caching — the answer is cached at our edge under a key made only of those rounded coordinates and the radius: 7 days when a photo was found, 1 day when none was. So the record that persists is "somebody asked about this 11-metre square", with no time of day, no sequence, and nothing that ties two lookups together.
- Your IP address — is read for one purpose: a simple counter, capped at 60 requests a minute, held in the memory of whichever server process answers you and never written to any store. We keep no request log of our own.
- Why it was proxied — the photos come from Mapillary,
which serves its images from signed Facebook CDN
(
fbcdn.net) links. Embedding such a link directly would have handed Facebook's CDN the user's IP address together with the location of the sign they were about to park at. Instead the image bytes were fetched server-side and streamed back from our own domain, so Mapillary and Facebook only ever saw our server.
When the last of those older installs is gone, this endpoint will be retired and this section removed.
Camera and photos (sign reading)
The sign scanner reads parking signs entirely on your phone. Text recognition, the interpretation, and the drawing you proofread against all run on-device. Photos of signs are never uploaded, never sent to any AI service, and are not stored after you close the scanner.
Notifications
If you set a parking reminder, ParkGratis schedules a local notification on your device. Reminders are created and delivered entirely on your device — no reminder data is sent anywhere.
External services the app calls directly from your browser
- Our own map tiles (
parkgratismaps.b-cdn.net) — the light and dark map styles. We build these ourselves from OpenStreetMap data, covering Sweden, and serve them from a Bunny CDN zone we control. See section 1b below. - CARTO basemap tiles (basemaps.cartocdn.com) — the map imagery in the light and dark styles, rendered from OpenStreetMap data. Versions of the app from 1.2.5 onwards draw their own tiles instead (above) and do not call CARTO. This entry remains because earlier versions, which are still installed on some devices, still do.
- Esri World Imagery (server.arcgisonline.com) — the satellite basemap, used wherever satellite mode is on. Our own aerial tiles (above) are drawn on top of it inside the areas we cover; everywhere else, Esri is what you see.
- Photon / Komoot (photon.komoot.io) — address & place search (geocoding).
- Overpass API — live parking data, used only as a fallback
to the app's bundled offline dataset. The app tries public community
mirrors in order:
overpass-api.deandoverpass.private.coffee. A fallback query sends a search area and nothing else. We neither operate nor host these volunteer-run instances, so each one receives that search area and your IP address directly from your device, exactly as any other request your device makes does. Versions up to and including 1.2.4 tried a fourth mirror,maps.mail.ru, first of all. That mirror is operated in Russia and has been removed. If you are still running one of those older versions, it remains the first mirror your copy tries until you update. - OSRM routing (routing.openstreetmap.de) — walk-back directions to your parked car send two coordinates (your position and the car) to the community OSRM routing service; coordinates only, no identity.
- Stockholm LTF-tolken (openparking.stockholm.se) — municipal parking rules, only if you add a key and search within Stockholm.
- Göteborg ParkingService (data.goteborg.se) — municipal parking data, only if you add a key and search within Göteborg.
Each of these receives only what it needs to answer a request (a search area, a query string, or a tile address). These calls go straight from your device to the service — we do not proxy, log, or combine them, and we cannot see them.
Navigation and payment shortcuts
A parking card can hand the spot over to a different app on your phone. Choosing Navigate opens Google Maps, Apple Maps or Waze with the destination written into the link — the latitude and longitude of the parking spot, or of your parked car when you ask for walking directions back to it. Choosing a parking-payment app (EasyPark, Parkster, Mobill, Aimo Park) opens that app and nothing more: no coordinates, no spot, and nothing about you is placed in that link. If the app is not installed, its App Store or Google Play search page opens instead.
ParkGratis makes no request of its own when you do this and receives nothing back. Once the other app has opened, what it collects is covered by that app's own privacy policy rather than by this one.
What our providers see regardless of our code
Our endpoints run on Cloudflare Pages and our aerial tiles are served by Bunny CDN. Both are suppliers we use to deliver the app, and both keep their own request metadata — IP address, user agent, the address requested, and a timestamp — in their own logs and analytics, whatever our code does or does not do. We do not add to that data, we do not export it, and we do not join it to anything else. We cannot make it not exist. The same is true of every website you visit and every service listed above.
Analytics, tracking, and ads
ParkGratis contains no analytics SDK, no crash reporter, and no third-party tracker, and it sets no cookies. It can show the occasional sponsored place near the part of the map you are looking at — which, when you open the app, is usually where you are — or near a destination you chose, if you chose one. The whole list of sponsored places is downloaded as it stands, and the choice of which of them to show is made on your own device; your position is never sent to us in order to pick them. They are always labelled "Sponsrad", they never affect which car parks are listed, their order, their price, or whether they count as free, and you can switch them off in Settings.
Sponsored places are not personalised, and seeing one is not measured. The list of placements is a single public document, identical for every device, fetched without cookies and without any identifier. Nothing about you — not your position, not your searches, not a profile, not an advertising ID — is sent in order to receive it, and no impression or click is reported back to us or to anybody else. Which placement you see is decided on your own phone, from the map you are already looking at. The one thing that is counted is an offer you deliberately choose to use, described in section 3b.
The device id used when you redeem an offer is a first-party identifier: it exists only to enforce that offer's own limit, it is created only if you press "Använd erbjudande", it is not joined to anything else we hold, it is not given to the advertiser, and it is not used to build an advertising profile or to follow you across other apps or websites. It is not tracking in Apple's or Google's sense of the word, and ParkGratis asks for no tracking permission.
Because nothing about you is processed in order to select, target, or show a sponsored place, there is no advertising consent to collect, and ParkGratis therefore runs no consent platform. If that ever changes — if a placement is ever chosen using anything about you, or an impression is ever counted — this page will be updated first, and consent will be asked for before it happens.
Contact
Questions: info@parkgratis.se