{"openapi":"3.1.0","info":{"title":"Cloud & CDN IP Ranges API","version":"1.0.0","description":"Attribute any IP address to the cloud provider, CDN, region and service that owns it — from the official, publicly-published IP-range lists of AWS, Google Cloud, Cloudflare, Oracle Cloud (OCI), Fastly and GitHub. Pass an IPv4 or IPv6 address and get every matching prefix with its provider, region/scope and service, plus an is_cloud flag that tells you at a glance whether the address belongs to a known cloud or CDN — or list a single provider's published ranges, filtered by region, service and IP version. Built for firewall allow-lists, abuse and fraud triage, bot and egress classification, SSRF defence and knowing whether inbound or outbound traffic originates from a cloud or CDN. Range data is fetched live from each provider's canonical public list, so it is always current. A cloud/CDN IP-attribution service — distinct from IP geolocation (ipgeo), ASN/BGP ownership (asn, ripestat), open-port exposure (internetdb) and the IANA port/protocol registries (netports, ipprotocols). No upstream key, no cache.","contact":{"name":"PremiumApi","url":"https://www.oanor.com/by/premiumapi"}},"servers":[{"url":"https://api.oanor.com/cloudips-api","description":"oanor gateway"}],"tags":[{"name":"Cloud IP Ranges"},{"name":"Meta"}],"components":{"securitySchemes":{"oanorKey":{"type":"apiKey","in":"header","name":"x-oanor-key","description":"Get your key at https://www.oanor.com/developer/keys"}}},"security":[{"oanorKey":[]}],"paths":{"/v1/lookup":{"get":{"operationId":"get_v1_lookup","tags":["Cloud IP Ranges"],"summary":"Attribute an IP to a cloud/CDN","description":"","parameters":[{"name":"ip","in":"query","required":true,"description":"IPv4 or IPv6 address","schema":{"type":"string"},"example":"52.94.76.5"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"ip":"52.94.76.5","matches":[{"prefix":"52.94.76.0/22","region":"us-west-2","service":"AMAZON","provider":"AWS"}],"version":"ipv4","is_cloud":true,"match_count":1},"meta":{"timestamp":"2026-06-01T23:40:53.280Z","request_id":"560db8ff-94ed-4d16-8363-6e2d3e23365b"},"status":"ok","message":"IP attribution retrieved","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/ranges":{"get":{"operationId":"get_v1_ranges","tags":["Cloud IP Ranges"],"summary":"List a provider's published prefixes","description":"","parameters":[{"name":"provider","in":"query","required":true,"description":"aws, gcp, cloudflare, oracle, fastly or github","schema":{"type":"string"},"example":"cloudflare"},{"name":"region","in":"query","required":false,"description":"Filter by region/scope substring","schema":{"type":"string"}},{"name":"service","in":"query","required":false,"description":"Filter by service substring (e.g. S3)","schema":{"type":"string"}},{"name":"version","in":"query","required":false,"description":"ipv4 or ipv6","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"1-1000 (default 100)","schema":{"type":"string"}},{"name":"offset","in":"query","required":false,"description":"Paging offset","schema":{"type":"string"}}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"count":22,"limit":100,"total":22,"offset":0,"prefixes":[{"prefix":"173.245.48.0/20","service":"Cloudflare"},{"prefix":"103.21.244.0/22","service":"Cloudflare"},{"prefix":"103.22.200.0/22","service":"Cloudflare"},{"prefix":"103.31.4.0/22","service":"Cloudflare"},{"prefix":"141.101.64.0/18","service":"Cloudflare"},{"prefix":"108.162.192.0/18","service":"Cloudflare"},{"prefix":"190.93.240.0/20","service":"Cloudflare"},{"prefix":"188.114.96.0/20","service":"Cloudflare"},{"prefix":"197.234.240.0/22","service":"Cloudflare"},{"prefix":"198.41.128.0/17","service":"Cloudflare"},{"prefix":"162.158.0.0/15","service":"Cloudflare"},{"prefix":"104.16.0.0/13","service":"Cloudflare"},{"prefix":"104.24.0.0/14","service":"Cloudflare"},{"prefix":"172.64.0.0/13","service":"Cloudflare"},{"prefix":"131.0.72.0/22","service":"Cloudflare"},{"prefix":"2400:cb00::/32","service":"Cloudflare"},{"prefix":"2606:4700::/32","service":"Cloudflare"},{"prefix":"2803:f800::/32","service":"Cloudflare"},{"prefix":"2405:b500::/32","service":"Cloudflare"},{"prefix":"2405:8100::/32","service":"Cloudflare"},{"prefix":"2a06:98c0::/29","service":"Cloudflare"},{"prefix":"2c0f:f248::/32","service":"Cloudflare"}],"provider":"Cloudflare","provider_key":"cloudflare"},"meta":{"timestamp":"2026-06-01T23:40:53.414Z","request_id":"48970880-9b88-45c0-aab2-6e8738778b5f"},"status":"ok","message":"Ranges retrieved","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/meta":{"get":{"operationId":"get_v1_meta","tags":["Meta"],"summary":"Supported providers & sources","description":"","parameters":[],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"Attribute any IP address to the cloud provider, CDN, region and service that owns it, from the official publicly-published IP-range lists of AWS, Google Cloud, Cloudflare, Oracle Cloud (OCI), Fastly and GitHub. /v1/lookup?ip=52.94.76.5 checks an IPv4 or IPv6 address against every provider and returns each matching prefix with its provider, region/scope and service (is_cloud tells you at a glance whether the IP belongs to a known cloud/CDN). /v1/ranges?provider=aws lists a single provider's published prefixes, filterable by region, service and IP version with offset/limit paging. Useful for firewall allow-lists, abuse/fraud triage, egress classification, SSRF defence and knowing whether traffic originates from a cloud or CDN. Data fetched live from each provider's canonical range list (public). A cloud/CDN IP-attribution service — distinct from IP geolocation (ipgeo), ASN/BGP ownership (asn, ripestat), open-port exposure (internetdb) and the IANA port/protocol registries (netports, ipprotocols).","endpoints":["/v1/lookup","/v1/ranges","/v1/meta"],"providers":[{"key":"aws","name":"AWS","source":"https://ip-ranges.amazonaws.com/ip-ranges.json"},{"key":"gcp","name":"Google Cloud","source":"https://www.gstatic.com/ipranges/cloud.json"},{"key":"cloudflare","name":"Cloudflare","source":"https://www.cloudflare.com/ips-v4"},{"key":"oracle","name":"Oracle Cloud","source":"https://docs.oracle.com/en-us/iaas/tools/public_ip_ranges.json"},{"key":"fastly","name":"Fastly","source":"https://api.fastly.com/public-ip-list"},{"key":"github","name":"GitHub","source":"https://api.github.com/meta"}]},"meta":{"timestamp":"2026-06-01T23:40:53.512Z","request_id":"b68576fa-7365-4cb3-9b14-ba7ce177e631"},"status":"ok","message":"Meta retrieved","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}}},"x-oanor-pricing":[{"slug":"free","name":"Free","price_cents_month":0,"monthly_call_quota":2550,"rps_limit":2,"hard_limit":true},{"slug":"starter","name":"Starter","price_cents_month":720,"monthly_call_quota":51000,"rps_limit":8,"hard_limit":true},{"slug":"pro","name":"Pro","price_cents_month":2250,"monthly_call_quota":255000,"rps_limit":20,"hard_limit":true},{"slug":"mega","name":"Mega","price_cents_month":5950,"monthly_call_quota":905000,"rps_limit":50,"hard_limit":true}],"x-oanor-marketplace-url":"https://www.oanor.com/api/cloudips-api"}