Pricing API

The Email Price Index is available as JavaScript Object Notation (JSON) through a public, read-only application programming interface (API). No key or account is needed.

Endpoints

NameTypeRequiredDescription
/api/pricing/vendorsGETNoThe seven marketing platforms, with their checked dates, source links and GoodPostal pricing guides.
/api/pricing/vendors/{vendor}GETNoRecorded plans, contact bands, monthly prices and send multipliers for one platform.
/api/pricing/servicesGETNoThe six sending services, with their checked dates, source links and GoodPostal pricing guides.
/api/pricing/services/{service}GETNoRecorded plans, monthly prices, included emails, overage rates and free-tier details for one service.

Use a slug from a list response in its detail endpoint. Amazon Simple Email Service uses amazon-ses; Constant Contact uses constant-contact. Unknown slugs return 404. Only reads are supported.

Example request

bash
curl -H "Accept: application/json" https://goodpostal.com/api/pricing/services/sendgrid

Example response

The values below are illustrative examples, not current prices. Read the response's checked date and source page before using a price.

json
{
  "license": "CC BY 4.0",
  "license_url": "https://creativecommons.org/licenses/by/4.0/",
  "attribution": "Source: GoodPostal Email Price Index (goodpostal.com/email-price-index)",
  "checked": null,
  "source_url": "https://example.com/pricing",
  "data": [
    {
      "service": "Example sending service",
      "plan": "Example plan",
      "monthly_usd": 20,
      "included_emails": 10000,
      "overage_per_1k_usd": null,
      "free_tier_monthly_emails": 0,
      "free_tier_note": "Example only",
      "last_verified": null,
      "source_url": "https://example.com/pricing"
    }
  ]
}

Detail rows use the same columns as the downloadable comma-separated values (CSV) files. Prices are in United States dollars. A null value means no value is recorded. List responses carry the checked date and source URL on each item; detail responses also carry them at the top level.

Rate limits and caching

The four endpoints share a limit of 60 requests per minute per Internet Protocol (IP) address. A 429 response includes a Retry-After header. Responses are cached for one hour and carry Cache-Control: public, max-age=3600. Browser reads from other origins are allowed.

Reuse and credit
Data is licensed under Creative Commons Attribution 4.0. Credit GoodPostal Email Price Index (goodpostal.com/email-price-index) when you use it.

Join our newsletter

Keep up with the latest from GoodPostal. No spam, just the good stuff.

We care about your data. Read our privacy policy.