Inspired by this Yelp tutorial, I created a script to search for all gyms in a given city. I tweaked the script with these updates in order to return ALL gyms, not just the first 20. You can find the gist here. The SEARCH_LIMIT is 20.
I'm encountering a Bad Request error. I followed the Yelp Tutorial pretty closely, and am unsure of what it can be coming from -- I'm pretty sure the request is properly encoded, and all my API keys are right.
The print out is below:
Traceback (most recent call last):
File "YelpSearch.py", line 97, in <module>
query_api()
File "YelpSearch.py", line 74, in query_api
response = search_yelp(offset)
File "YelpSearch.py", line 67, in search_yelp
return request(API_HOST, SEARCH_PATH, url_params=url_params)
File "YelpSearch.py", line 53, in request
conn = urllib2.urlopen(signed_url, None)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 127, in urlopen
return _opener.open(url, data, timeout)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 410, in open
response = meth(req, response)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 523, in http_response
'http', request, response, code, msg, hdrs)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 448, in error
return self._call_chain(*args)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 382, in _call_chain
result = func(*args)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 531, in http_error_default
raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
urllib2.HTTPError: HTTP Error 400: Bad Request
In example search params they replace spaces with +
sign:
'term': term.replace(' ', '+'),
'location': location.replace(' ', '+'),
In your gist you have hardcoded location as: 'New York, NY'
, changing spaces to +
should help.
Yelp API has limitations. You can get maximum 20 items for each request. Also, quantity of accessible items is 1000. I can't find information about limitations on the documentation. But, I found info about these limitations on the support group. Based on this you can get maximum 1000 items for 50 requests([1,..., 20], [21,..., 40], ... [981,..., 1000] )
Regarding your snippet you are trying get more than 1000 items. I found out that your limit and offset parameters. limit = 3, offset = 1000
. It means you want to get items from 1001 to 1003. And it contradicts the documentation.
HTTP Error 400: Bad Request
means you get response
{
error: {
field: "offset",
description: "The maximum number of accessible results is 1000",
id: "INVALID_PARAMETER",
text: "One or more parameters are invalid in request"
}
}
If you open your last signed_url on the browser you will see response like above. Also, you will see Response Status Code is 400 Bad Request
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With