Query Apple's FindMy network with Python scripts
GitHub RepoImpressions3.3k

Query Apple's FindMy network with Python scripts

@githubprojectsPost Author

Project Description

View on GitHub

Query Apple's Find My Network with Python

Ever wondered what data is floating around in Apple's Find My network? It's that magic system that helps you locate your lost AirTags, iPhones, and MacBooks, even when they're offline. While Apple keeps the user-facing tools locked down, the underlying network is a fascinating mesh of Bluetooth signals and crowd-sourced location data. What if you could peek into it programmatically?

Enter FindMy.py, a Python project that lets you do just that. It's a reverse-engineered client for the Find My network, allowing developers to query location reports and understand how the system works from a technical perspective. This isn't about tracking people—it's about understanding a massive, decentralized location network.

What It Does

In simple terms, FindMy.py is a Python library and set of tools that can communicate with Apple's Find My servers. It can request location reports for devices you own (using their private keys) and decode the data packets broadcast by Find My-enabled devices. The project essentially replicates parts of the Find My protocol, letting you interact with the network through code instead of the official Find My app.

Why It's Cool

The clever part here is the reverse engineering. Apple doesn't provide a public API for this. The developer behind this project figured out the undocumented API endpoints, the authentication flow, and the data formats by inspecting traffic from the official apps. It's a neat piece of protocol exploration.

For developers, this opens up some interesting possibilities. You could build custom scripts to monitor the location history of your own devices, create automated alerts when a device moves, or even integrate this data into a personal dashboard. It's also a fantastic educational resource for anyone interested in networking, Bluetooth LE, or large-scale location services.

How to Try It

Ready to give it a spin? You'll need a Mac and some technical setup, as it requires access to your Apple ID's Find My data.

First, clone the repository and install the dependencies:

git clone https://github.com/malmeloo/FindMy.py.git
cd FindMy.py
pip install -r requirements.txt

The key step is extracting the necessary private keys from a macOS machine where you're signed into iCloud with Find My enabled. The repo's README details the process using tools like pyicloud and keychain access. It involves fetching your dsid and generating the required keys—follow the instructions carefully.

Once configured, you can run the example scripts to fetch reports or decode advertisements.

Final Thoughts

FindMy.py is a niche but impressively crafted tool. It's not for everyone—it requires comfort with terminal commands and some security-sensitive steps. But for developers curious about reverse engineering or in need of programmatic access to their own Find My data, it's a goldmine. It demonstrates how much interesting technology is hidden behind everyday apps, waiting to be understood and repurposed. Just remember to use it responsibly and only on devices you own.


Follow for more interesting projects: @githubprojects

Back to Projects
Project ID: 77bf63f7-1459-430d-838e-46699441f6daLast updated: December 20, 2025 at 03:38 AM