@@ -17,7 +17,7 @@ class ApiClient(object):
1717 _api_url = 'https://api.app.outscraper.com'
1818 _api_key = None
1919
20- _max_ttl = 60 * 5
20+ _max_ttl = 60 * 10
2121
2222 def __init__ (self , api_key ):
2323 self ._api_key = api_key
@@ -43,45 +43,50 @@ def _wait_request_archive(self, request_id, requests_pause):
4343
4444 sleep (requests_pause )
4545
46+ raise Exception ('Timeout exceeded' )
47+
4648 def google_search (self , query , language = 'en' , region = 'us' ):
4749 response = requests .get (f'{ self ._api_url } /search' , params = {
48- 'apiKey' : self ._api_key ,
49- 'async' : True ,
5050 'query' : query ,
5151 'language' : language ,
5252 'region' : region ,
53- })
53+ }, headers = {'X-API-KEY' : self ._api_key })
54+
55+ if 199 < response .status_code < 300 :
56+ sleep (10 )
57+ return self ._wait_request_archive (response .json ()['id' ], 2 )
5458
55- sleep (10 )
56- return self ._wait_request_archive (response .json ()['id' ], 2 )
59+ raise Exception (f'Server response code: { response .status_code } ' )
5760
5861 def google_maps_search (self , query , language = 'en' , region = 'us' , limit = 400 , extract_contacts = False , coordinates = None ):
5962 response = requests .get (f'{ self ._api_url } /maps/search' , params = {
60- 'apiKey' : self ._api_key ,
61- 'async' : True ,
6263 'query' : query ,
6364 'coordinates' : coordinates ,
6465 'language' : language ,
6566 'region' : region ,
6667 'organizationsPerQueryLimit' : limit ,
6768 'extractContacts' : extract_contacts ,
68- })
69+ }, headers = { 'X-API-KEY' : self . _api_key } )
6970
70- sleep (15 )
71- return self ._wait_request_archive (response .json ()['id' ], 5 )
71+ if 199 < response .status_code < 300 :
72+ sleep (15 )
73+ return self ._wait_request_archive (response .json ()['id' ], 5 )
74+
75+ raise Exception (f'Server response code: { response .status_code } ' )
7276
7377 def google_maps_business_reviews (self , query , language = 'en' , region = 'us' , limit = 100 , cutoff = None , coordinates = None ):
7478 response = requests .get (f'{ self ._api_url } /maps/reviews' , params = {
75- 'apiKey' : self ._api_key ,
76- 'async' : True ,
7779 'query' : query ,
7880 'coordinates' : coordinates ,
7981 'language' : language ,
8082 'region' : region ,
8183 'limit' : 1 ,
8284 'cutoff' : cutoff ,
8385 'reviewsPerOrganizationLimit' : limit
84- })
86+ }, headers = {'X-API-KEY' : self ._api_key })
87+
88+ if 199 < response .status_code < 300 :
89+ sleep (30 )
90+ return self ._wait_request_archive (response .json ()['id' ], 5 ).get ('data' , [])
8591
86- sleep (30 )
87- return self ._wait_request_archive (response .json ()['id' ], 5 ).get ('data' , [])
92+ raise Exception (f'Server response code: { response .status_code } ' )
0 commit comments