🌐
NewsAPIを使って最新ニュースを取得する
はじめに
NewsAPIは、世界中のニュース記事を検索・取得できるWeb APIです。特定のトピックやキーワード、ニュースソースを指定して、リアルタイムまたは過去の記事を取得することができます。
主な特徴
・ 過去5年間に150,000以上のニュースソースやブログで発表された記事を検索可能
・ 記事タイトル、本文、公開日時、URLなどを取得可能
・ キーワード、言語、日付範囲などのフィルタリングが可能
料金プラン
2024年12月現在、下記の料金プランがあります。
最新の料金プランは 公式サイトの料金ページ を確認してください。
プラン名 | 料金 | 主な機能 |
---|---|---|
Developer | 無料 | - 開発およびテスト目的のみ - 記事の取得に24時間の遅延 - 最大1ヶ月前までの記事検索 - 1日あたり100リクエストまで |
Business | 月額 $449 | - 商用プロジェクト向け - リアルタイムで新しい記事を取得 - 最大5年前までの記事検索 - 月間250,000リクエストまで - 追加リクエストは1リクエストあたり$0.0018 |
Advanced | 月額 $1,749 | - 大規模プロジェクト向け - 上記Businessプランの全機能 - 月間2,000,000リクエストまで - 追加リクエストは1リクエストあたり$0.0009 |
Enterprise | 要問い合わせ | - プレミアムデータやカスタムソリューションが必要な企業向け - 無制限のリクエスト - カスタムSLAと専用サポート |
APIキーの取得
公式サイトで Get API Key
をクリックしてアカウントを登録し、APIキーを取得します。
エンドポイントの種類
NewsAPIには、2つの主要なエンドポイントがあります。
-
/v2/everything
全てのニュースからキーワードや日時などの任意の条件で検索するパラメータ 説明 q
キーワードを指定して検索(AND / OR / NOTのキーワード使用可) sources
ニュースソースを指定して検索、カンマ区切りで複数指定可 domains
ドメインを指定して検索、カンマ区切りで複数指定可 excludeDomains
除外するドメインを指定して検索 from
指定された日時以降の記事を検索(ISO 8601形式) to
指定された日時以前の記事を検索(ISO 8601形式) language
記事の言語を指定して検索(使用可能なオプション: ar
、de
、en
、es
、fr
、he
、it
、nl
、no
、pt
、ru
、sv
、ud
、zh
sortBy
記事のソート順 relevancy
(関連性順)、popularity
(人気順)、publishedAt
(発行日時順)pageSize
1リクエストで取得する記事数(最大100) page
ページ番号( pageSize
件数以上の記事はページ指定して取得) -
/v2/top-headlines
ニュースソースやカテゴリなどを指定して最新のトップニュースを検索するパラメータ 説明 country
トップニュースを取得する国を指定(使用可能なオプション: us
)category
ニュースカテゴリを指定( business
、entertainment
、general
、health
、science
、sports
、technology
)sources
ニュースソースを指定して検索、カンマ区切りで複数指定可 q
キーワードを指定して検索 pageSize
1リクエストで取得する記事数(最大100) page
ページ番号( pageSize
件数以上の記事はページ指定して取得)
Pythonの実行例
PythonでのNewsAPIの実行例です。
import requests
import json
API_KEY = "YOUR_API_KEY" # 取得したAPIキーを設定
BASE_URL = "https://newsapi.org/v2/everything" # NewsAPIのエンドポイント
# パラメータ設定
params = {
"q": "(Google OR Amazon) AND Cloud", # キーワード
"from": "2024-12-01T00:00:00", # 開始日時
"to": "2024-12-10T23:59:59", # 終了日時
"sortBy": "relevancy", # ソート順
"pageSize": 5, # 取得件数
"apiKey": API_KEY
}
# APIリクエスト
response = requests.get(BASE_URL, params=params)
# レスポンスを出力
if response.status_code == 200:
articles = response.json().get("articles", [])
for i, article in enumerate(articles):
print(f"{i + 1}. {article['title']} - {article['source']['name']}")
else:
print(f"Error: {response.status_code} - {response.text}")
実行結果
1. Amazon Is Building a Mega AI Supercomputer With Anthropic - Wired
2. This Website Shows How Much Google’s AI Can Glean From Your Photos - Wired
3. Google Cloud launches Veo AI video generator model on Vertex - VentureBeat
4. Don’t Let the Cyber Monday Deals End Before You Check Out This 40% Off Blink Indoor Security Cameras - Gizmodo.com
5. AWS cuts database prices almost 50% and adds distributed scaling capabilities - VentureBeat
レスポンス内容
リクエストが成功すると下記の様なレスポンスが返ります。
{
"status": "ok",
"totalResults": 2338,
"articles": [
{
"source": {
"id": "wired",
"name": "Wired"
},
"author": "Will Knight",
"title": "Amazon Is Building a Mega AI Supercomputer With Anthropic",
"description": "At its Re:Invent conference, Amazon also announced new tools to help customers build generative AI programs, including one that checks whether a chatbot’s outputs are accurate or not.",
"url": "https://www.wired.com/story/amazon-reinvent-anthropic-supercomputer/",
"urlToImage": "https://media.wired.com/photos/674e1ed2ac875ab00d5a6387/191:100/w_1280,c_limit/Matt-Garman-Amazon-RE-Invent-Business-2179195367.jpg",
"publishedAt": "2024-12-03T18:13:31Z",
"content": "Garman told WIRED ahead of the event that Amazon will also introduce a range of tools to help customers wrangle generative AI models that he says are often too expensive, unreliable, and unpredictabl… [+2405 chars]"
},
<中略>
]
}
キー | 説明 |
---|---|
status |
APIリクエストの結果 ok 、error
|
totalResults |
検索クエリに一致する記事の総数 |
articles |
記事の配列 |
source |
記事のソース(発行元) |
- id
|
ソースの識別子ID。ない場合は null
|
- name
|
ソースの名称 |
author |
記事の著者 |
title |
記事のタイトル |
description |
記事の概要 |
url |
記事のURL |
urlToImage |
記事の関連画像のURL |
publishedAt |
記事の公開日時(ISO 8601形式) |
content |
記事の本文(200文字以上は切り捨て) |
Discussion