You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用UK政府ContractsFinder API返回404错误,求技术排查帮助

问题:调用英国政府ContractsFinder API返回404错误

我尝试通过英国政府ContractsFinder API获取合同数据,编写了如下Python代码,但请求返回404错误。请问我的API调用存在什么问题?这并非我的专业领域,可能存在低级错误。

import requests

base_url = "https://www.contractsfinder.service.gov.uk/api/rest/2/search_notices"
keyword = "analysis"


params = {
 "searchCriteria": {
"types": [
  "Contract"
],

"keyword": "Analysis",
"queryString": None,
"regions": "Wales,South East",
"publishedFrom": "01/06/2023",
"publishedTo": None,
#"deadlineFrom": null,
#"deadlineTo": null,
#"approachMarketFrom": null,
#"approachMarketTo": null,
#"awardedFrom": null,
#"awardedTo": null,
#"isSubcontract": null,
"suitableForSme": True,
#"suitableForVco": false,
#"awardedToSme": true,
#"awardedToVcse": false,
#"cpvCodes": null
  },
  "size": 1000
}

response = requests.get(base_url, params=params)

if response.status_code == 200:
    data = response.json()
    # Process the retrieved data as needed
    print(data)
else:
    print("Request failed with status code:", response.status_code)

解决方法

你的代码存在两个关键问题,导致了404错误:

  • 请求方式错误:ContractsFinder的搜索API要求使用POST请求,而非GET。GET无法正确传递嵌套的searchCriteria参数结构,服务器无法解析你的请求,因此返回404。
  • 参数格式不匹配:
    1. 日期格式需改为YYYY-MM-DD,而非DD/MM/YYYY,比如"publishedFrom": "2023-06-01"
    2. 布尔值要传小写字符串"true"/"false",不能用Python原生的True/False,因为API接收JSON格式的字符串值
    3. 无需保留None值,直接移除无效参数即可

修改后的可运行代码:

import requests

base_url = "https://www.contractsfinder.service.gov.uk/api/rest/2/search_notices"

payload = {
    "searchCriteria": {
        "types": ["Contract"],
        "keyword": "Analysis",
        "regions": "Wales,South East",
        "publishedFrom": "2023-06-01",
        "suitableForSme": "true"
    },
    "size": 1000
}

# 使用POST请求传递JSON payload
response = requests.post(base_url, json=payload)

if response.status_code == 200:
    data = response.json()
    print(data)
else:
    print("请求失败,状态码:", response.status_code)
    # 打印响应内容查看具体错误信息
    print(response.text)

额外注意事项:

  • 当前v2版本的搜索端点/api/rest/2/search_notices是正确的,无需修改
  • 若添加更多筛选条件(如publishedTo),同样要遵循YYYY-MM-DD格式
  • 遇到错误时打印response.text,能获取服务器返回的具体错误描述,帮助快速排查问题

内容的提问来源于stack exchange,提问作者A Rob4

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 04:00:38