Apple Mail Search
Fast Apple Mail search via SQLite on macOS. Search emails by subject, sender, date, attachments - results in ~50ms vs 8+ minutes with AppleScript. Use when asked to find, search, or list emails.
Fast Apple Mail search via SQLite on macOS. Search emails by subject, sender, date, attachments - results in ~50ms vs 8+ minutes with AppleScript. Use when asked to find, search, or list emails.
Real data. Real impact.
Emerging
Developers
Per week
Open source
Skills give you superpowers. Install in 30 seconds.
Search Apple Mail.app emails instantly via SQLite. ~50ms vs 8+ minutes with AppleScript.
# Copy mail-search to your PATH cp mail-search /usr/local/bin/ chmod +x /usr/local/bin/mail-search
mail-search subject "invoice" # Search subjects mail-search sender "@amazon.com" # Search by sender email mail-search from-name "John" # Search by sender name mail-search to "recipient@example.com" # Search sent mail mail-search unread # List unread emails mail-search attachments # List emails with attachments mail-search attachment-type pdf # Find PDFs mail-search recent 7 # Last 7 days mail-search date-range 2025-01-01 2025-01-31 mail-search open 12345 # Open email by ID mail-search stats # Database statistics
-n, --limit N Max results (default: 20) -j, --json Output as JSON -c, --csv Output as CSV -q, --quiet No headers --db PATH Override database path
# Find bank statements from last month mail-search subject "statement" -n 50Get unread emails as JSON for processing
mail-search unread --json | jq '.[] | .subject'
Find all PDFs from a specific sender
mail-search sender "@bankofamerica.com" -n 100 | grep -i statement
Export recent emails to CSV
mail-search recent 30 --csv > recent_emails.csv
| Method | Time for 130k emails |
|---|---|
| AppleScript iteration | 8+ minutes |
| Spotlight/mdfind | Broken since Big Sur |
| SQLite (this tool) | ~50ms |
Apple removed the emlx Spotlight importer in macOS Big Sur. This tool queries the
Envelope Index SQLite database directly.
Database:
~/Library/Mail/V{9,10,11}/MailData/Envelope Index
Key tables:
messages - Email metadata (dates, flags, FKs)subjects - Subject linesaddresses - Email addresses and display namesrecipients - TO/CC mappingsattachments - Attachment filenamesLimitations:
For custom queries, use sqlite3 directly:
sqlite3 -header -column ~/Library/Mail/V10/MailData/Envelope\ Index " SELECT m.ROWID, s.subject, a.address FROM messages m JOIN subjects s ON m.subject = s.ROWID LEFT JOIN addresses a ON m.sender = a.ROWID WHERE s.subject LIKE '%your query%' ORDER BY m.date_sent DESC LIMIT 20; "
MIT
No automatic installation available. Please visit the source repository for installation instructions.
View Installation Instructions1,500+ AI skills, agents & workflows. Install in 30 seconds. Part of the Torly.ai family.
© 2026 Torly.ai. All rights reserved.