From 1 November 2026 the API needs a free key. Calls without one work until then. Get a key · what changes
UK
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 символів на статтю. Двадцять статей із full_text=true — це близько 40,000 токенів для мовної моделі. Спочатку виберіть, потім отримуйте повний текст. Див. витрати на токени.

4. Рахуйте замість переліку

Часто корисним питанням є не "які є статті", а "чи є тут щось взагалі і де воно". Підрахунок дає відповідь за частку вартості — приблизно 200 токенів проти кількох тисяч для сторінки результатів — що робить його правильним першим кроком для агента, який вирішує, чи варто виконувати пошук:

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));

Далі