Query Find My locations and battery status for family devices via iCloud.
Access Find My device locations and battery status via the iCloud CLI (pyicloud).
brew install pipx
pipx install pyicloud
Ask the user for their Apple ID, then run:
icloud --username [email protected] --with-family --list
They'll need to enter their password and complete 2FA. The session will be saved and lasts 1-2 months.
Add the Apple ID to your TOOLS.md or workspace config so you remember it for future queries:
## iCloud Find My
Apple ID: [email protected]
icloud --username APPLE_ID --with-family --list
Output format:
------------------------------
Name - Liam's iPhone
Display Name - iPhone 15 Pro
Location - {'latitude': 52.248, 'longitude': 0.761, 'timeStamp': 1767810759054, ...}
Battery Level - 0.72
Battery Status - NotCharging
Device Class - iPhone
------------------------------
Parsing tips:
------------------------------eval() or parse with regex)latitude, longitude, timeStamp (milliseconds), horizontalAccuracyFind a specific device by grepping the output:
icloud --username APPLE_ID --with-family --list | grep -A 10 "iPhone"
Extract and format location data:
icloud --username APPLE_ID --with-family --list | \
grep -A 10 "Device Name" | \
grep "Location" | \
sed "s/Location.*- //"
Then parse the Python dict string with Python or extract coordinates with regex.
icloud --username APPLE_ID --with-family --list | \
grep -A 10 "Device Name" | \
grep "Battery Level"
Device names come from iCloud and may include:
Use case-insensitive matching and normalize apostrophes if needed.
Check battery before going out:
# Get battery for specific device
icloud --username ID --with-family --list | \
grep -B 2 -A 5 "iPhone" | \
grep "Battery Level"
Get current location:
# Extract location dict and parse coordinates
icloud --username ID --with-family --list | \
grep -A 10 "iPhone" | \
grep "Location" | \
sed "s/.*- //" | \
python3 -c "import sys; loc = eval(sys.stdin.read()); print(f\"{loc['latitude']}, {loc['longitude']}\")"
Check if device is charging:
icloud --username ID --with-family --list | \
grep -A 10 "iPhone" | \
grep "Battery Status"
Authentication errors:
No location available:
Device not found:
--list