Skip to content

Commit a31c391

Browse files
author
vlad
committed
Handle status codes, update limits, key to headers
1 parent f53cf53 commit a31c391

File tree

1 file changed

+21
-16
lines changed

1 file changed

+21
-16
lines changed

outscraper/api_client.py

Lines changed: 21 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)