From 1 November 2026 the API needs a free key. Calls without one work until then. Get a key · what changes
ZH
EnglishУкраїнськаEspañolPortuguêsDeutschFrançaisItalianoPolskiNederlandsSvenskaDanskNorskSuomiČeštinaRomânăMagyarΕλληνικάTürkçeالعربيةעבריתفارسیहिन्दीবাংলাIndonesiaMelayuTiếng Việtไทย日本語한국어中文
登录获取 API 密钥
首页 › API 文档 › 快速入门

快速入门

获取密钥,复制该行,运行它,读取 JSON。

0。获取密钥

创建免费账户,打开 API 密钥 并创建一个。然后将其保存在环境变量中:

bash
export FNA_KEY=fna_live_...

1。搜索

bash
curl -H "Authorization: Bearer $FNA_KEY" "https://freenewsapi.ai/v1/search?q=climate+summit&size=2"
响应
{
  "took_ms": 41,
  "total": 1284,
  "total_is_lower_bound": false,
  "size": 2,
  "offset": 0,
  "results": [
    {
      "id": "9c1f8a4b2d3e5f6071829304a5b6c7d8",
      "url": "https://example-news.com/world/climate-summit-opens",
      "title": "Climate summit opens with a call for binding targets",
      "description": "Delegates from 190 countries gathered on Monday ...",
      "published_at": "2026-08-17T09:12:00Z",
      "crawled_at": "2026-08-17T10:48:31Z",
      "host": "example-news.com",
      "sitename": "Example News",
      "country": "GB",
      "country_source": "cctld",
      "lang": "en",
      "tld": "com"
    }
  ]
}

响应中有三个字段值得立即关注。total 表示匹配的文章数量,而非返回的数量——为提升速度,该数量上限为 10,000,total_is_lower_bound 会告知你是否触达上限。country_source 说明国家是如何确定的,这很重要,因为任何新闻数据集中约有三分之一的国家值是推断得出的,而非事实。crawled_at 是真实的时间戳:发布机构可以回溯 published_at 的日期,但抓取时间由管道分配。

2。缩小范围

筛选条件在参数之间为“与”(AND)关系,在同一参数内为“或”(OR)关系。因此,country=DE,AT&lang=de 表示“来自德国或奥地利的德语文章”。以下查询要求获取来自乌克兰的乌克兰语文章,按最新优先排序:

bash
curl -H "Authorization: Bearer $FNA_KEY" "https://freenewsapi.ai/v1/search?country=UA&lang=uk&date=today&sort=date&size=10"

3。获取全文

为保持响应体积较小,搜索结果默认不包含文章正文。在您选定真正需要的文章后,请显式请求获取正文:

bash
curl -H "Authorization: Bearer $FNA_KEY" "https://freenewsapi.ai/v1/search?q=inflation&full_text=true&size=5"

全文长度约为每篇文章 2,000–4,000 个字符。20 篇包含 full_text=true 的文章,对于语言模型而言大约需要 40,000 个 token。请先筛选,再获取正文。详见 token 成本。

4。计数而非列出

通常,更有价值的问题不是“有哪些文章”,而是“这里是否有任何内容,以及它们在哪里”。通过极低的成本(约 200 个 token,而获取一页结果需数千个 token)统计答案数量,使其成为 AI 代理判断是否值得执行搜索时的首选调用:

bash
curl -H "Authorization: Bearer $FNA_KEY" "https://freenewsapi.ai/v1/stats?q=earthquake&date=7d"

响应结果会按国家、语言、域名后缀、发布机构和日期统计数量,这些统计基于所有匹配的文章集合,而非当前页。

Python 示例

python
import os, requests
HEADERS = {"Authorization": "Bearer " + os.environ["FNA_KEY"]}

r = requests.get("https://freenewsapi.ai/v1/search", headers=HEADERS, params={
    "q": "semiconductor export controls",
    "date": "7d",
    "lang": "en",
    "size": 20,
    "sort": "relevance",
})
for a in r.json()["results"]:
    print(a["published_at"], a["host"], a["title"])

JavaScript 示例

javascript
const url = new URL("https://freenewsapi.ai/v1/search");
url.search = new URLSearchParams({ q: "central bank", date: "24h", size: "20" });

const { results } = await (await fetch(url, { headers: { Authorization: `Bearer ${FNA_KEY}` } })).json();
results.forEach(a => console.log(a.published_at, a.host, a.title));

下一页