{"activeVersionTag":"latest","latestAvailableVersionTag":"latest","collection":{"info":{"_postman_id":"5ab6388c-651c-4284-abd9-4c92cb412d29","name":"Albert Heijn API","description":"I am trying to get Albert Heijn integrated into Groccy. I would like to scan a barcode and get the name and picture directly from the supermarket API, instead of OpenFoodFacts. This is because the pictues are much nicer. This is how far I got.\n\nAlso check out others API documentation:\n\n- [https://web.archive.org/web/20240611164316/https://nick.bouwhuis.net/ah/](https://web.archive.org/web/20240611164316/https://nick.bouwhuis.net/ah/) & [https://www.youtube.com/watch?v=IIDZ9nl3op4](https://www.youtube.com/watch?v=IIDZ9nl3op4)\n    \n- [https://gist.github.com/jabbink/8bfa44bdfc535d696b340c46d228fdd1](https://gist.github.com/jabbink/8bfa44bdfc535d696b340c46d228fdd1)\n    \n\n# How I got the Man-in-the-Middle to work:\n\nStartFragmentAlbert Heijn 'pins' a certificate to its app, so sniffing the API-calls with an Man-in-the-Middle proxy doesn't work. You need a rooted phone or rooted virtual android device. I used the last option together with 'HTTP Toolkit'. You need to copy the app from your phone to the virtual device using the debugger (ADB) which comes installed with Android studio.EndFragment.\n\n**Note**\n\nWhen selecting a virtual phone, make sure you use one that does not have the Google Play store installed, because this version of Android cannot be rooted.\n\nHere is a video that explains part of it. However, the method below should be used for downloading the Albert Heijn app.\n\n[https://www.youtube.com/watch?v=aXYcDyjDF_g](https://www.youtube.com/watch?v=aXYcDyjDF_g)\n\n``` bash\n#On Windows, go to the folder where ADB is located:\n# C:\\Users\\USER\\AppData\\Local\\Android\\Sdk\\platform-tools\n# Run all commands as './adb' instead of 'adb'\n# Find your device\nadb devices\n> List of devices attached\n> PHONE_ID        device\n# Find the package name\nadb shell pm list packages\n> ...\n> package:com.google.android.talk\n> package:com.twitter.android\n> package:com.icemobile.albertheijn\n> ...\n# Find the app location\nadb shell pm path com.icemobile.albertheijn\n> package:/data/app/~~HUaxHUNH-xoqRWz2qdj6Bg==/com.icemobile.albertheijn-enRvvVDXwg_EvRNvHJCLfw==/base.apk\n> package:/data/app/~~HUaxHUNH-xoqRWz2qdj6Bg==/com.icemobile.albertheijn-enRvvVDXwg_EvRNvHJCLfw==/split_config.x86_64.apk\n> package:/data/app/~~HUaxHUNH-xoqRWz2qdj6Bg==/com.icemobile.albertheijn-enRvvVDXwg_EvRNvHJCLfw==/split_config.xxhdpi.apk\n# Copy all files to your PC in the current working directoy\nadb pull /data/app/com.icemobile.albertheijn\n> adb -s PHONE_ID pull /data/app/~~HUaxHUNH-xoqRWz2qdj6Bg==/com.icemobile.albertheijn-enRvvVDXwg_EvRNvHJCLfw==/base.apk .\n> adb -s PHONE_ID pull /data/app/~~HUaxHUNH-xoqRWz2qdj6Bg==/com.icemobile.albertheijn-enRvvVDXwg_EvRNvHJCLfw==/split_config.x86_64.apk .\n> adb -s PHONE_ID pull /data/app/~~HUaxHUNH-xoqRWz2qdj6Bg==/com.icemobile.albertheijn-enRvvVDXwg_EvRNvHJCLfw==/split_config.xxhdpi.apk .\n# Unplug your phone and and connect to the debug phone/virtual device\n# Install the app\n./adb install-multiple .\\base.apk .\\split_config.x86_64.apk .\\split_config.xxhdpi.apk\n> Success\n\n ```\n\nAfter you did this, use HTTP Toolkit to sniff all data. Use the \"Android Device via ADB\" interception method.","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","isPublicCollection":false,"owner":"10527213","team":1098660,"collectionId":"5ab6388c-651c-4284-abd9-4c92cb412d29","publishedId":"2sAYkBsgYY","public":true,"publicUrl":"https://documenter-api.postman.tech/view/10527213/2sAYkBsgYY","privateUrl":"https://go.postman.co/documentation/10527213-5ab6388c-651c-4284-abd9-4c92cb412d29","customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"},"documentationLayout":"classic-double-column","customisation":{"metaTags":[{"name":"description","value":""},{"name":"title","value":""}],"appearance":{"default":"light","themes":[{"name":"dark","logo":null,"colors":{"top-bar":"212121","right-sidebar":"303030","highlight":"FF6C37"}},{"name":"light","logo":null,"colors":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"}}]}},"version":"8.11.9","publishDate":"2025-03-15T18:42:48.000Z","activeVersionTag":"latest","documentationTheme":"light","metaTags":{"title":"","description":""},"logos":{"logoLight":null,"logoDark":null}},"statusCode":200},"environments":[{"name":"Anonymous","id":"79e720fc-da5f-4692-b5a6-ac5f19784fb3","owner":"10527213","values":[{"key":"User-Agent","value":"Appie/8.22.3","enabled":true,"type":"default"},{"key":"access_token","value":"","enabled":true,"type":"default"},{"key":"refresh_token","value":"","enabled":true,"type":"default"},{"key":"domain","value":"https://api.ah.nl","enabled":true,"type":"default"},{"key":"barcode","value":"5410126076936","enabled":true,"type":"default"}],"published":true}],"user":{"authenticated":false,"permissions":{"publish":false}},"run":{"button":{"js":"https://run.pstmn.io/button.js","css":"https://run.pstmn.io/button.css"}},"web":"https://www.getpostman.com/","team":{"logo":"https://res.cloudinary.com/postman/image/upload/t_team_logo_pubdoc/v1/team/b5bb8e56751cc4fe47d6bfa6f4617d4224928e4ff3d138fb223fc7ec8ce0d62c","favicon":""},"isEnvFetchError":false,"languages":"[{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"HttpClient\"},{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"RestSharp\"},{\"key\":\"curl\",\"label\":\"cURL\",\"variant\":\"cURL\"},{\"key\":\"dart\",\"label\":\"Dart\",\"variant\":\"http\"},{\"key\":\"go\",\"label\":\"Go\",\"variant\":\"Native\"},{\"key\":\"http\",\"label\":\"HTTP\",\"variant\":\"HTTP\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"OkHttp\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"Unirest\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"Fetch\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"jQuery\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"XHR\"},{\"key\":\"c\",\"label\":\"C\",\"variant\":\"libcurl\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Axios\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Native\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Request\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Unirest\"},{\"key\":\"objective-c\",\"label\":\"Objective-C\",\"variant\":\"NSURLSession\"},{\"key\":\"ocaml\",\"label\":\"OCaml\",\"variant\":\"Cohttp\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"cURL\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"Guzzle\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"HTTP_Request2\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"pecl_http\"},{\"key\":\"powershell\",\"label\":\"PowerShell\",\"variant\":\"RestMethod\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"http.client\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"Requests\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"httr\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"RCurl\"},{\"key\":\"ruby\",\"label\":\"Ruby\",\"variant\":\"Net::HTTP\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"Httpie\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"wget\"},{\"key\":\"swift\",\"label\":\"Swift\",\"variant\":\"URLSession\"}]","languageSettings":[{"key":"csharp","label":"C#","variant":"HttpClient"},{"key":"csharp","label":"C#","variant":"RestSharp"},{"key":"curl","label":"cURL","variant":"cURL"},{"key":"dart","label":"Dart","variant":"http"},{"key":"go","label":"Go","variant":"Native"},{"key":"http","label":"HTTP","variant":"HTTP"},{"key":"java","label":"Java","variant":"OkHttp"},{"key":"java","label":"Java","variant":"Unirest"},{"key":"javascript","label":"JavaScript","variant":"Fetch"},{"key":"javascript","label":"JavaScript","variant":"jQuery"},{"key":"javascript","label":"JavaScript","variant":"XHR"},{"key":"c","label":"C","variant":"libcurl"},{"key":"nodejs","label":"NodeJs","variant":"Axios"},{"key":"nodejs","label":"NodeJs","variant":"Native"},{"key":"nodejs","label":"NodeJs","variant":"Request"},{"key":"nodejs","label":"NodeJs","variant":"Unirest"},{"key":"objective-c","label":"Objective-C","variant":"NSURLSession"},{"key":"ocaml","label":"OCaml","variant":"Cohttp"},{"key":"php","label":"PHP","variant":"cURL"},{"key":"php","label":"PHP","variant":"Guzzle"},{"key":"php","label":"PHP","variant":"HTTP_Request2"},{"key":"php","label":"PHP","variant":"pecl_http"},{"key":"powershell","label":"PowerShell","variant":"RestMethod"},{"key":"python","label":"Python","variant":"http.client"},{"key":"python","label":"Python","variant":"Requests"},{"key":"r","label":"R","variant":"httr"},{"key":"r","label":"R","variant":"RCurl"},{"key":"ruby","label":"Ruby","variant":"Net::HTTP"},{"key":"shell","label":"Shell","variant":"Httpie"},{"key":"shell","label":"Shell","variant":"wget"},{"key":"swift","label":"Swift","variant":"URLSession"}],"languageOptions":[{"label":"C# - HttpClient","value":"csharp - HttpClient - C#"},{"label":"C# - RestSharp","value":"csharp - RestSharp - C#"},{"label":"cURL - cURL","value":"curl - cURL - cURL"},{"label":"Dart - http","value":"dart - http - Dart"},{"label":"Go - Native","value":"go - Native - Go"},{"label":"HTTP - HTTP","value":"http - HTTP - HTTP"},{"label":"Java - OkHttp","value":"java - OkHttp - Java"},{"label":"Java - Unirest","value":"java - Unirest - Java"},{"label":"JavaScript - Fetch","value":"javascript - Fetch - JavaScript"},{"label":"JavaScript - jQuery","value":"javascript - jQuery - JavaScript"},{"label":"JavaScript - XHR","value":"javascript - XHR - JavaScript"},{"label":"C - libcurl","value":"c - libcurl - C"},{"label":"NodeJs - Axios","value":"nodejs - Axios - NodeJs"},{"label":"NodeJs - Native","value":"nodejs - Native - NodeJs"},{"label":"NodeJs - Request","value":"nodejs - Request - NodeJs"},{"label":"NodeJs - Unirest","value":"nodejs - Unirest - NodeJs"},{"label":"Objective-C - NSURLSession","value":"objective-c - NSURLSession - Objective-C"},{"label":"OCaml - Cohttp","value":"ocaml - Cohttp - OCaml"},{"label":"PHP - cURL","value":"php - cURL - PHP"},{"label":"PHP - Guzzle","value":"php - Guzzle - PHP"},{"label":"PHP - HTTP_Request2","value":"php - HTTP_Request2 - PHP"},{"label":"PHP - pecl_http","value":"php - pecl_http - PHP"},{"label":"PowerShell - RestMethod","value":"powershell - RestMethod - PowerShell"},{"label":"Python - http.client","value":"python - http.client - Python"},{"label":"Python - Requests","value":"python - Requests - Python"},{"label":"R - httr","value":"r - httr - R"},{"label":"R - RCurl","value":"r - RCurl - R"},{"label":"Ruby - Net::HTTP","value":"ruby - Net::HTTP - Ruby"},{"label":"Shell - Httpie","value":"shell - Httpie - Shell"},{"label":"Shell - wget","value":"shell - wget - Shell"},{"label":"Swift - URLSession","value":"swift - URLSession - Swift"}],"layoutOptions":[{"value":"classic-single-column","label":"Single Column"},{"value":"classic-double-column","label":"Double Column"}],"versionOptions":[],"environmentOptions":[{"value":"0","label":"No Environment"},{"label":"Anonymous","value":"10527213-79e720fc-da5f-4692-b5a6-ac5f19784fb3"}],"canonicalUrl":"https://documenter.gw.postman.com/view/metadata/2sAYkBsgYY"}