diff --git a/gift.py b/gift.py
index 95f2da3..a1b119d 100644
--- a/gift.py
+++ b/gift.py
@@ -17,6 +17,7 @@ max_price = 5 # Max price to buy a domain at (in HNS)
 previous_gifts = []
 max_gifts_per_interval = 24 # Max gifts per interval
 interval = 60*60*24 # 24 hours
+EXPIRY_THRESHOLD = 144 * 35 # 35 days
 
 if os.getenv('max_price') == 'true':
     max_price = int(os.getenv('max_price'))
@@ -98,8 +99,15 @@ def gift(name,email,referer, ip,api=False):
     if names.status_code != 200:
         return "Error getting names:<br>" + names.text
 
-    names = names.json()
-    if len(names['domains']) == 0:
+    tmpnames = names.json()
+    domain = None
+    for name in tmpnames['domains']:
+        if (name['expireBlock'] - tmpnames['currentHeight']) < EXPIRY_THRESHOLD:
+            domain = name['name']
+            break
+    
+
+    if domain == None:
         domains_market = requests.get(nb_endpoint + "/api/domains/marketplace?offset=0&buyNowOnly=true&sortKey=price&sortDirection=asc&exclude=%2Cnumbers%2Chyphens%2Cunderscores&maxLength=10&offersOnly=false"
                          ,headers=headers, cookies=cookies)
         if domains_market.status_code != 200:
@@ -109,13 +117,26 @@ def gift(name,email,referer, ip,api=False):
         if len(domains_market['domains']) == 0:
             return "No domains available to gift<br>Check back in a few minutes"
         
-        domain = domains_market['domains'][0]['name']
+        for d in domains_market['domains']:
+            if d['amount'] > max_price*1000000:
+                continue
+            data = requests.post("https://www.namebase.io/api/domains/search",headers=headers,json={"domains":[d['name']]}, cookies=cookies)
+            if data.status_code != 200:
+                return "Error getting names:<br>" + data.text
+            data = data.json()
+            if data['domains'][0]['domainInfo']['name'] == d['name']:
+                return "Domain is not available<br>Check back in a few minutes"
+            if (data['domains'][0]['domainInfo']['expireBlock'] - data['currentHeight']) > EXPIRY_THRESHOLD:
+                domain = d['name']
+                break
+        
+        if domain == None:
+            return "No domains available to gift<br>Check back in a few minutes"
+        # Buy the domain
         print("Buying: " + domain,flush=True)
         price = int(domains_market['domains'][0]['amount'])
         if price > max_price*1000000:
             return "Domain price too high<br>Check back in a few minutes"
-        
-
 
         payload = {
             "listingId": domains_market['domains'][0]['id']
@@ -124,9 +145,6 @@ def gift(name,email,referer, ip,api=False):
         if buy.status_code != 200:
             return "Error buying name:<br>" + buy.text
         
-
-    else:
-        domain = names['domains'][0]['name']
     
     print("Gifting: " + domain,flush=True)