# Get Unused Elastic IPs

**URL:** <https://community.cloudquery.io/t/get-unused-elastic-ips/1215>\
**Category:** Queries & Insights\
**Tags:** aws, cost\_optimization\
**Created:** [August 7, 2025, 10:15am UTC](https://community.cloudquery.io/t/get-unused-elastic-ips/1215 "2025-08-07T10:15:58Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![pilvikala](https://sea1.discourse-cdn.com/flex001/user_avatar/community.cloudquery.io/pilvikala/32/11_2.png) [@pilvikala](https://community.cloudquery.io/u/pilvikala)\
**Post date:** [August 7, 2025, 10:15am UTC](https://community.cloudquery.io/t/get-unused-elastic-ips/1215/1 "2025-08-07T10:15:58Z")

</div>

AWS charges for Elastic IPs that are allocated but not associated with running instances. These charges can accumulate quickly across large infrastructures, making unused EIPs a common source of unnecessary costs. Here’s a short PostgreSQL query to get all unused EIPs across all your accounts from a CloudQuery AWS sync:

```sql
SELECT public_ip, instance_id 
FROM aws_ec2_eips 
WHERE instance_id IS NULL 
  AND public_ip NOT IN (
    SELECT nat_address->>'PublicIp' AS public_ip
    FROM (
      SELECT jsonb_array_elements(nat_gateway_addresses) AS nat_address
      FROM aws_ec2_nat_gateways
      WHERE nat_gateway_addresses IS NOT NULL
    ) s
  )

```
