Tesco Clubcard Scraper
Pricing
Pay per usage
Tesco Clubcard Scraper
This Apify Actor logs into Tesco Clubcard and loads your points data from itesco.cz. It captures your current points balance, the active period end date, and your full points transaction history. Use it to reliably pull Clubcard points details into structured JSON for analysis or automation.
Pricing
Pay per usage
Rating
0.0
(0)
Developer

Jan
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
6 days ago
Last modified
Categories
Share
Tesco Clubcard Scraper (Czech Republic)
An Apify Actor that scrapes Tesco Clubcard account data from itesco.cz. It extracts your current points balance, period end date, and complete transaction history.
Features
- Logs into your Tesco Clubcard account on itesco.cz
- Extracts current points balance
- Retrieves the end date of the current points period
- Fetches all historical periods with their validity dates
- Collects all transactions with points gained for each period
- Uses Camoufox (stealthy Firefox fork) for anti-detection
- Returns all data in a single JSON output
Input
The Actor requires your Tesco Clubcard login credentials:
| Field | Type | Required | Description |
|---|---|---|---|
email | string | Yes | Your Tesco Clubcard account email address |
password | string | Yes | Your Tesco Clubcard account password |
debug | boolean | No | Save debug screenshots for troubleshooting (default: false) |
Example Input
Create an INPUT.json file (this file is git-ignored to protect your credentials):
{"email": "your-email@example.com","password": "your-password"}
Important: Never commit your INPUT.json file to version control. It's already added to .gitignore.
Output
The Actor produces a single JSON output with the following structure:
{"success": true,"currentPoints": 101,"periodEndDate": "31.05.2026","periods": [{"validity": {"from": "26.01.2026","to": "31.05.2026"},"totalPoints": 101,"transactions": [{"date": "31.01.2026","points": 13,"description": "TESCO Trutnov"},{"date": "31.01.2026","points": 46,"description": "TESCO Trutnov"},{"date": "27.01.2026","points": 42,"description": "Prevedeno do dalšího období"}]},{"validity": {"from": "29.09.2025","to": "25.01.2026"},"totalPoints": 642,"transactions": [{"date": "20.01.2026","points": 122,"description": "TESCO Trutnov"}]}],"error": null}
Output Fields
| Field | Type | Description |
|---|---|---|
success | boolean | Whether the scraping completed successfully |
currentPoints | number | null | Current Clubcard points balance |
periodEndDate | string | null | End date of the current points period (format: DD.MM.YYYY) |
periods | array | Array of historical periods |
periods[].validity.from | string | Period start date (format: DD.MM.YYYY) |
periods[].validity.to | string | Period end date (format: DD.MM.YYYY) |
periods[].totalPoints | number | null | Total points earned in this period |
periods[].transactions | array | Array of transactions in this period |
periods[].transactions[].date | string | Transaction date (format: DD.MM.YYYY) |
periods[].transactions[].points | number | Points gained from this transaction |
periods[].transactions[].description | string | Transaction description (store name or transfer note) |
error | string | null | Error message if scraping failed |
Running Locally
-
Install dependencies:
$npm install -
Create your
INPUT.jsonfile with your credentials (see Input section above) -
Copy the INPUT.json to the storage directory:
mkdir -p storage/key_value_stores/defaultcp INPUT.json storage/key_value_stores/default/INPUT.json -
Run the Actor:
$npm start
The output will be saved to:
storage/key_value_stores/default/OUTPUT.json- Main JSON outputstorage/datasets/default/- Dataset output
Deploy to Apify
Option 1: Connect Git Repository
- Push your code to a Git repository (GitHub, GitLab, etc.)
- Go to Actor creation page
- Click Link Git Repository
- Follow the setup wizard
Option 2: Push from Local Machine
-
Log in to Apify:
$apify login -
Deploy the Actor:
$apify push
Security Notes
- Never commit your credentials - The
INPUT.jsonfile is git-ignored - Use Apify's secret input - When running on Apify platform, use the secret input feature for passwords
- This Actor only reads data from your account, it does not modify anything
Technical Details
- Built with Crawlee and Playwright
- Uses Camoufox for stealth browsing
- Requires Node.js 20+
Troubleshooting
Login fails
- Verify your email and password are correct
- Check if Tesco's website is accessible
- Enable debug mode (
"debug": truein input) to save screenshots for investigation - The Actor saves an error screenshot if login fails (check
ERROR_SCREENSHOTin key-value store)
No data returned
- Ensure you have an active Clubcard account
- Check if there are any points or transactions in your account
- Enable debug mode to inspect page screenshots
Empty credentials error
- Make sure to provide both
emailandpasswordin the input - If credentials are not provided, the Actor returns empty data with an error message
License
ISC