Reputation: 773
After opening the enter link description here I can see an API gets called which returns some data in JSON format. Attached you may see as well.
I am trying to call this API using my python script as follows.
payload={
"sort" : "tendersTotal.desc" ,
"filter" : {
"keyword" : {
"searchedText" : "" ,
"searchedFields" : []
} ,
"tenderLocationsOfActivity" : [] ,
"grantLocationsOfActivity" : [] ,
"grantSectorsOfActivity" : [] ,
"tenderSectorsOfActivity" : [] ,
"name" : "" ,
"types" : [] ,
"numberOfEmployees" : [] ,
"legalResidences" : []
} ,
"pageSize" : 1 ,
"pageNr" : 1
}
headers = {
'Content-Type' : 'application/json;charset=UTF-8'
}
r = requests.post("https://www.developmentaid.org/api/frontend/donors/search" , data=payload, headers=headers)
print(r.json())
but unfortunately, it returns me this message instead of the real data.
{"message":"Donor Search Request cannot be validated.","errors":{"pageNr":["The page nr field is required."],"pageSize":["The page size field is required."],"filter":["The filter field must be present."]}}
on the other hand, when I sent the same request using postman it returns me data. here is how I sent request using the postman.
my question is what changes do I need to bring in my python code so that the API calls correctly and returns me the data which I wish to receive.
Upvotes: 0
Views: 208
Reputation: 28565
Try using the json
parameter instead of data
:
r = requests.post("https://www.developmentaid.org/api/frontend/donors/search" , json=payload, headers=headers)
Output:
print(r.json())
{'data': {'total': 11573, 'meta': {'page_title': 'Search for donors — ', 'page_description': 'Search for donors and filter by legal residence, organization type, tender sectors of activity, tender countries of activity, grant sectors of activity and grant countries of activity.'}, 'items': [{'id': 118363, 'name': 'World Bank (USA)', 'shortName': 'WB', 'description': "<p><strong>WB - World Bank</strong> - is an international financial institution that provides loans to developing countries for capital programs. The World Bank's official goal is the reduction of poverty.</p><p>\xa0</p><p>\xa0</p>", 'avatar': 'https://www.developmentaid.org/files/organizationLogos/world-bank-118363.jpg', 'types': 'Financial Institution', 'legalResidence': 'USA', 'activeMember': False, 'slug': 'wb', 'jobsTotal': 1503, 'tenders_total': 117040, 'grants_total': 132, 'countryProgrammingTotal': 172, 'contractorsTotal': 28915}]}}
Upvotes: 1