🇮🇹 Leggi in Italiano | 🇬🇧 English
Export your entire iPhone call history directly from your local backups to a beautifully formatted Excel/CSV file.
Whether you need to archive your calls for billing purposes, legal requirements, or personal analytics, iOS Call Exporter is the most comprehensive, privacy-respecting tool available. It works completely offline, decrypting your iTunes/macOS backups on the fly.
- 🔒 100% Privacy-First: Everything runs locally on your machine. Your backup password and call data never leave your computer.
- 🔍 Auto Backup Discovery: No need to manually hunt for backup folders. The app automatically scans default iTunes/Finder and iMazing backup paths on macOS and Windows, and presents all detected backups sorted by date.
- 📂 File Explorer (Backup & Live): A built-in graphical file manager that lets you browse inside your encrypted backups OR directly inside a connected iOS device via Wi-Fi/USB to extract any file on the fly.
- 📞 VoIP Support: It doesn't just export carrier calls. It automatically detects and formats calls from WhatsApp, Microsoft Teams, FaceTime, Telegram, and more.
- 📇 Smart Contact Matching: Say goodbye to raw phone numbers. The tool parses your iOS address book to seamlessly attach contact names to each call.
- 📊 Excel-Ready: Generates a rich CSV tailored to avoid annoying scientific notation in Microsoft Excel, including clean human-readable call durations and international country prefixes.
- 📅 Google Calendar Sync: Comes with an optional built-in webhook script to sync your call history directly into your Google Calendar.
A sleek, dark-mode-ready interface that automatically detects your iPhone backups. Just type your password and click Export!
Beautifully generated offline web pages to browse, filter, and export your calls and messages with built-in Light and Dark themes.
Beautifully parsed data ready for pivot tables or billing reports.
Here's a real preview of the exported file opened in Excel. Each row is a call, with all metadata parsed and enriched automatically:
🔍 Raw CSV snippet (click to expand)
id;unique_id;start;end;contact_name;phone_number;duration;duration_seconds;direction;call_type;answered;country_code;service_provider;location
111;78FFE58A-...;2025-10-18 20:38:16;2025-10-18 20:38:45;Maria Rossi;="+393471234567";00:00:29;29;Incoming;Phone;True;IT;com.apple.Telephony;Italia
98;21F655FA-...;2025-10-20 10:05:22;2025-10-20 10:05:27;;="+393495678901";00:00:05;5;Incoming;Phone;True;IT;com.apple.Telephony;Italia
45;02EC87D5-...;2025-10-23 17:10:25;2025-10-23 17:10:25;;="+393397654321";00:00:00;0;Missed;Phone;False;IT;com.apple.Telephony;Italia
120;F9060753-...;2025-10-31 21:45:28;2025-10-31 21:45:51;Francesco Verdi;="+393423456789";00:00:23;23;Outgoing;FaceTime Video;True;;com.apple.FaceTime;Italia
3008;7E34EFB5-...;2026-05-27 15:56:35;2026-05-27 16:10:45;Anna Colombo;="+393283210456";00:14:09;849;Incoming;WhatsApp;True;;net.whatsapp.WhatsApp;ItaliaNote: Phone numbers are wrapped in
="+39..."to prevent Excel from mangling them with scientific notation.
Want to get your call history right now? Follow these simple steps:
Apple requires backups to be encrypted to include your private call history.
- Connect your iPhone to your Mac/PC with a cable.
- Open Finder (macOS) or iTunes/Apple Devices (Windows) and select your iPhone.
- Check the "Encrypt local backup" box and set a password (don't forget it!).
- Click "Back Up Now" and wait for it to finish.
To run this tool, you need Python 3.14+ and uv (a blazing fast Python manager).
- Download this repository.
- Open your terminal/command prompt in the downloaded folder.
- Run this command to install everything automatically:
uv sync
Launch the graphical interface with:
uv run python gui.pyThe app will automatically find your backup from iTunes/Finder or iMazing. Enter your password, choose where to save the CSV, and you're done!
💡 Tip: If you use iMazing to manage your iPhone backups, iOS Call Exporter will detect those too — no extra configuration needed.
If you prefer the terminal or want to automate the export via cron jobs, you can use the CLI directly.
uv run python export_calls.pyBy default, this script auto-detects the most recent backup from iTunes/Finder or iMazing and outputs calls.csv.
Both the GUI and CLI automatically scan the following default paths to find valid iOS backups:
| Platform | Source | Path |
|---|---|---|
| macOS | iTunes / Finder | ~/Library/Application Support/MobileSync/Backup/ |
| macOS | iMazing | ~/Library/Application Support/iMazing/Backups/ |
| Windows | iTunes (legacy) | %APPDATA%\Apple Computer\MobileSync\Backup\ |
| Windows | Apple Devices | %USERPROFILE%\Apple\MobileSync\Backup\ |
| Windows | iMazing | %APPDATA%\iMazing\Backups\ |
Backups are validated by checking for the presence of Manifest.db and automatically sorted by modification date (most recent first).
If your backup is stored in a non-standard location, you can always specify it manually with
--backup-diror by clicking "Sfoglia..." (Browse) in the GUI.
--backup-dir PATH Path to a specific backup directory
--output, -o PATH Output CSV path (default: calls.csv)
--passphrase TEXT Backup encryption passphrase (bypasses prompts)
--excel Format CSV specifically for Excel (semicolon separator)
You can inject the passphrase silently for automated tasks:
BACKUP_PASSPHRASEin a.envfile.OP_BACKUP_REFin a.envfile (1Password CLI reference).- macOS Keychain:
security add-generic-password -a "$USER" -s "ios-backup-passphrase" -w
You can automatically push answered calls to a webhook (like n8n, Make, or Zapier) to sync to Google Calendar.
cp .env.example .env
# Edit .env and add your WEBHOOK_URL
uv run python send_to_webhook.py --weeks 4You can exclude specific contacts or phone numbers from all exported reports (CSV and HTML). There are two methods that work together:
Create a plain text file in the 0-Exportes/ folder named exclusions_<DeviceName>.txt.
Or simply click "📄 Apri File Esclusioni" in the GUI — it will create the file for you and open it in your default editor.
# Lines starting with # are comments
# One entry per line
# Names are matched partially (case-insensitive)
Mario Rossi
Anna Bianchi
# Phone numbers use the TEL: prefix
TEL:+393471234567
TEL:800123456
💡 Tip: Partial matching is used. Writing
Rossiwill exclude all contacts containing "Rossi" (e.g., "Maria Rossi", "Luca Rossini"). Same for phone numbers —TEL:347will match any number containing347.
In the "⚙️ Filtri & Esclusioni" tab:
- Click "🔄 Carica dal Backup" to load all contacts from your backup
- Use the search bar to quickly find contacts
- Single-click on any row to toggle exclusion on/off
- Click "💾 Salva Esclusioni" to save
Both methods are automatically merged — entries from the text file and the GUI settings are combined and deduplicated.
See 0-Exportes/exclusions_example.txt for a full annotated example.
| Column | Description |
|---|---|
start / end |
Call times (YYYY-MM-DD HH:MM:SS) |
contact_name |
Resolved name from AddressBook |
phone_number |
Raw identifier (phone or email) |
country_prefix |
International code (e.g. +39, +1) |
duration |
Readable format (HH:MM:SS) |
direction |
Incoming, Outgoing, or Missed |
call_type |
Phone, FaceTime, Whatsapp, Teams, etc. |
- iOS only keeps about ~1,000 recent calls or roughly 1 year of history on the device. Older calls are permanently purged by the system.
- If a contact was deleted before the backup was taken, their name cannot be resolved.
- You MUST enable Encrypted Backups. Apple completely strips call history from unencrypted backups for privacy reasons.




