egress feed

Official, verified IP ranges for third-party services — machine-readable, with provenance.

v1/index.json · changelog · source & methodology · Terraform provider

Use with Terraform: data "egress_ranges" "x" { service = "<slug>" purpose = "<purpose>" }. egress purposes are ranges you connect to; ingress purposes are webhook/agent sources.

Entry counts matter: every CIDR consumes one security-group rule (default quota: 60 per SG, IPv4 and IPv6 counted separately). Ranges are losslessly aggregated — published coverage is preserved exactly, never widened. Purposes with hundreds+ of entries belong in prefix lists or firewall rule groups, not security groups.

Cloud / IaaS

SlugServiceClassificationPurposes (entries v4+v6)Ranges
awsAmazon Web Servicesdedicatedall (egress, 1731+2047)
cloudfront (egress, 179+31)
dynamodb (egress, 28+0)
route53-healthchecks (ingress, 27+23)
s3 (egress, 175+447)
json
azureMicrosoft Azure (Service Tags)dedicatedall (egress, 2705+1941)
sql (egress, 1113+400)
storage (egress, 496+79)
json
digitaloceanDigitalOceandedicatedall (egress, 179+53)json
googleGoogle (all services)dedicatedall (egress, 97+15)json
google-cloudGoogle Cloud Platformdedicatedall (egress, 441+20)json
ibm-cloudIBM Cloud (Classic infrastructure)dedicatedfrontend (egress, 42+0)
load-balancers (egress, 39+0)
json
linodeAkamai Connected Cloud (Linode)dedicatedall (egress, 238+38)json
oracle-cloudOracle Cloud Infrastructurededicatedall (egress, 781+0)
object-storage (egress, 29+0)
json
vultrVultr (Constant, AS20473)dedicatedall (egress, 124+27)json

CDN / Edge

SlugServiceClassificationPurposes (entries v4+v6)Ranges
cloudflareCloudflarecdn-sharededge (both, 15+7)json
fastlyFastlycdn-sharededge (both, 19+2)json

Payments & fintech

SlugServiceClassificationPurposes (entries v4+v6)Ranges
braintreeBraintree (PayPal)dedicatedapi (egress, 46+0)
sandbox (egress, 102+0)
json
paypalPayPaldedicatedall (both, 8+0)json
plaidPlaiddedicatedwebhooks (ingress, 4+0)json
stripeStripededicatedapi (egress, 130+0)
terminal (egress, 38+0)
webhooks (ingress, 15+0)
json

Observability

SlugServiceClassificationPurposes (entries v4+v6)Ranges
datadogDatadogdedicatedagents-eu (egress, 2+1)
agents (egress, 1+1)
api-eu (egress, 2+2)
api (egress, 1+1)
apm (egress, 1+1)
logs (egress, 1+1)
synthetics (ingress, 113+0)
webhooks (ingress, 35+0)
json
grafana-cloudGrafana Clouddedicatedalerts (ingress, 26+0)
logs (ingress, 42+0)
metrics (ingress, 67+0)
json
new-relicNew Relicdedicatedagents (egress, 5+4)
synthetics (ingress, 59+0)
json
sentrySentry (hosted)dedicatedingest (egress, 4+2)
uptime (ingress, 12+0)
webhooks (ingress, 10+0)
json

Developer platforms & CI

SlugServiceClassificationPurposes (entries v4+v6)Ranges
buildkiteBuildkitededicatedwebhooks (ingress, 3+0)json
circleciCircleCIdedicatedcore (egress, 10+0)
jobs (ingress, 21+0)
json
githubGitHubdedicatedactions (ingress, 3902+1444)
api (egress, 20+2)
git (egress, 32+2)
hooks (ingress, 4+2)
packages (egress, 25+0)
pages (egress, 6+4)
web (egress, 20+2)
json
gitlabGitLab.commixedweb-api (egress, 2+0)
webhooks (ingress, 2+0)
json

Data platforms

SlugServiceClassificationPurposes (entries v4+v6)Ranges
databricksDatabricksdedicatedall (both, 2662+0)json
elastic-cloudElastic Clouddedicatedapi (egress, 102+0)
outbound (ingress, 166+0)
json
neonNeon (Serverless Postgres)dedicatedoutbound (ingress, 98+0)json

Identity & auth

