AWS IP Map

AWS IP ranges API

Static files at stable URLs, rebuilt within 30 minutes of every change. No key, no rate limit beyond GitHub Pages, and the files are small enough to fetch in a deploy step.

EndpointWhat you get
https://manishh-13.github.io/aws-ip-map/ip-ranges.jsonByte-for-byte mirror of the latest AWS file.
https://manishh-13.github.io/aws-ip-map/ipv4.txtEvery AWS IPv4 prefix, one per line.
https://manishh-13.github.io/aws-ip-map/ipv6.txtEvery AWS IPv6 prefix, one per line.
https://manishh-13.github.io/aws-ip-map/ranges.csvprefix, IP version, region, network border group, services.
https://manishh-13.github.io/aws-ip-map/regions/{region}/ipv4.txtOne region, for example regions/eu-west-1/ipv4.txt. Also ipv6.txt, ranges.csv, ranges.json.
https://manishh-13.github.io/aws-ip-map/services/{service}/ipv4.txtOne service code in lowercase with dashes, for example services/cloudfront-origin-facing/ipv4.txt.
https://manishh-13.github.io/aws-ip-map/regions/{region}/{service}/ipv4.txtOne service in one region, for example regions/ap-south-1/s3/ipv4.txt.
https://manishh-13.github.io/aws-ip-map/data/index.jsonCompact index used by the search on this site.
https://manishh-13.github.io/aws-ip-map/data/history.jsonIPv4 address totals per region per snapshot since 2015.
https://manishh-13.github.io/aws-ip-map/data/timeline.jsonThe complete history: every entry ever published with the versions it was listed in.
https://manishh-13.github.io/aws-ip-map/changes.xmlAtom feed of every change.

Examples

Shell

curl -s https://manishh-13.github.io/aws-ip-map/services/cloudfront-origin-facing/ipv4.txt

Terraform

data "http" "cloudfront" {
  url = "https://manishh-13.github.io/aws-ip-map/services/cloudfront-origin-facing/ipv4.txt"
}

locals {
  cloudfront_cidrs = compact(split("\n", data.http.cloudfront.response_body))
}

Python

import ipaddress, urllib.request

url = "https://manishh-13.github.io/aws-ip-map/ipv4.txt"
nets = [ipaddress.ip_network(l) for l in urllib.request.urlopen(url).read().decode().split()]
print(any(ipaddress.ip_address("52.95.110.1") in n for n in nets))

For production allowlists that must react within minutes, subscribe to AWS's own SNS topic arn:aws:sns:us-east-1:806199016981:AmazonIpSpaceChanged and read the source file directly; this site is a convenience layer on top.