470,000+ real marketing emails from 8,500+ brands, as structured data for your apps and your AI agents.
Query cleaned HTML and full lifecycle journeys over a fast JSON API, or connect Claude, ChatGPT, Cursor, or Codex over MCP and add the Email Love skills.
Filter by brand, category or keyword across hundreds of thousands of real, sent campaigns.
Not screenshots. Get the actual markup, normalized and ready to parse, render or diff.
Multi-email flows per brand: welcome, abandonment, win-back, captured in order.
An MCP server for Claude, ChatGPT, Cursor and Codex, plus open-source Email Love skills. No scraping, no browser automation.
Connect Claude, Cursor, Codex, or ChatGPT to the Email Love library, then install the Email Love skills in the same step. Your agent studies what the best brands actually send before it drafts a line.
Researches 470,000+ real emails
Search by brand, industry, or goal. Walk a brand’s whole welcome or win-back journey, and read the expert notes on why each email works.
Plans a year of campaign moments+ Notion
A stack-ranked calendar with what competitors actually sent at each moment, and how deep they discounted.
Writes ESP personalization
Liquid, AMPscript, Handlebars, HubL, and six more, written, reviewed, and debugged for the platform you send from.
Builds and repairs emails in Figma+ Figma plugin
Export-ready emails from your Email Love design system, plus audits and fixes for templates that won’t export.
One research connection and up to 16 skills. Keep the packs you want; the setup below updates to match.
Sign in once in the browser with a free Email Love account. No keys to paste. Skills are open source (MIT).
Authenticate with a bearer token, then list and filter emails. Anonymous requests work too: drop the header and you're rate-limited but live.
curl https://dev.emaillove.com/v1/emails \ -G \ --data-urlencode "brand=glossier" \ --data-urlencode "per_page=3" \ -H "Authorization: Bearer $EMAILLOVE_API_KEY"
const res = await fetch(
"https://dev.emaillove.com/v1/emails?brand=glossier&per_page=3",
{ headers: { Authorization: `Bearer ${process.env.EMAILLOVE_API_KEY}` } }
);
const { data } = await res.json();
import os, requests
r = requests.get(
"https://dev.emaillove.com/v1/emails",
params={"brand": "glossier", "per_page": 3},
headers={"Authorization": f"Bearer {os.environ['EMAILLOVE_API_KEY']}"},
)
emails = r.json()["data"]
{
"data": [
{
"id": 1522673,
"title": "Email Inspiration from Glossier",
"subject_line": "You asked, we listened",
"brand": "Glossier",
"brand_slug": "glossier",
"preview_url": "https://.../glossier-..._screenshot.jpg",
"url": "https://emaillove.com/email-inspiration-from-glossier-12",
"captured_date": "2026-05-18"
}
],
"meta": { "page": 1, "per_page": 3, "count": 1,
"attribution": { "source": "Email Love", "url": "https://emaillove.com" } }
}Sign in with your Email Love account, mint a key, and you're live. Keys are shown once, store them somewhere safe.
API keys are tied to your Email Love account. Sign in to create, copy and revoke them anytime.