which vendors let you allowlist them

Replacing 0.0.0.0/0 with something specific depends on the vendor at the other end publishing their IP ranges, and on publishing them in a form you can actually follow. This page scores how well each one does that.

slash0 fetches and parses the official range publications of every service in its catalog, continuously, and republishes them as a signed feed. Doing that means writing a parser per vendor and then living with the result: the pages that get restyled, the files with no cache headers, the ranges that appear one morning with no warning. This page is the byproduct of that work. It is not a survey of vendor documentation, it is a record of what it takes to track each one in production.

Nothing here is a judgement about the services themselves. A vendor can be excellent and still publish its ranges badly. What is being measured is narrow: whether an automated consumer can follow your ranges without heroics.

what the score measures

Five points, one for each thing that separates a range list you can automate from one you have to babysit.

  1. Machine-readable source. The ranges come from an endpoint that returns structured data. The alternative is a documentation page, which means every consumer writes a scraper and every scraper breaks on a redesign.
  2. Cheap change detection. The server honors conditional requests, so checking for a change costs a 304 rather than a full download. Without it, following a vendor closely means refetching the entire list on a timer.
  3. Purposes separated. The publication distinguishes what the ranges are for, so allowlisting the API does not also allowlist every other thing the vendor operates. The common failure is one flat list covering an entire company.
  4. Advance notice. The vendor documents how long a newly published range sits unused before it starts carrying traffic. This is the single most useful thing a vendor can offer, and it is the rarest.
  5. A change signal. Something the vendor operates that tells you a change happened: a notification topic, a status page subscription, a version endpoint. Polling is the fallback when this does not exist.

findings

the table

Sorted by score, then alphabetically. Every cell is read from the feed, and every service name links to its page, where the current ranges render live. Advance-notice and change-signal entries link to the vendor page that states the claim, so any cell can be checked at its source.

