NewsAPI × Python でニュースを取得しよう!APIキーの取得から使い方・無料プランの注意点まで解説!

目次
ウマたん当サイト【スタビジ】の本記事では、世界中のニュースを取得できる「NewsAPI」を、Pythonで使う方法を分かりやすく解説していきます!APIキーの取得から、実際のコード、無料プランの注意点まで見ていきましょう!
こんにちは!ウマたんです!
毎朝、気になる分野のニュースを、いろんなサイトを回ってチェックする。
これ、地味に時間がかかりますよね。
「機械学習に関する、話題のニュースだけを自動で集められたらいいのに……」
そんなときに便利なのが、世界中のニュース記事をプログラムから取得できる「NewsAPI」です。
実は、とてもかんたんに使えるんです!
APIって聞くと難しそう……。プログラミング初心者でも使えるの?
取得したニュースを、要約したり分析したりにも使ってみたい!
本記事では、次の5つを順番に解説していきます。
以下のYouTube動画でも解説していますので、あわせてチェックしてみてください!
NewsAPIとは?
NewsAPIとは、世界中のニュースサイトやブログの記事を、キーワードなどで検索して取得できるAPIです。
公式のドキュメントによると、15万を超えるニュースサイトやブログの記事を検索できます(2026年10月時点)。
そもそもAPIとは?
API(Application Programming Interface)とは、あるサービスの機能やデータを、外のプログラムから使うための窓口のことです。
レストランにたとえると、APIは「注文の窓口」のようなもの。
お客さん(あなたのプログラム)が「機械学習のニュースを5件ください」と注文すると、厨房(NewsAPIのサーバー)がニュースのデータを用意して、返してくれるイメージです。
実は、ふだん使っているサービスの多くが、APIを用意しています。
Google のいろんなサービスや Notion、SNS など、APIを組み合わせると、とても面白いプログラムが作れるんです!
Pythonでいろいろなサービスの API を使う方法は、以下の記事でも解説しています。
【5分で分かる】Pythonを使って様々なサービスのAPIを利用してみよう!当サイト【スタビジ】の本記事では、Pythonを使ってSlackやGoogleのAPIを利用していきます!APIを利用することで非常に様々なことができるので是非試してみましょう!APIを使えるようになると幅が広がりますよ!
NewsAPIの2つの主なエンドポイント
NewsAPI には、データを取りに行く先(エンドポイント)がいくつかあります。
よく使うのは、次の2つです。
| エンドポイント | できること | 主なパラメータ |
|---|---|---|
/v2/everything | キーワードで、記事全体から検索する | q(キーワード)、language、sortBy、from・to(期間) |
/v2/top-headlines | 今のトップニュース(見出し)を取得する | country(国)、category(分野)、sources(ニュースサイト) |
今回は、キーワードで記事を探せる /v2/everything を中心に使っていきます。
APIキーを取得する
NewsAPI を使うには、まず「APIキー」が必要です。
APIキーとは、「この注文は誰からのものか」をNewsAPIに伝えるための、あなた専用の合言葉のようなものです。
APIキーはコードに直接書かない
ここでとても大事なのが、APIキーをコードに直接書かないことです。
コードにキーを書いたまま GitHub などに公開してしまうと、他人にキーを使われてしまうおそれがあります。
そこで、キーは「環境変数」や、ツールの「シークレット」機能に入れておき、コードからはそこを読みに行くようにしましょう。
自分のパソコン(Mac やLinux)なら、ターミナルで次のように設定できます。
export NEWS_API_KEY="ここにあなたのAPIキー"
この行はターミナルで打つだけにして、コードのファイルには書かないのがポイントです。
Google Colab の場合は、シークレットに登録したキーを、次のように読み込めます。
from google.colab import userdata
NEWS_API_KEY = userdata.get("NEWS_API_KEY")
こうしておくと、ノートブックを他の人に共有しても、キーそのものは見えないので安心です。
Google Colab の使い方は、以下の記事で解説しています。
Google Colaboratoryのメリットと使い方!GPU環境でPython回すならこれだ!当サイト【スタビジ】の本記事では、Googleが無償で提供する機械学習のプラットフォーム「Google Colaboratory」をメリット・デメリット・使い方について見ていきます!実際にPythonを実行していきGPUの威力を見ていきます。
Pythonでニュースを取得する
それでは、実際にコードを書いて、ニュースを取得していきましょう!
使うのは requests ライブラリ
Python からAPIにリクエストを送るには、「requests」というライブラリを使うのが定番です。
Google Colab には最初から入っています。自分のパソコンで使う場合は、次のコマンドでインストールしておきましょう。
pip install requests
ニュースを5件取得するコード
今回は、「machine learning(機械学習)」に関する英語のニュースを、人気順で5件取得してみます。
import os
import requests
# APIキーは環境変数から読む(Colabなら userdata.get("NEWS_API_KEY"))
NEWS_API_KEY = os.environ["NEWS_API_KEY"]
# リクエストを送る先(キーワードで記事を探すエンドポイント)
NEWS_API_URL = "https://newsapi.org/v2/everything"
params = {
"q": "machine learning", # 検索するキーワード
"sortBy": "popularity", # 人気順に並べる
"language": "en", # 英語の記事
"pageSize": 5, # 5件だけ取得する
}
# APIキーは「X-Api-Key」というヘッダーで渡す
headers = {"X-Api-Key": NEWS_API_KEY}
response = requests.get(NEWS_API_URL, params=params, headers=headers, timeout=10)
data = response.json()
やっていることは、とてもシンプルです。
ちなみに動画では、APIキーを apiKey というパラメータに入れて渡していました。
公式のドキュメントでは、パラメータの apiKey と、ヘッダーの X-Api-Key のどちらで渡してもよいことになっています。
ヘッダーで渡すと、キーがURLの中に入らないので、ログなどにキーが残りにくいというメリットがあります。
よく使うパラメータ
/v2/everything で使える、主なパラメータを表にまとめておきます(2026年10月時点の公式ドキュメントより)。
| パラメータ | 意味 | 値の例 |
|---|---|---|
q | 検索するキーワード(タイトルと本文から探す) | "machine learning"、"AI AND robot" |
searchIn | キーワードを探す場所 | title、description、content |
language | 記事の言語 | en(英語)、fr(フランス語)など |
sortBy | 並べ方 | relevancy(関連度)、popularity(人気)、publishedAt(新しい順。何も指定しないとこれ) |
from・to | 記事の期間 | "2026-10-01" のような日付 |
domains | 特定のサイトだけにしぼる | "techcrunch.com" |
pageSize | 1回で取得する件数 | 最大100(何も指定しないと100) |
page | 何ページ目を取得するか | 2 |
キーワードの q では、AND・OR・NOT を使った検索や、"..." で囲んだ完全一致の検索もできます。
結果を見やすく表示する
取得したデータを、見やすく表示してみましょう。
if data["status"] == "ok":
print("見つかった記事の数:", data["totalResults"])
for article in data["articles"]:
print(article["publishedAt"], article["source"]["name"])
print(article["title"])
print(article["url"])
print("-" * 40)
else:
print("エラー:", data["code"], data["message"])
実行すると、記事ごとに「公開日時・ニュースサイトの名前・タイトル・URL」が表示されます。
URL をクリックすれば、そのニュースの元の記事に飛べますよ!
pandas で表にする
データ分析に使うなら、pandas の表(データフレーム)にしておくと便利です。
import pandas as pd
# 入れ子になった source(id と name)も、列に展開してくれる
df = pd.json_normalize(data["articles"])
df[["publishedAt", "source.name", "title", "url"]]
pd.json_normalize() を使うと、source の中の name が source.name という列になって、すっきりした表にできます。
トップニュースを取得する
キーワードではなく、今のトップニュースを取得したいときは、/v2/top-headlines を使います。
params = {
"country": "us", # アメリカのトップニュース
"category": "technology", # テクノロジーの分野
"pageSize": 5,
}
response = requests.get(
"https://newsapi.org/v2/top-headlines",
params=params,
headers=headers,
timeout=10,
)
data = response.json()
category には、business・entertainment・general・health・science・sports・technology を指定できます。
ただし、ニュースサイトを指定する sources は、country や category と一緒には使えないので注意してくださいね。
返ってくるデータの中身とエラーへの対処
続いて、NewsAPI から返ってくるデータの中身を見ていきましょう!
返ってくるデータの形
NewsAPI からは、次のような形(JSON)でデータが返ってきます。
{
"status": "ok",
"totalResults": 1234,
"articles": [
{
"source": {"id": null, "name": "ニュースサイトの名前"},
"author": "著者",
"title": "記事のタイトル",
"description": "記事の説明",
"url": "記事のURL",
"urlToImage": "画像のURL",
"publishedAt": "公開日時(世界標準時)",
"content": "本文の冒頭(200文字までで切れる)"
}
]
}
(中身の値は説明のための例です)
| 項目 | 中身 |
|---|---|
status | 成功なら ok、失敗なら error |
totalResults | 条件に合う記事の全体の数 |
source | ニュースサイトの情報(id と name) |
author・title・description | 著者、タイトル、説明 |
url・urlToImage | 記事のURL、画像のURL |
publishedAt | 公開日時(世界標準時なので、日本時間は9時間足す) |
content | 本文の冒頭。200文字までで切られている |
ポイントは、content が本文の冒頭の200文字までしか入っていないことです。
記事の全文を読みたいときは、url から元の記事を見に行きましょう。
エラーが返ってきたら
うまくいかないときは、status が error になって、code と message に理由が入って返ってきます。
よくあるエラーは、次のとおりです。
| HTTPのステータス | code の例 | 原因 |
|---|---|---|
| 401 | apiKeyMissing・apiKeyInvalid | APIキーが入っていない、またはまちがっている |
| 400 | parameterInvalid・parametersMissing | パラメータの名前や値がまちがっている、足りない |
| 429 | rateLimited | 短い時間にリクエストを送りすぎた |
message には英語で詳しい理由が書かれているので、まずはそれを読んでみましょう!
NewsAPIを使うときの注意点(無料プランの制限)
NewsAPI は無料で始められますが、無料プランにはいくつか大事な制限があります。
無料プラン(Developer)でできること・できないこと
2026年10月時点の公式サイトでは、無料の「Developer」プランは次のようになっています。
| 項目 | 無料プラン(Developer) |
|---|---|
| 料金 | 0ドル |
| リクエストの回数 | 1日100回まで |
| 記事の新しさ | 24時間遅れ |
| さかのぼれる期間 | 1か月前の記事まで |
| 使ってよい場面 | 開発とテストだけ |
1日100回というのは、リクエストを送った回数のことです。page を変えて何ページも取得すると、その分だけ回数を使ってしまいます。
練習のうちは、pageSize で必要な件数をまとめて取得して、むだなリクエストを減らすのがコツです。取得したデータは、CSV などに保存しておくと、何度もリクエストを送らずにすみますよ。
特に気をつけたいのが、最後の「使ってよい場面」です。
公式のよくある質問では、無料プランは開発とテストのためだけのもので、本番の環境や、社内での利用にも使えないとされています。
サービスとして公開したり、仕事で使ったりする場合は、有料プランが必要です。
ちなみに、2026年10月時点の有料プランは「Business」が月449ドルからと、個人で気軽に払うには少し高めの値段になっています。
記事の著作権にも気をつける
NewsAPI で取得できるのは、それぞれのニュースサイトの記事の情報です。
記事の文章や画像には著作権があるので、取得した記事を勝手に丸ごと転載したり、公開したりしないようにしましょう。
自分で読む、分析に使う、元の記事へのリンクを紹介する、といった使い方を基本にするのが安心です。
APIを組み合わせると、もっと面白くなる
NewsAPI は、ほかのAPIと組み合わせると、さらに面白いことができます。
たとえば、こんな流れのプログラムが作れます。
ニュースを集めて、要約して、発信するところまで、全部自動でできてしまうんです!
なお、仕事や公開するサービスとして動かす場合は、先ほどの無料プランの制限に気をつけてくださいね。
Python で X(旧Twitter)に自動で投稿する方法は、以下の記事で解説しています。
Pythonを使ってX(旧Twitter)のAPI経由で自動投稿する方法当サイト【スタビジ】の本記事では、Pythonを使ったX(旧Twitter)の自動投稿の方法について解説していきます。SNSマーケティングで重要なXの運用をPythonを使って効率化していきましょう!
集めたニュース記事を、トピックモデルで分析してみるのも面白いですよ。
トピックモデルについて解説!ニュース記事をLDA✕Pythonで分析してみよう!当サイト【スタビジ】の本記事では、自然言語処理において古典的に用いられるトピックモデルについて簡単に解説していきます。トピックモデルの中でもよく用いられるLDAをPythonで動かしてニュース記事をトピック分類していきます。
NewsAPI × Python のまとめ
最後に、今回のポイントをおさらいしましょう!
ウマたん要は、NewsAPI を使えば、たった数行の Python で世界中のニュースを集められるんです!ぜひ自分の興味のあるキーワードで試してみてください!
APIやPythonを使いこなしながら、生成AIやデータサイエンスを体系的に学びたいのであれば、当メディアが運営するスクール「スタアカ」がオススメです!
読んだ内容を、手を動かして身につける
データサイエンス・AIを、動画と課題で体系的に学べるオンラインスクール。
スタアカを見てみる





