Quickstart
รับคีย์ คัดลอกบรรทัด รันคำสั่ง แล้วอ่าน JSON
0. รับคีย์
สร้างบัญชีฟรี, เปิด คีย์ API และสร้างหนึ่งคีย์ จากนั้นเก็บคีย์ไว้ในตัวแปรสภาพแวดล้อม:
export FNA_KEY=fna_live_...1. ค้นหา
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 จึงหมายถึง "บทความภาษาเยอรมันจากเยอรมนีหรือออสเตรีย" นี่คือตัวอย่างการขอรับบทความภาษายูเครนจากยูเครนในวันนี้ เรียงจากใหม่ไปเก่า:
curl -H "Authorization: Bearer $FNA_KEY" "https://freenewsapi.ai/v1/search?country=UA&lang=uk&date=today&sort=date&size=10"3. รับเนื้อหาบทความฉบับเต็ม
ผลการค้นหาจะไม่แสดงเนื้อหาบทความโดยอัตโนมัติเพื่อลดขนาดข้อมูลตอบกลับ ให้ระบุชัดเจนเมื่อคุณเลือกบทความที่ต้องการแล้ว:
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 โทเค็น เมื่อเทียบกับหลายพันโทเค็นสำหรับผลลัพธ์หนึ่งหน้า ซึ่งทำให้เป็นขั้นตอนแรกที่เหมาะสมสำหรับเอเจนต์ที่จะตัดสินใจว่าการค้นหาคุ้มค่าที่จะดำเนินการหรือไม่:
curl -H "Authorization: Bearer $FNA_KEY" "https://freenewsapi.ai/v1/stats?q=earthquake&date=7d"การตอบกลับให้จำนวนตามประเทศ ภาษา โดเมน ผู้จัดพิมพ์ และวัน โดยคำนวณจากชุดข้อมูลที่ตรงกันทั้งหมด ไม่ใช่เฉพาะหน้าปัจจุบัน
ในภาษา 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
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));