Skip to content

About

Export iPhone call history from encrypted local backups to CSV

Resources

Stars

0 stars

Watchers

0 watching

Forks

 
 

Latest commit

 

History

84 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

📱 iOS Call Exporter

Python Version License Platforms Privacy First

🇮🇹 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.

🌟 Why Choose iOS Call Exporter?

  • 🔒 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.

📸 Demo & Interface

Modern Desktop App (GUI)

A sleek, dark-mode-ready interface that automatically detects your iPhone backups. Just type your password and click Export!

iOS Call Exporter GUI Mockup

Interactive Web Dashboards

Beautifully generated offline web pages to browse, filter, and export your calls and messages with built-in Light and Dark themes.

Calls Web Dashboard (Dark Mode)

Messages Web Dashboard (Light Mode)

Clean Excel Output

Beautifully parsed data ready for pivot tables or billing reports.

iOS Call Exporter Data Mockup

📄 Exported CSV — What You Get

Here's a real preview of the exported file opened in Excel. Each row is a call, with all metadata parsed and enriched automatically:

CSV Export Example opened in Excel

🔍 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;Italia

Note: Phone numbers are wrapped in ="+39..." to prevent Excel from mangling them with scientific notation.


🚀 Quick Start Guide (For Everyone)

Want to get your call history right now? Follow these simple steps:

Step 1: Create an Encrypted Backup

Apple requires backups to be encrypted to include your private call history.

  1. Connect your iPhone to your Mac/PC with a cable.
  2. Open Finder (macOS) or iTunes/Apple Devices (Windows) and select your iPhone.
  3. Check the "Encrypt local backup" box and set a password (don't forget it!).
  4. Click "Back Up Now" and wait for it to finish.

Step 2: Download the App

To run this tool, you need Python 3.14+ and uv (a blazing fast Python manager).

  1. Download this repository.
  2. Open your terminal/command prompt in the downloaded folder.
  3. Run this command to install everything automatically:
    uv sync

Step 3: Export!

Launch the graphical interface with:

uv run python gui.py

The 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.


💻 Developer Guide (CLI & Automation)

If you prefer the terminal or want to automate the export via cron jobs, you can use the CLI directly.

Basic CLI Usage

uv run python export_calls.py

By default, this script auto-detects the most recent backup from iTunes/Finder or iMazing and outputs calls.csv.

🔍 Automatic Backup Discovery

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-dir or by clicking "Sfoglia..." (Browse) in the GUI.

Advanced Options

--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)

Passphrase Automation (.env or Keychain)

You can inject the passphrase silently for automated tasks:

  1. BACKUP_PASSPHRASE in a .env file.
  2. OP_BACKUP_REF in a .env file (1Password CLI reference).
  3. macOS Keychain:
    security add-generic-password -a "$USER" -s "ios-backup-passphrase" -w

Google Calendar Sync Webhook

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 4

🚫 Excluding Contacts from Reports

You can exclude specific contacts or phone numbers from all exported reports (CSV and HTML). There are two methods that work together:

Method 1: Text File (Recommended for Bulk Editing)

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 Rossi will exclude all contacts containing "Rossi" (e.g., "Maria Rossi", "Luca Rossini"). Same for phone numbers — TEL:347 will match any number containing 347.

Method 2: GUI (Interactive Selection)

In the "⚙️ Filtri & Esclusioni" tab:

  1. Click "🔄 Carica dal Backup" to load all contacts from your backup
  2. Use the search bar to quickly find contacts
  3. Single-click on any row to toggle exclusion on/off
  4. 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.


📋 Exported CSV Fields

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.

⚠️ Limitations

  • 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.

About

Export iPhone call history from encrypted local backups to CSV

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages