What Most People Miss About Outlook's API

Your sales team just dropped a 270-email thread into 'Projects/2024/Q3' — all tagged 'Urgent', all missing attachments from three weeks ago. You need to pull sender names, dates, and attachment counts into Excel *today*. You open Outlook, right-click the folder, and stare at the ribbon. Nothing says 'API'. You Google 'does outlook have an api'. You get 12 blog posts promising 'easy integration' — none tell you which method actually works for your desktop Outlook 2019 install.

The Short Version

Method Works in Desktop Outlook? Works in New Outlook (Win)? Needs Admin Rights? Realistic Use Case
Microsoft Graph API No — only via web tokens Yes (with Azure app) Yes — tenant admin needed Syncing 'Clients/Acme Corp' emails to Power BI
Outlook COM Add-in (VBA/C#) Yes — Outlook 2016/2019/365 classic only No — blocked in new Outlook No — user-level install Auto-tagging emails in 'Archive/2023' on send
MAPI via Redemption or OutlookSpy Yes — even offline PSTs No — requires legacy MAPI stack Yes — local admin for DLL registration Extracting BCC recipients from 'Projects/2024/Q3' sent items
Outlook Web App + DevTools N/A — browser only Yes — same as OWA No — but violates ToS Quick scrape of subject lines from 'Clients/Acme Corp'

Method 1: Microsoft Graph API

This is the official, supported API — but it’s not *Outlook’s* API. It’s Microsoft 365’s API that happens to include mail endpoints. You don’t call it from Outlook.exe. You call it from Python, PowerShell, or a web app using OAuth2 tokens. Go to Azure Portal > App Registrations > New Registration. Name it 'Q3-Email-Reporter'. Under API Permissions, add Mail.Read for your own mailbox or Mail.Read.Shared if you need access to shared folders like 'Clients/Acme Corp'. The catch? Graph doesn’t see local PST files. It only sees what’s synced to Exchange Online. If your 'Archive/2023' folder lives in a 12 GB PST on drive D:\, Graph returns zero results. Also: Graph won’t let you read BCC fields. Not even with Mail.ReadBasic. That field is intentionally redacted — a security design choice most devs miss until their report fails. Use this when your data lives in Exchange Online and you’re building something external: a dashboard, a Slack bot, or a scheduled PowerShell script. Don’t use it if you’re trying to automate inside Outlook itself.

Method 2: Outlook COM Add-in (VBA or C#)

This is the old-school way — and the only way to run code *inside* classic Outlook. Open Outlook 365 or 2019. Press Alt+F11. In the VBA editor, paste this:
Sub ListSubjectLines()
    Dim olFolder As Outlook.Folder
    Set olFolder = Session.GetDefaultFolder(olFolderInbox).Folders("Projects/2024/Q3")
    Dim olItem As Object
    For Each olItem In olFolder.Items
        Debug.Print olItem.Subject & " | " & olItem.ReceivedTime
    Next olItem
End Sub
Run it with F5. You’ll see output in the Immediate Window. This works in Outlook 2016, 2019, and classic Outlook 365 — but *not* in the new Outlook for Windows (the one launched from the Start menu as 'Outlook'). Microsoft killed COM support there. No warning. No migration path. Just silence. You’ll find File > Options > Add-Ins > COM Add-ins > Go… — but that dialog does nothing in new Outlook. It’s still there, but inert. A counterintuitive tip: VBA macros run faster on cached Exchange mode than online mode. Why? Because cached mode loads message headers locally. Try it on 'Clients/Acme Corp' — you’ll get 200 subjects in under 3 seconds. Online mode? 12 seconds. Limitation: VBA can’t write to protected folders like 'Archive/2023' unless you’ve explicitly granted permission via File > Options > Trust Center > Trust Center Settings > Macro Settings > Enable all macros — which you shouldn’t do. Ever.

Method 3: MAPI via Redemption or OutlookSpy

This is the nuclear option — and the only way to read raw MAPI properties Outlook hides. Want the actual BCC list? The IP address of the sending server? The PR_SENDER_EMAIL_ADDRESS_EX property? This is how. Download Redemption (redemption.codeplex.com — yes, still hosted on CodePlex). Install the .dll. Then in VBA:
Dim safeItem As Object
Set safeItem = CreateObject("Redemption.RDOMail")
safeItem.Import Outlook.Application.ActiveInspector.CurrentItem.PropertyAccessor.GetProperty(
    "http://schemas.microsoft.com/mapi/proptag/0x0E04001F")
Debug.Print safeItem.Bcc
It works on PSTs, OSTs, and Exchange mailboxes — even offline. And it bypasses Outlook’s security prompts. But: you must register the DLL with regsvr32 redemption.dll — and that needs local admin rights. Your IT department will say no. OutlookSpy (outlookspy.com) is free and shows the same data in a UI. Open it, click 'IMAPISession', then 'GetMessage'. Scroll to 'PR_BCC_EMAIL_ADDRESSES'. There it is — no coding required. New Outlook blocks both tools. They crash on launch. Classic Outlook? Works fine.

Which Should You Choose?

Your Situation Pick This Why Next Step
You use new Outlook for Windows and need live email data in Excel Graph API COM is dead here. Graph is your only supported path. Register app in Azure, get token, use Invoke-RestMethod in PowerShell
You run Outlook 2019, need to auto-flag emails in 'Projects/2024/Q3' COM Add-in (VBA) Fast, local, no Azure setup, runs on send/receive Paste macro into Alt+F11, assign to Ctrl+Shift+Q
You have a PST with 'Archive/2023', need BCCs or hidden headers Redemption + VBA Graph and COM ignore these fields. MAPI doesn’t. Download Redemption, run regsvr32 as admin, test on one message first
You’re on Mac Outlook or Outlook for iOS Graph API only No COM, no MAPI, no VBA — Graph is universal Use Graph Explorer (developer.microsoft.com/en-us/graph/graph-explorer) to test queries first
You just want to export subject/date from 'Clients/Acme Corp' once Outlook Web App + Copy/Paste Skip APIs entirely. Sort by Date, select all, Ctrl+C, paste into Excel. Use Ctrl+A, Ctrl+C, then in Excel: Alt+H+V+T (Paste Text)
Emily Watson

Emily Watson

Emily is an expert in workplace culture and team dynamics. Her articles help professionals navigate interpersonal challenges and build better coworker relationships.