ServiceScoreSourceChange detectionPurposesAdvance noticeChange signalIPv6
Elastic Cloud5JSONconditional GET28 weeks before static IPs changevendorno
Amazon Web Services4JSONconditional GET5nonevendoryes
Atlassian Cloud4JSONconditional GET3nonevendoryes
Auth0 (Okta CIC)4JSONconditional GET7several months, by emailnoneno
Buildkite4JSONconditional GET17 days, vendor says it will trynoneno
CircleCI4JSONfull download230 daysvendorno
LaunchDarkly4JSONfull download22 weeks, posted on the status pagevendorno
Microsoft 3654JSONfull download430 days before new endpoints are usedvendoryes
Stripe4JSONfull download37 days, by mailing listvendorno
Cloudflare3JSONconditional GET1nonenoneyes
Databricks3JSONfull download760 days before updated IPs activatenoneno
Datadog3JSONconditional GET8nonenoneyes
Fastly3JSONfull download1nonevendoryes
GitHub3JSONconditional GET7nonenoneyes
Google Cloud Platform3JSONconditional GET49nonenoneyes
Intercom3JSONconditional GET3nonenoneno
Microsoft Azure (Service Tags)3JSONpage extraction31 week before new IPs are usednoneyes
Okta3JSONconditional GET16nonenoneno
Oracle Cloud Infrastructure3JSONconditional GET2nonenoneno
PagerDuty3JSONconditional GET2nonenoneno
Svix3JSONconditional GET1nonenoneyes
Tenable (Vulnerability Management)3JSONconditional GET1nonenoneyes
Zscaler (zscaler.net cloud)3JSONconditional GET2nonenoneyes
Akamai Connected Cloud (Linode)2CSVconditional GETone setnonenoneyes
Braintree (PayPal)2JSONfull download2nonenoneno
Checkly2JSONfull download1nonenoneyes
DocuSign2JSONfull download2nonenoneno
Google (all services)2JSONconditional GETone setnonenoneyes
Grafana Cloud2textfull download3nonenoneno
HubSpot2JSONfull download4nonenoneno
Klaviyo2JSONfull download1nonenoneno
OpenAI2JSONfull download6nonenoneno
Pingdom2XMLfull download1nonenoneyes
Salesforce2JSONconditional GETone setnonenoneyes
Zendesk2JSONfull download2nonenoneno
Zoom2textconditional GETone setnonenoneno
Anthropic1docs pagepage extraction3nonenoneyes
Braze1docs pagepage extraction1nonenoneno
Checkout.com1docs pagepage extraction1nonenoneno
Cisco Duo1docs pagepage extraction12nonenoneno
DigitalOcean1CSVfull downloadone setnonenoneyes
Fivetran1docs pagepage extraction2nonenoneno
GitLab.com1docs pagepage extraction2nonedocs repono
IBM Cloud (Classic infrastructure)1docs pagepage extraction2nonenoneno
Make1docs pagepage extraction1nonenoneno
Neon (Serverless Postgres)1docs pagepage extraction1nonedocs repono
Netskope (NewEdge)1docs pagepage extraction1nonenoneno
New Relic1docs pagepage extraction2nonedocs repoyes
OneLogin1docs pagepage extraction3nonenoneno
Oracle NetSuite Connector1docs pagepage extraction1nonenoneno
Plaid1docs pagepage extraction1nonenoneno
Postmark1docs pagepage extraction2nonenoneno
Rapid7 (InsightAppSec cloud engines)1docs pagepage extraction1nonenoneno
Retool1docs pagepage extraction1nonenoneno
Sentry (hosted)1docs pagepage extraction3nonedocs repoyes
Splunk AppDynamics SaaS1docs pagepage extraction2nonenoneno
Twilio Elastic SIP Trunking1docs pagepage extraction2nonenoneno
UptimeRobot1docs pagepage extraction1nonenoneyes
Vultr (Constant, AS20473)1CSVfull downloadone setnonenoneyes
Wise1docs pagepage extraction2nonenoneno
Workato1docs pagepage extraction2nonenoneno
WorkOS1docs pagepage extraction1nonenoneno
Airbyte Cloud0docs pagepage extractionone setnonenoneno
dbt Cloud0docs pagepage extractionone setnonenoneno
Hightouch0docs pagepage extractionone setnonenoneno
PayPal0docs pagepage extractionone setnonenoneno

IPv6 is reported but not scored. A vendor with no IPv6 footprint has nothing to publish, and penalising that would measure their network, not their publication practice. The same reasoning keeps range count out of the score: a large list is a fact about a vendor's size.

the vendors who decline

These services state that IP allowlisting is unsupported or unreliable for them, and most name what to do instead: verify webhook signatures, allow a hostname, use a private endpoint. That is a legitimate answer, and it is more useful than a list that quietly goes stale. They are published in the feed under nonPublishers so that tooling can tell "no ranges exist" apart from "no ranges found".

