🇬🇧 English | 🇩🇪 Deutsch
Small, unofficial Python client for current offers from physical Kaufland stores.
The project can be used as a CLI or directly as a small API wrapper in Python code. It explicitly targets Kaufland stores and their offers, not the Kaufland online marketplace.
This repository does not contain credentials. Required values must be provided locally through
.env.
- Search Kaufland stores
- Display store information
- Load current offers for a store
- Print results as a simple CLI list
Example:
uv run main.py Frankfurt --limit 10Example output:
Kaufland Frankfurt/Main-Griesheim (DE1483)
Mainzer Landstraße 683, 65933 Frankfurt am Main, DE
50.0998058, 8.5872564
069/5800263-0
MobilePayment, LoyaltyProgram, LoyaltyPointsProgram, LoyaltyCoupons, AdBanner, PartnerBenefits, KScanDZ, Xtra
Open: Mon, Tue, Wed, Thu, Fri, Sat
Closed: Sun
Offers: 56
MÜLLER: Kefir oder Ayran | 0.88 | (1 kg = 1.76) | loyalty 0.79* | 2026-04-30 – 2026-05-06
ZOTT: Zottarella Classic-Rolle | 2.22 | Abtropfgewicht ... | loyalty 1.99* | 2026-04-30 – 2026-05-06
NESTLÉ ... Eisgenuss | 1.99 | (1 l = 2.37 - 7... | loyalty 1.79* | 2026-04-30 – 2026-05-06
DOVGAN: Plombir Eis | 2.79 | (1 l = 3.58 - 8... | loyalty 2.49* | 2026-04-30 – 2026-05-06
YOUCOOK: Fertiggericht | 3.79 | (1 kg = 9.03) | loyalty 3.49* | 2026-04-30 – 2026-05-06
POPP: Feinkostsalat | 1.89 | (1 kg = 4.73) | loyalty 1.69* | 2026-04-30 – 2026-05-06
MILKA: Pralinés oder Hauchzarte Herzen | 1.69 | (1 kg = 13.00 -... | loyalty 1.49* | 2026-04-30 – 2026-05-09
LAMBERTZ: Coco-Fleur, Balena oder Divina | 1.49 | (1 kg = 11.92 -... | loyalty 1.29* | 2026-04-30 – 2026-05-09
SÖHNLEIN: Brillant Sekt oder weinhaltiges G... | 2.69 | (1 l = 3.59) | loyalty 2.49* | 2026-04-30 – 2026-05-09
BECK'S: Pils oder Gold | 10.99 | (1 l = 1.10) | loyalty 9.99* | 2026-04-30 – 2026-05-06
This repository intentionally contains only the small part required for store and offer data.
Not included:
- Login flows and user/profile management
- Loyalty balances, coupons, partner benefits
- Marketplace features
- Anything related to payments
- Shopping lists (sync), scan apps / self-checkout carts
- Offer alerts
- ...
The project is intended to be read-only.
Requirements:
- Python 3.12+
uvor regularpip
With uv:
uv syncOr with pip:
pip install -e .The project uses pydantic-settings and loads optional values from a local .env.
Create/copy .env first and add the required values:
cp .env.example .envThe implementation is based on publicly available live client and test references around the Kaufland app API, including an archived SchwarzIT reference:
This repository intentionally does not contain embedded auth values.
Search for a store and show offers:
uv run main.py FrankfurtShow more offers:
uv run main.py Frankfurt --limit 20Set a different country:
uv run main.py Turek --country PLfrom main import Kaufland
with Kaufland() as kaufland:
store = kaufland.find_store("Frankfurt")
offers = kaufland.offers(store.store_id)
print(store.title)
print(len(offers))Inspired by torbenpfohl/rewe-discounts.
I wanted to build a small automation that gives me an overview of current offers from different stores nearby without having to open several separate apps.
More small API wrappers for other stores, for example Edeka, are planned or already exist as PoCs.
This project is unofficial and can stop working at any time if Kaufland changes the app API or its response format. Please do not fire large amounts of automated requests. The tool is intended for small local queries.
This project is licensed under the Apache-2.0 license. See LICENSE for details.