Beyond email.utils.parseaddr(): what the name means here

Published 10 August 2026 · parseaddr.com

Bottom line first. email.utils.parseaddr() is a function in the Python standard library that pulls a display name and an email address out of a raw email header. parseaddr.com is a hosted API that turns messy free-text postal addresses into clean structured fields. Same name, different problem. If a search engine pointed you here because "parseaddr" usually means the Python function, this page is for you.

What email.utils.parseaddr() does

It is the standard library's one-liner for a single email header:

from email.utils import parseaddr

parseaddr('"Jane Doe" <jane.doe@example.com>')
# returns the 2-tuple: ('Jane Doe', 'jane.doe@example.com')

Given one header value it returns (display name, email address). Its contract is narrow: it is designed for a single address in a single header, and it expects input that mostly follows RFC 2822. Real-world input is rarely that tidy.

Where the stdlib parser falls down

Robust extraction from real-world headers is harder than the one-liner suggests. The failure modes are documented, not hypothetical:

The lesson generalizes beyond email: naive parsers are fine on the happy path and brittle at the edges. When the string you actually need to parse is a postal address, you want a parser built for the mess, not a regex you maintain yourself.

What parseaddr.com actually is

parseaddr is a hosted postal address parsing API. One POST call turns free-text input like flat 2, 10 downing st, london sw1a 2aa into structured fields: house number, road, unit, city, postcode, country. Under the hood it runs libpostal, the open-source parser trained on about a billion real addresses, so the edge cases (abbreviations, missing commas, local formats) are handled rather than hand-rolled:

curl -s https://api.parseaddr.com/v1/parse \
  -H "Authorization: Bearer ***" \
  -H "Content-Type: application/json" \
  -d '{"address":"flat 2, 10 downing st, london sw1a 2aa"}'

Free tier: 2,000 calls a month, no card, key issued instantly at signup. Paid plans start at £19/month for 25,000 calls. Full pricing on the pricing page.

If you came here looking for email parsing

Honest answer: this is not an email parsing or verification service. If your job is extracting names and addresses from email headers, the stdlib function is a fine starting point on a current Python where CVE-2023-27043 is fixed, and there are dedicated email parsing services for inbox-scale workloads. parseaddr.com is for physical addresses: e-commerce checkout, delivery and logistics, CRM dedup, fintech onboarding. The overlap between the two worlds is real, which is why we wrote the parseaddr vs Mailparser explainer.

FAQ

Is parseaddr.com the same thing as Python's email.utils.parseaddr()? No. One is a standard library function for email headers; the other is a hosted API for postal addresses. The name collision is why this page exists.

Is parseaddr.com an email parser? No. Postal addresses only, as the home page and llms.txt both state plainly.

Does parseaddr.com fix CVE-2023-27043? No, and it does not need to: that is a bug in Python's stdlib email module, fixed upstream. parseaddr.com never parses email headers.

What does it cost to try? Nothing. 2,000 calls a month on the free tier, no card, and the signup form is on the home page.

parseaddr · home · pricing · docs · parseaddr vs Mailparser