ServiceStated position
AdyenNo IP list; allowlist out.adyen.com or resolve it via DNS hourly (their words).
AivenServices are addressed by hostname; static IP addresses are a paid per-project resource created and attached with the avn static-ip CLI, not a public range list.
Akamai (CDN)Site Shield issues a per-customer set of IP subnet ranges (a map) retrieved through Akamai Control Center or the Site Shield API, rather than one public global list.
Alibaba CloudPublishes per-service ingress lists, such as this per-region table for Data Management Service, rather than a provider-wide range file of the kind AWS, Azure and Google publish.
BoxUse domain names; 'IP addresses can change frequently and without notice' (their wording). No webhook source ranges published.
CockroachDB CloudThe documented controls are an allowlist of your own authorized networks and private connectivity through AWS PrivateLink, GCP Private Service Connect or Azure Private Link.
Confluent CloudPublic egress addresses are read from the Cloud Console or the authenticated Cloud REST API (api.confluent.cloud/networking/v1/ip-addresses), are shared by every customer in the same cloud and region, and are 'not guaranteed to be static' (their wording).
Docker Hub / Docker DesktopPublishes an allowlist of domain URLs rather than addresses; the page lists hostnames only. Reproducible on the data plane: registry-1.docker.io resolves into rotating AWS us-east-1 EC2 addresses, a different set on each query (verified 2026-07-30).
Dynatrace (Synthetic Monitoring)Public Synthetic location addresses are read per environment, either from the Frequency and locations page in the web UI ('Copy IPs to clipboard or Download IPs') or from the Synthetic locations API, which 'returns all the locations available for your Environment along with their IP addresses'. No global list is published.
HoneycombOffers AWS PrivateLink to the Honeycomb API for Enterprise customers on AWS. No range list is published in the docs.
JumpCloudStates for the agent, LDAP-as-a-Service and AD Integration alike: 'Due to the elastic nature of the JumpCloud infrastructure, we currently do not publish lists of IP addresses for allow lists'. Directs users to FQDNs instead. Their separate data-centre page does list six regional RADIUS anycast addresses, which is a single narrow endpoint rather than a service range set.
Mailchimp Transactional (Mandrill) webhooksDirects users to authenticate that a webhook originated from Mailchimp's servers using the documented request-signature flow. The /ips/ API returns your own dedicated sending addresses, which is a different thing from webhook sources.
MailgunTheir IP Allowlist API 'lets you view and manage allowlisted IP addresses to which API key and SMTP credential usage is restricted', which controls your own callers rather than publishing Mailgun's addresses. Outbound sending addresses are per-account dedicated IPs grouped into pools, read through the authenticated /v3/ips API.
Maven Central (repo1.maven.org)repo1.maven.org resolves into Cloudflare's published ranges (verified 2026-07-30: 104.18.18.12 and 104.18.19.12, both inside 104.16.0.0/13), so pinning it would allowlist the whole CDN rather than Maven Central.
MongoDB Atlas (data plane)Cluster IPs are per-project/dynamic; control-plane IPs only via authenticated Admin API. Vendor directs users to private endpoints (PrivateLink).
Netlify (function egress)States that by default the addresses builds and functions connect from 'will fluctuate when we scale up and down'. A static set is available only through the Private Connectivity add-on on Enterprise plans.
OpenAI API (api.openai.com)api.openai.com resolves into Cloudflare's published ranges (verified 2026-07-30: 172.66.0.243 within 172.64.0.0/13, 162.159.140.245 within 162.158.0.0/15), so pinning it would allowlist the whole CDN rather than OpenAI.
Oracle NetSuite (platform)States plainly that Oracle 'does not support the use of NetSuite IP addresses to access or manage access to any NetSuite services', that outbound addresses are 'not documented in the NetSuite Help Center or in SuiteAnswers', and that *.netsuite.com is CDN-fronted. Directs users to 2FA, token-based auth and OAuth 2.0 instead, or to a DNS lookup on outboundips.netsuite.com. NetSuite Connector IS published, see the netsuite-connector service.
Palo Alto Networks Prisma AccessEgress addresses are allocated per tenant and retrieved with your own API key from api.prod.datapath.prismaaccess.com, or read per location in the Prisma Access UI.
PlanetScaleThe addresses to allowlist are shown in the console during the import workflow, differ by region, and the vendor directs users to read them there each time because they 'can change occasionally'.
PyPI (pypi.org, files.pythonhosted.org)Both pypi.org and files.pythonhosted.org resolve into Fastly's published ranges (verified 2026-07-30: 151.101.0.223 and 151.101.128.223, inside 151.101.0.0/16), so pinning them would allowlist the whole CDN rather than PyPI.
Redis CloudThe CIDR allow list restricts which of your own addresses may reach your database, between 4 and 32 entries depending on plan. Redis publishes no ranges of its own.
RubyGems (rubygems.org)rubygems.org resolves into Fastly's published ranges (verified 2026-07-30: 151.101.1.227 and 151.101.129.227, inside 151.101.0.0/16), so pinning it would allowlist the whole CDN rather than RubyGems.
SendGrid (webhooks/parse)Dynamic cloud infra; use signed webhooks, not IP allowlists.
Shopify (webhooks)Documents HMAC-SHA256 signature verification as the way to authenticate a webhook. The page does not mention source IPs, and no official range list was found as of the verified date.
SlackNo published egress IPs; their allowlisting feature restricts YOUR IPs calling THEM.
SnowflakeDeployment-specific hostnames/IPs per account; no global list.
SnykThe Broker Client opens the outbound WebSocket and Snyk rides it back, so in their words 'you do not need to allow a Snyk IP address. Instead, you can allow the Broker Client IP/port.' Requests to Snyk go through a CDN that rotates addresses and whole ranges, and they direct users to allow *.snyk.io.
Splunk Cloud PlatformThe documented control is an IP allow list restricting which addresses on your own network reach each Splunk feature, managed through the Admin Config Service API. Splunk publishes no ranges of its own for the stack.
Square (webhooks)No webhook source-IP list published; validate notifications via the documented HMAC-SHA256 signature flow.
Stytch (webhooks)Publishes no source-IP list of its own; states 'Stytch's webhooks are powered through Svix'. A receiving endpoint allowlists the svix service in this feed instead. Their own IP feature runs the other way: up to 10 customer IPs that may call the Stytch API, arranged over email with support.
Sumo LogicNo own ranges; directs users to download the AWS IP ranges JSON and use the prefixes for the AWS region their deployment sits in, which the aws service already covers. States plainly that 'the list of IP ranges is shared infrastructure. It is not limited to Sumo Logic nodes and is subject to change over time.'
SupabaseStates that 'IPv4 addresses are guaranteed to be static for ingress traffic' through a per-project paid add-on, while 'the outbound IP address is not static and cannot be guaranteed'.
Twilio (REST API + webhooks)IPs 'highly dynamic, and span a large range, so it's impractical to list each of them'; they recommend allowing outbound HTTPS to any *.twilio.com subdomain instead. SIP trunking IS pinnable, see the twilio-sip service.
Vercel (function egress)Dynamic by default; static IPs are a paid per-customer feature, not a public range.
ZapierStates that Zapier 'uses Amazon (AWS)'s us-east-1 region, where it dynamically provisions instances as needed', so there is no fixed set. They suggest matching the User-Agent: Zapier header instead, or the static IP feature available on paid plans.
crates.iocrates.io resolves into Fastly's published ranges (verified 2026-07-30: 151.101.130.137 and 151.101.194.137, inside 151.101.0.0/16), so pinning it would allowlist the whole CDN rather than crates.io.
npm registry (registry.npmjs.org)registry.npmjs.org resolves into Cloudflare's published ranges (verified 2026-07-30: 104.16.0.34 and 104.16.1.34, both inside 104.16.0.0/13), so pinning it would allowlist the whole CDN rather than npm.

method

Every row comes from the published feed at feed.slash0.io/v1, which is rebuilt from each vendor's own publication and carries the source URL and a hash of the upstream body it was derived from. The registry behind it, including the evidence link for every non-publisher, is public in sources.yaml. Advance-notice entries record only periods the vendor documents; a vendor that announces changes without committing to a lead time scores nothing on that criterion, which is a deliberately strict reading. Every notice period and every change signal in the table was read from the vendor's own page and links back to it. Those pages are also submitted to the Internet Archive, so a vendor reorganising its documentation cannot leave a claim here unsupported.

Two caveats worth stating. Notice periods are counted only when they cover the ranges published here: PagerDuty commits to 30 days for its REST API addresses, for example, but not for the webhook sources in this catalog, so it scores nothing for notice. And a low score reflects how a vendor publishes, not how good the service is.

Corrections are welcome, particularly from vendors. If a range publication changed, or this page has something wrong, get in touch and the registry gets updated.

The feed and the Terraform provider that reads it are free. The quickstart is two data sources and a security group rule.