{"id":27771743,"url":"https://github.com/andre0512/lidl-plus","last_synced_at":"2025-04-29T23:01:23.396Z","repository":{"id":65111190,"uuid":"572749407","full_name":"Andre0512/lidl-plus","owner":"Andre0512","description":"Fetch receipts and more from Lidl Plus","archived":false,"fork":false,"pushed_at":"2024-08-14T20:38:43.000Z","size":69,"stargazers_count":102,"open_issues_count":12,"forks_count":24,"subscribers_count":7,"default_branch":"main","last_synced_at":"2025-04-26T16:46:17.927Z","etag":null,"topics":["lidl","lidl-plus","pypi","python"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Andre0512.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-12-01T00:18:04.000Z","updated_at":"2025-04-20T14:46:27.000Z","dependencies_parsed_at":"2023-02-10T07:00:25.770Z","dependency_job_id":"e528b1df-132f-43aa-919b-660522ee667a","html_url":"https://github.com/Andre0512/lidl-plus","commit_stats":null,"previous_names":[],"tags_count":13,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Andre0512%2Flidl-plus","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Andre0512%2Flidl-plus/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Andre0512%2Flidl-plus/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Andre0512%2Flidl-plus/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Andre0512","download_url":"https://codeload.github.com/Andre0512/lidl-plus/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251596666,"owners_count":21615017,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["lidl","lidl-plus","pypi","python"],"created_at":"2025-04-29T23:00:31.044Z","updated_at":"2025-04-29T23:01:23.368Z","avatar_url":"https://github.com/Andre0512.png","language":"Python","funding_links":["https://www.buymeacoffee.com/andre0512"],"categories":[],"sub_categories":[],"readme":"**This python package is unofficial and is not related in any way to Lidl. It was developed by reversed engineered requests and can stop working at anytime!**\n\n# Python Lidl Plus API\n[![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/Andre0512/lidl-plus/python-check.yml?branch=main\u0026label=checks)](https://github.com/Andre0512/lidl-plus/actions/workflows/python-check.yml)\n[![PyPI - Status](https://img.shields.io/pypi/status/lidl-plus)](https://pypi.org/project/lidl-plus)\n[![PyPI](https://img.shields.io/pypi/v/lidl-plus?color=blue)](https://pypi.org/project/lidl-plus)\n[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/lidl-plus)](https://www.python.org/)\n[![PyPI - License](https://img.shields.io/pypi/l/lidl-plus)](https://github.com/Andre0512/lidl-plus/blob/main/LICENCE)\n[![PyPI - Downloads](https://img.shields.io/pypi/dm/lidl-plus)](https://pypistats.org/packages/lidl-plus)\n[![Buy Me a Coffee](https://img.shields.io/badge/buy%20me%20a%20coffee-donate-orange.svg)](https://www.buymeacoffee.com/andre0512)  \n\n\nFetch receipts and more from Lidl Plus.\n## Installation\n```bash\npip install lidl-plus\n```\n\n## Authentication\nTo login in Lidl Plus we need to simulate the app login.\nThis is a bit complicated, we need a web browser and some additional python packages.\nAfter we have received the token once, we can use it for further requestes and we don't need a browser anymore.\n\n#### Prerequisites\n* Check you have installed one of the supported web browser\n  - Chromium\n  - Google Chrome\n  - Mozilla Firefox\n  - Microsoft Edge\n* Install additional python packages\n  ```bash\n  pip install \"lidl-plus[auth]\"\n  ```\n#### Commandline-Tool\n```bash\n$ lidl-plus auth\nEnter your language (de, en, ...): de\nEnter your country (DE, AT, ...): AT\nEnter your lidl plus username (phone number): +4915784632296\nEnter your lidl plus password:\nEnter the verify code you received via phone: 590287\n------------------------- refresh token ------------------------\n2D4FC2A699AC703CAB8D017012658234917651203746021A4AA3F735C8A53B7F\n----------------------------------------------------------------\n```\n\n#### Python\n```python\nfrom lidlplus import LidlPlusApi\n\nlidl = LidlPlusApi(language=\"de\", country=\"AT\")\nlidl.login(phone=\"+4915784632296\", password=\"password\", verify_token_func=lambda: input(\"Insert code: \"))\nprint(lidl.refresh_token)\n```\n## Usage\nCurrently, the only features are fetching receipts and activating coupons\n### Receipts\n\nGet your receipts as json and receive a list of bought items like:\n```json\n{\n    \"currentUnitPrice\": \"2,19\",\n    \"quantity\": \"1\",\n    \"isWeight\": false,\n    \"originalAmount\": \"2,19\",\n    \"name\": \"Vegane Frikadellen\",\n    \"taxGroup\": \"1\",\n    \"taxGroupName\": \"A\",\n    \"codeInput\": \"4023456245134\",\n    \"discounts\": [\n        {\n            \"description\": \"5€ Coupon\",\n            \"amount\": \"0,21\"\n        }\n    ],\n    \"deposit\": null,\n    \"giftSerialNumber\": null\n},\n```\n\n#### Commandline-Tool\n```bash\n$ lidl-plus --language=de --country=AT --refresh-token=XXXXX receipt --all \u003e data.json\n```\n\n#### Python\n```python\nfrom lidlplus import LidlPlusApi\n\nlidl = LidlPlusApi(\"de\", \"AT\", refresh_token=\"XXXXXXXXXX\")\nfor receipt in lidl.tickets():\n    pprint(lidl.ticket(receipt[\"id\"]))\n```\n\n### Coupons\n\nYou can list all coupons and activate/deactivate them by id\n```json\n{\n    \"sections\": [\n        {\n            \"name\": \"FavoriteStore\",\n            \"coupons\": []\n        },\n        {\n            \"name\": \"AllStores\",\n            \"coupons\": [\n                {\n                    \"id\": \"2c9b3554-a09c-412c-8be4-d41cbff13572\",\n                    \"image\": \"https://lidlplusprod.blob.core.windows.net/images/coupons/LT/IDISC0000254911.png?t=1695452076\",\n                    \"type\": \"Standard\",\n                    \"offerTitle\": \"1 + 1\",\n                    \"title\": \"👨🏻‍🍳 Frozen 👨🏻‍🍳\",\n                    \"offerDescriptionShort\": \"FREE\",\n                    \"isSegmented\": false,\n                    \"startValidityDate\": \"2023-09-24T21:00:00Z\",\n                    \"endValidityDate\": \"2023-10-01T20:59:59Z\",\n                    \"isActivated\": false,\n                    \"apologizeText\": \"Xxxxxxxxxxxxxxxxx\",\n                    \"apologizeStatus\": false,\n                    \"apologizeTitle\": \"Xxxxxxxxxxxxxxxxxxx\",\n                    \"promotionId\": \"DISC0000254911\",\n                    \"tagSpecial\": \"\",\n                    \"firstColor\": \"#ffc700\",\n                    \"secondaryColor\": null,\n                    \"firstFontColor\": \"#4a4a4a\",\n                    \"secondaryFontColor\": null,\n                    \"isSpecial\": false,\n                    \"hasAsterisk\": false,\n                    \"isHappyHour\": false,\n                    \"stores\": []\n                },\n                .......\n            ]\n        },\n        {\n            \"name\": \"OtherStores\",\n            \"coupons\": []\n        }\n    ]\n}\n```\n\n#### Commandline-Tool\n\nActivate all available coupons\n\n```bash\n$ lidl-plus --language=de --country=AT --refresh-token=XXXXX coupon --all\n```\n\n#### Python\n```python\nfrom lidlplus import LidlPlusApi\n\nlidl = LidlPlusApi(\"de\", \"AT\", refresh_token=\"XXXXXXXXXX\")\nfor section in lidl.coupons()[\"sections\"]:\n  for coupon in section[\"coupons\"]:\n    print(\"found coupon: \", coupon[\"title\"], coupon[\"id\"])\n```\n\n## Help\n#### Commandline-Tool\n```commandline\nLidl Plus API\n\noptions:\n  -h, --help                show this help message and exit\n  -c CC, --country CC       country (DE, BE, NL, AT, ...)\n  -l LANG, --language LANG  language (de, en, fr, it, ...)\n  -u USER, --user USER      Lidl Plus login username\n  -p XXX, --password XXX    Lidl Plus login password\n  --2fa {phone,email}       choose two factor auth method\n  -r TOKEN, --refresh-token TOKEN\n                            refresh token to authenticate\n  --skip-verify             skip ssl verification\n  --not-accept-legal-terms  not auto accept legal terms updates\n  -d, --debug               debug mode\n\ncommands:\n  auth                      authenticate and get token\n  receipt                   output last receipts as json\n  coupon                    activate coupons\n```\n\n## Support\nIf you find this project helpful and would like to support its development, you can buy me a coffee! ☕\n\n[![\"Buy Me A Coffee\"](https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png)](https://www.buymeacoffee.com/andre0512)\n\nDon't forget to star the repository if you found it useful! ⭐\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandre0512%2Flidl-plus","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fandre0512%2Flidl-plus","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandre0512%2Flidl-plus/lists"}