Search code examples
jsonpython-2.7zomato-api

How do I make a cURL request to zomato api?


I just began exploring APIs. This is my code so far. For locu API this works but for Zomato they use curl header request which I don't know how to use. Could someone guide or show me how?

import json
import urllib2

Key = 'Zomato_key'

url = 'https://developers.zomato.com/api/v2.1/categories'

json_obj = urllib2.urlopen(url)

data = json.load(json_obj)

print data

Solution

  • By looking at the Zomato API docs, it seems that the parameter user-key has to be set in the header.

    The following works:

    import json
    import urllib2
    
    Key = '<YOUR_ZOMATO_API_KEY>'
    url = "https://developers.zomato.com/api/v2.1/categories"
    
    request = urllib2.Request(url, headers={"user-key" : Key})
    json_obj = urllib2.urlopen(request)
    data = json.load(json_obj)
    
    print data
    

    If you want a more elegant way to query APIs, have a look at requests module (you can install using pip install requests).

    I suggest you the following:

    import json
    import requests
    
    Key = <YOUR_ZOMATO_API_KEY>'
    url = "https://developers.zomato.com/api/v2.1/categories"
    
    if __name__ == '__main__':
        r = requests.get(url, headers={'user-key': Key})
        if r.ok:
            data = r.json()
            print data
    

    NB: I suggest you remove your Key from StackOverflow if you care about keeping it to yourself.