Jmail World - Search Epstein Files, E-Mails & Messages
Search and analyze the Jeffrey Epstein email archive (1.78M emails, 4,500+ iMessages, 18K photos, 1.4M documents, 473 identified people) via jmail.world's of...
Like a lobster shell, security has layers — review code before you run it.
License
SKILL.md
jmail-world — Epstein Archive Search & Analysis
Search and analyze Jeffrey Epstein's email archive, iMessages, documents, photos, and people on jmail.world.
When to Use
- Researching Epstein connections and communications
- Finding emails between specific people
- Exploring iMessage conversations
- Analyzing communication networks and timelines
- Looking up people identified in photos
- Searching documents (DOJ releases, court records)
Data Access — Two Methods
1. Web Search API (quick lookups)
GET https://jmail.world/api/emails/search?q=QUERY&limit=50&page=1&source=all&from=NAME
No auth needed. Use web_fetch or curl. Good for quick keyword searches.
2. DuckDB + Parquet (deep analysis)
All datasets served as static Parquet files from https://data.jmail.world/v1/. No API key, no rate limit, no auth.
Use the included scripts:
# Full-text email search (Web API)
bash scripts/jmail-search.sh "query text"
bash scripts/jmail-search.sh "scopolamine" --from "Epstein" --limit 20
# DuckDB queries (local Parquet, no rate limits)
bash scripts/jmail-duckdb.sh search "flight manifest"
bash scripts/jmail-duckdb.sh person "Ghislaine Maxwell"
bash scripts/jmail-duckdb.sh imessages "ghislaine-maxwell"
bash scripts/jmail-duckdb.sh imessage-search "AfD"
bash scripts/jmail-duckdb.sh imessage-search "Merkel" --from "Bannon"
bash scripts/jmail-duckdb.sh imessage-list
bash scripts/jmail-duckdb.sh network "Bill Clinton"
bash scripts/jmail-duckdb.sh timeline "2005-01-01" "2005-12-31"
bash scripts/jmail-duckdb.sh top-senders
bash scripts/jmail-duckdb.sh people
bash scripts/jmail-duckdb.sh documents "flight"
bash scripts/jmail-duckdb.sh photos "person-name"
bash scripts/jmail-duckdb.sh photo-search "pool"
bash scripts/jmail-duckdb.sh photo-download "EFTA00000002-0.png" ./output
bash scripts/jmail-duckdb.sh download "EFTA02406146"
bash scripts/jmail-duckdb.sh download "HOUSE_OVERSIGHT_034601"
bash scripts/jmail-duckdb.sh stars
Available Datasets
| Dataset | URL | Size | Records |
|---|---|---|---|
| Emails (full) | emails.parquet | 334MB | 1.78M |
| Emails (slim) | emails-slim.parquet | 41MB | 1.78M |
| Documents | documents.parquet | 25MB | 1.41M |
| Photos | photos.parquet | ~1MB | 18K |
| People | people.parquet | <100KB | 473 |
| Photo Faces | photo_faces.parquet | <100KB | 975 |
| iMessage Conversations | imessage_conversations.parquet | — | — |
| iMessage Messages | imessage_messages.parquet | — | — |
| Star Counts | star_counts.parquet | ~2MB | 414K |
| Release Batches | release_batches.parquet | <10KB | — |
All under https://data.jmail.world/v1/.
Key Schemas
Email Columns (slim)
id, doc_id, sender, subject, to_recipients (json), cc_recipients (json), bcc_recipients (json), sent_at (timestamp), account_email, email_drop_id, epstein_is_sender (bool)
Email Additional (full)
content_markdown, content_html, attachments (int)
iMessage Conversations
id, slug, name, bio, photo, last_message, last_message_time, pinned, confirmed, source_files (json), message_count
iMessage Messages
id, conversation_slug, message_index, text, sender ("me" = Epstein, "them" = contact), time, timestamp, source_file, sender_name
People
id, name, source, photo_count
Documents
id, source, release_batch, original_filename, page_count, size, document_description, has_thumbnail
Web Pages (browser needed)
/person/SLUG— Person profile/flights— Flight records/photos— Photo browser/drive/new-only— New documents/topic/SLUG— Topic pages
Document Full-Text Search
Documents have sharded full-text files (large downloads):
documents-full/VOL00008.parquet— DOJ Volume 8documents-full/VOL00009.parquet— DOJ Volume 9documents-full/VOL00010.parquet— DOJ Volume 10documents-full/DataSet11.parquet— DOJ Dataset 11documents-full/other.parquet— House Oversight, court records
Query with DuckDB:
SELECT id, original_filename, extracted_text
FROM read_parquet('https://data.jmail.world/v1/documents-full/other.parquet')
WHERE extracted_text ILIKE '%rothschild%'
LIMIT 10;
Photo Columns (full schema)
id, source, release_batch, original_filename, content_type (MIME), width (px), height (px), image_description (AI-generated)
Search photos by description:
SELECT original_filename, image_description, width, height
FROM read_parquet('https://data.jmail.world/v1/photos.parquet')
WHERE image_description ILIKE '%pool%'
LIMIT 20;
Downloading Files
Universal Download (any document, email, or photo)
# Download by document ID — auto-detects type and source
bash scripts/jmail-duckdb.sh download "EFTA02406146" # DOJ email PDF
bash scripts/jmail-duckdb.sh download "HOUSE_OVERSIGHT_034601" # House Oversight photo
bash scripts/jmail-duckdb.sh download "COURT_giuffre-115cv07433_1" # Court document
bash scripts/jmail-duckdb.sh download "vol00009-efta00462570-pdf" # DOJ volume scan
bash scripts/jmail-duckdb.sh download "EFTA02406146" ./output-dir # Custom output dir
Supported sources:
| ID Pattern | Type | Format |
|---|---|---|
EFTA* | DOJ emails & photos | |
vol* | DOJ volume scans | |
HOUSE_OVERSIGHT_* | House Oversight photos | JPG (direct) |
COURT_giuffre* | Giuffre court docs |
Photo Search & Download
# Search photos by AI-generated description
bash scripts/jmail-duckdb.sh photo-search "swimming pool"
bash scripts/jmail-duckdb.sh photo-search "forced entry"
# Download a specific photo (DOJ: extracts PNG from PDF, HO: direct JPG)
bash scripts/jmail-duckdb.sh photo-download "EFTA00000002-0.png"
bash scripts/jmail-duckdb.sh photo-download "HOUSE_OVERSIGHT_034601.JPG" ./output
DOJ photos are stored as single-page PDFs — the download command automatically extracts the embedded image as PNG using pdfimages. House Oversight photos are direct JPGs. If pdfimages is not installed, DOJ photos are saved as PDF.
Security
- SQL injection prevention: All user input is whitelist-sanitized (alphanumeric + safe chars only). SQL meta-characters, operators, and keywords are stripped before query construction.
- Path traversal prevention: Parquet filenames and document IDs are validated against strict patterns before use in file operations.
- Read-only queries: All DuckDB operations are
SELECTonread_parquet()— no writes, no code execution, no network access beyond the cached Parquet files. - Data source: All data comes from jmail.world's public Parquet files and assets.getkino.com (DOJ document mirror). No private APIs or credentials involved.
Requirements
- DuckDB (
duckdbCLI) — must be installed manually (apt install duckdb/brew install duckdb/ duckdb.org) - curl — for web search API and downloading Parquet files
- python3 — for URL encoding in search script
- pdfimages (optional, for photo-download PNG extraction) —
apt install poppler-utils - jq (optional, for JSON formatting)
References
- Official Docs
- Docs Index for LLMs
- API Reference
- DuckDB Examples
- Python Client (external) — not bundled, see official docs
- Datasets & URLs
Files
4 totalComments
Loading comments…
