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