Project Overview
McDonald's ice cream machines are notoriously unreliable, leaving customers frustrated when they can't get their McFlurry fix. This project was inspired by mcbroken.com but adapted for UK McDonald's branches using Uber Eats API reverse engineering.
By scraping Uber Eats data, this solution provides real-time availability of McFlurry products across Liverpool McDonald's locations, helping dessert lovers find their sweet spot without disappointment.
The Problem
McDonald's has a contract with Taylor (ice cream machine manufacturer) requiring exclusive use of Taylor C602 machines and certified technicians. These machines require 4-hour nightly cleaning cycles and frequently display ambiguous error messages, leading to constant breakdowns and unavailable ice cream products - which seems to have improved at the time of writing this
Project Highlights
- API Reverse Engineering: Successfully decoded Uber Eats store information endpoints
- Real-time Tracking: Live monitoring of McFlurry availability across multiple McDonald's locations
- Automated Publishing: Scheduled data collection and web updates via FTP
- Problem-solving Focus: Creative technical solution to everyday frustration
Technical Implementation
The project involved four main technical phases, each building upon the previous to create a complete web scraping and data publishing solution.
Step 1: API Discovery
Using Chrome Developer Tools, I analyzed Uber Eats network requests to identify the store information endpoint:
- Endpoint:
POST https://www.ubereats.com/api/getStoreV1?localeCode=gb
- Parameters: storeUuid and sfNuggetCount
- Method: Network traffic analysis and request inspection
Step 2: Data Structure Analysis
The API response contained complex nested data structures that required manual parsing:
- Location: Product information within
data.sectionEntitiesMap
- Key Field:
suspendUntil
indicating availability status - Logic: Value of 0 = available, future date = suspended
Step 3: Python Processing Script
Developed a comprehensive Python script that handled the entire data collection pipeline:
- Iterates through curated McDonald's store UUIDs
- Queries the Uber Eats API for each location
- Parses product data to identify McFlurry items
- Checks availability status via suspendUntil field
- Compiles results into JSON format
- Uploads data to web server via FTP
Step 4: Web Interface
Created a simple HTML template to display the collected data, showing which Liverpool McDonald's locations had working ice cream machines on any given day.
Challenges & Solutions
Working with undocumented APIs and building reliable web scraping systems presented several technical challenges that required creative problem-solving approaches.
API Reverse Engineering
Understanding the Uber Eats API structure without documentation required systematic analysis:
- Challenge: Decoding undocumented endpoints and parameters
- Solution: Browser developer tools and request/response analysis
- Outcome: Successfully identified and utilized store information API
Data Parsing Complexity
The API responses contained deeply nested JSON structures:
- Challenge: Navigating complex nested data to find McFlurry products
- Solution: Systematic JSON exploration and field identification
- Outcome: Reliable product detection and availability checking
Automation and Reliability
Building a system that could run reliably over time:
- Challenge: Managing API changes and network failures
- Solution: Error handling and graceful degradation
- Outcome: Stable data collection during active period
Results & Impact
The McFlurry Finder successfully tracked ice cream machine availability across Liverpool McDonald's locations during its active period in early 2022, providing valuable data and insights.
Project Outcomes
- Data Accuracy: Successfully identified working vs. broken ice cream machines
- Real-time Updates: Provided current availability information
- Multiple Locations: Monitored all major Liverpool McDonald's branches
- Historical Record: January 5th, 2022 data showed 5/6 locations had working machines
Technical Learning Outcomes
This project provided hands-on experience with several important technical concepts:
- API Reverse Engineering: Techniques for analyzing and understanding third-party APIs
- Web Scraping Best Practices: Respectful data collection and error handling
- Data Processing: JSON parsing and data transformation techniques
- Automation Systems: Building reliable scheduled data collection pipelines
- Web Publishing: FTP-based content delivery and static site generation
Project Legacy
While Uber Eats has since updated their API endpoints (rendering the original code obsolete), this project demonstrates creative problem-solving using available tools to solve real-world frustrations. The surprisingly positive result showing most Liverpool locations had working machines validated the technical approach and provided a fun solution to an everyday problem.
Project Gallery
