Notionのデータベースを「情報の貯蔵庫」として活用するための、API連携の基本手順をまとめます。
1. 事前準備:Notion側の設定
APIを利用するためには、Notionのワークスペース側で「通信の許可」を出す必要があります。
① インテグレーション(APIキー)の取得
-
Notion My Integrations にアクセスします。
-
「新しいインテグレーション」を作成します。
-
発行された 「内部インテグレーションシークレット(アクセストークン)」 をコピーして保存します。
② データベースIDの確認
-
使用するデータベースをフルページで開きます。
-
ブラウザのURLを確認します。
-
https://www.notion.so/【32桁の英数字】?v=... -
この
32桁の英数字が データベースID です。
-
③ データベースへのアクセス許可(重要)
これを忘れるとAPIが接続できません。
-
対象のデータベース画面右上の「…」をクリックします。
-
一番下の「接続先」をクリックします。
-
先ほど作成したインテグレーション名を選択して追加します。
2. Pythonによるテスト実装
最小構成でデータを1件追加するプログラムです。
必要なライブラリ
pip install requests
フルコード
import requests
import json
# 設定情報
NOTION_TOKEN = 'あなたのアクセストークン'
DATABASE_ID = 'あなたのデータベースID'
headers = {
"Authorization": "Bearer " + NOTION_TOKEN,
"Content-Type": "application/json",
"Notion-Version": "2022-06-28"
}
def add_to_notion(text_content):
url = "https://api.notion.com/v1/pages"
# 送信データの構造
# ※「名前」というカラム(タイトル型)に保存する設定です
data = {
"parent": { "database_id": DATABASE_ID },
"properties": {
"名前": {
"title": [
{
"text": {
"content": text_content
}
}
]
}
}
}
response = requests.post(url, headers=headers, data=json.dumps(data))
if response.status_code == 200:
print("✅ 保存成功")
else:
print(f"❌ 失敗: {response.status_code}")
print(response.text)
if __name__ == "__main__":
add_to_notion("備忘録テスト投稿")
3. つまずきやすいポイント
-
404エラーが出る場合:
-
データベースIDが間違っているか、手順1-③の「接続先」の追加が漏れています。
-
-
400エラーが出る場合:
-
プロパティ名(コード内の
"名前")が実際のデータベースのカラム名と一致しているか確認してください。 -
また、NotionのAPIバージョン(
Notion-Version)が古い、または形式が違う可能性があります。
-
4. 今後の応用
この仕組みができると、以下のような自動化が可能になります。
-
Webスクレイピング: 特定のサイトから情報を抜き出し、自動でNotionにリスト化。
-
ログ保存: 自作ツールの実行結果やエラーログをNotionで管理。
-
SNS連携: 特定のハッシュタグが付いた投稿を収集。
一度基盤を作れば、data 内の properties を増やすだけで複雑なデータ管理も容易になります。



コメント