SlugServiceClassificationPurposes (entries v4+v6)Ranges
auth0Auth0 (Okta CIC)dedicatedall (both, 103+0)json
oktaOktadedicatedall (both, 1947+0)json

Communications

SlugServiceClassificationPurposes (entries v4+v6)Ranges
intercomIntercomdedicatedall-eu (both, 84+0)
all (both, 172+0)
outbound-webhooks (ingress, 6+0)
json
klaviyoKlaviyodedicatedintegrations (ingress, 2+0)json
pagerdutyPagerDutydedicatedwebhooks-eu (ingress, 12+0)
webhooks (ingress, 13+0)
json
postmarkPostmarkdedicatedsmtp (egress, 3+0)
webhooks (ingress, 4+0)
json
twilio-sipTwilio Elastic SIP Trunkingdedicatedsip-media (both, 1+0)
sip-signaling (both, 8+0)
json
zoomZoomdedicatedall (egress, 49+0)json

Business SaaS

SlugServiceClassificationPurposes (entries v4+v6)Ranges
atlassianAtlassian Clouddedicatedall (both, 69+14)
bitbucket (both, 40+14)
egress (ingress, 66+14)
json
docusignDocuSignmixedconnect-webhooks (ingress, 81+0)
email (ingress, 6+0)
json
microsoft-365Microsoft 365mixedcommon (egress, 11+29)
exchange (egress, 15+14)
sharepoint (egress, 5+5)
teams (egress, 2+7)
json
salesforceSalesforcededicatedall (both, 32+5)json
zendeskZendeskmixedapi (egress, 3+0)
webhooks (ingress, 1+0)
json

Security

SlugServiceClassificationPurposes (entries v4+v6)Ranges
netskopeNetskope (NewEdge)dedicateddataplane (both, 5+0)json
rapid7Rapid7 (InsightAppSec cloud engines)dedicatedappsec-engines (ingress, 24+0)json
tenableTenable (Vulnerability Management)dedicatedscanners (ingress, 39+17)json
zscalerZscaler (zscaler.net cloud)dedicatedenforcement-nodes (egress, 243+48)json

AI APIs

SlugServiceClassificationPurposes (entries v4+v6)Ranges
anthropicAnthropic (Claude API)dedicatedapi (egress, 1+1)
outbound (ingress, 1+0)
json
openaiOpenAI (ChatGPT egress)mixedagents (ingress, 758+0)
connectors (ingress, 277+0)
json

Doesn't publish pinnable ranges

ServiceVendor position
Twilio (REST API + webhooks)IPs 'highly dynamic, span a large range'; allow *.twilio.com instead. SIP trunking IS pinnable — see the twilio-sip service.
AdyenNo IP list; allowlist out.adyen.com or resolve it via DNS hourly (their words).
SendGrid (webhooks/parse)Dynamic cloud infra; use signed webhooks, not IP allowlists.
SlackNo published egress IPs; their allowlisting feature restricts YOUR IPs calling THEM.
Shopify (webhooks)Webhook source IPs not published; verify HMAC signatures instead.
Square (webhooks)No webhook source-IP list published; validate notifications via the documented HMAC-SHA256 signature flow.
Duo SecurityExplicitly discourages IP-based egress rules; may change to maintain availability.
SnowflakeDeployment-specific hostnames/IPs per account; no global list.
MongoDB Atlas (data plane)Cluster IPs are per-project/dynamic; control-plane IPs only via authenticated Admin API. Use private endpoints (PrivateLink) — which is itself the strategy's Tier-2 story.
Vercel (function egress)Dynamic by default; static IPs are a paid per-customer feature, not a public range.
Netlify (function egress)No published IPs; any circulating list 'is a guess or outdated'.
HubSpotNo static publication ('change too frequently'); offers an API returning current ranges — could be integrated later as an authed source.
OpenAI API (api.openai.com)Egress to api.openai.com resolves to shared Cloudflare ranges — pinning would allowlist the whole CDN.
Akamai (CDN)Customer-specific maps behind login; no public global ranges.
BoxUse domain names; 'IP addresses can change frequently and without notice' (their wording). No webhook source ranges published.
Sumo LogicNo own ranges; officially delegates to AWS ip-ranges.json ('Amazon'/'EC2' services for your deployment region) — covered by our aws service.