本文へ移動
カテゴリ

Webマーケ

Webマーケの記事すべてSEOサイト運営データマネジメントビジネス・マーケ概論広告

インタビュー

インタビューの記事すべて

おすすめサービス

おすすめサービスの記事すべて

おすすめ勉強法

おすすめ勉強法の記事すべて

おすすめ書籍

おすすめ書籍の記事すべて

データサイエンス

データサイエンスの記事すべてデータ解析品質工学多変量解析機械学習統計学

プログラミング

プログラミングの記事すべてPythonRSQLプログラミングスクール

スタビジについて

記事一覧運営者情報お問い合わせ

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

目次
ウマたんウマたん

当サイト【スタビジ】の本記事では、世界中のニュースを取得できる「NewsAPI」を、Pythonで使う方法を分かりやすく解説していきます!APIキーの取得から、実際のコード、無料プランの注意点まで見ていきましょう!

こんにちは!ウマたんです!

毎朝、気になる分野のニュースを、いろんなサイトを回ってチェックする。

これ、地味に時間がかかりますよね。

「機械学習に関する、話題のニュースだけを自動で集められたらいいのに……」

そんなときに便利なのが、世界中のニュース記事をプログラムから取得できる「NewsAPI」です。

実は、とてもかんたんに使えるんです!

読者

APIって聞くと難しそう……。プログラミング初心者でも使えるの?

読者

取得したニュースを、要約したり分析したりにも使ってみたい!

本記事では、次の5つを順番に解説していきます。

以下のYouTube動画でも解説していますので、あわせてチェックしてみてください!

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"
pageSize1回で取得する件数最大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 の例原因
401apiKeyMissing・apiKeyInvalidAPIキーが入っていない、またはまちがっている
400parameterInvalid・parametersMissingパラメータの名前や値がまちがっている、足りない
429rateLimited短い時間にリクエストを送りすぎた

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を、動画と課題で体系的に学べるオンラインスクール。

スタアカを見てみる