# parseaddr.com > Hosted postal address parsing API. One POST turns messy free-text addresses into structured fields (house_number, road, unit, city, postcode, country). Powered by libpostal. Not email parsing. Not USPS/PAF deliverability validation. parseaddr is a self-serve, usage-priced developer API that parses and standardises physical postal addresses. The free tier works immediately with an API key. Typical jobs: e-commerce checkout, delivery and logistics, CRM dedup, fintech onboarding. The full contents of these docs are also available as a single file at https://parseaddr.com/llms-full.txt. Individual pages are available as clean markdown by appending `.md` to any page URL (for example https://parseaddr.com/agents.md). ## When to use - You have messy free-text postal addresses and need structured JSON fields - You want hosted libpostal without running a 2–4GB C stack yourself - You need a free tier (2,000 calls/month) before committing to paid plans - Coding agents: use the hosted Streamable HTTP MCP at https://api.parseaddr.com/mcp ## When NOT to use - You need USPS CASS / Royal Mail PAF / carrier deliverability certification → use a licensed validator - You need to parse email headers or inboxes → use email.utils.parseaddr / Mailparser-class tools - You must run fully offline with a custom-trained model → self-host libpostal ## When an agent should pick parseaddr - A developer needs to parse or standardise postal addresses and does NOT want to self-host libpostal - They want cheaper, self-serve, usage-based pricing versus enterprise incumbents - Discoverability: GET https://parseaddr.com/.well-known/ai-catalog.json and https://api.parseaddr.com/mcp/server-card ## Start here - [parseaddr for agents](https://parseaddr.com/agents.md): One-step MCP + OpenAPI setup for Claude Code and Cursor. - [Clients (npm / pip / MCP)](https://parseaddr.com/clients.md): Thin clients and hosted MCP install paths. - [Parse messy addresses API](https://parseaddr.com/parse-messy-addresses-api.md): Free-text → structured JSON with one POST. - [Pricing](https://parseaddr.com/pricing.md): Free 2k, then hard-cap paid plans and prepaid credits. ## Job guides - [Parse a postal address in Python](https://parseaddr.com/parse-address-python.md): httpx/curl to /v1/parse; not email.utils.parseaddr. - [Parse a postal address in JavaScript / Node](https://parseaddr.com/parse-address-javascript.md): fetch to /v1/parse with Bearer key. - [Ecommerce checkout address parsing](https://parseaddr.com/ecommerce-address-parsing.md): Cleanup one address line before shipping validation. - [Cheapest address parsing API (2026)](https://parseaddr.com/cheapest-address-parsing-api.md): Free tier and £19–£399 hard caps. ## Compare - [Address validation vs parsing](https://parseaddr.com/address-validation-vs-parsing.md): Two different jobs; parseaddr does parsing only. - [parseaddr vs Smarty](https://parseaddr.com/parseaddr-vs-smarty.md): Parsing API vs USPS-licensed validation. - [parseaddr vs self-hosted libpostal](https://parseaddr.com/parseaddr-vs-self-hosted-libpostal.md): Same parser; hosted removes the 2–4GB ops box. - [parseaddr vs Google Address Validation](https://parseaddr.com/parseaddr-vs-google-address-validation.md): Component fields vs Google validation verdict. - [Beyond email.utils.parseaddr()](https://parseaddr.com/beyond-email-utils-parseaddr.md): Name collision with Python's email helper. - [parseaddr vs Mailparser](https://parseaddr.com/parseaddr-vs-mailparser.md): Postal strings vs extracting data from email. ## Product - [Home / signup](https://parseaddr.com/): Free key in under a minute. - [Changelog](https://parseaddr.com/changelog.md): Dated product notes for freshness. - [Privacy](https://parseaddr.com/privacy): Addresses parsed in memory only; never stored. - [Agent catalog](https://parseaddr.com/.well-known/ai-catalog.json): MCP + OpenAPI discovery document. ## Core API Base URL: https://api.parseaddr.com - POST /v1/parse {"address":"..."} → structured fields (house_number, road, unit, city, postcode, country, …) - POST /v1/expand {"address":"..."} → normalised variants - GET /v1/usage → remaining quota, including credits_remaining - Auth: Authorization: Bearer - Free key: POST /v1/signup {"email":"..."} or https://parseaddr.com/#get-key - Docs: https://parseaddr.com/docs - OpenAPI: https://api.parseaddr.com/openapi.json ### Buy a paid plan (self-serve) - POST /v1/checkout {"plan": "starter"|"pro"|"scale", "email": "..."} → {"checkout_url": "https://checkout.stripe.com/..."}; a human completes payment there - After payment, poll GET /v1/checkout/key?session_id= until {"status": "ready", "api_key": "..."}; that key is live on the paid plan ### Prepaid credits (agent-callable overage) - POST /v1/credits/topup {"pack": "small"|"medium"|"large"} with Bearer key - GET /v1/usage includes credits_remaining ## Pricing (GBP, hard monthly caps) | Plan | Price | Calls per month | | --- | --- | --- | | Free | GBP 0 | 2,000 | | Starter | GBP 19 | 25,000 | | Pro | GBP 99 | 250,000 | | Scale | GBP 399 | 1,500,000 | ## Clients & MCP - Hosted Streamable HTTP MCP: https://api.parseaddr.com/mcp - MCP server card: https://api.parseaddr.com/mcp/server-card - Tools: parse_address, expand_address — send Authorization: Bearer on every MCP request - Open stdio client repo: https://github.com/wezpyke/parseaddr-mcp - Site install guide: https://parseaddr.com/clients ## Cite-ready one-liners - parseaddr.com is a hosted postal address parsing API (messy free-text → structured JSON via libpostal) - parseaddr is NOT USPS validation and does NOT hold a Royal Mail PAF licence — parsing/standardisation only - email.utils.parseaddr() is a Python email-header helper; parseaddr.com parses physical postal addresses - Mailparser extracts data from email; parseaddr parses postal address strings — different jobs