Notion APIでできること【データの取得方法解説】

Notion APIってなにができるの?

一般のユーザができることはないかもしれないです。
開発者向けの機能で、NotionのデータをNotion以外のサービスやアプリケーションで利用できます。

イメージつかないと思いますので、サクッとデータを取得してみましょうか。

ターミナルからさくっとNotionのデータを取得してみる

最も早くて簡単な方法でNotionAPIを使用してデータを取得してみましょう。
今回は、ターミナルを使用してデータ取得、確認してみます。

準備

まずはインテグレーションを作成しましょう。
公式のチュートリアルを見ながら作成してみてください。

ターミナルからAPI接続して、取得したデータを確認する

インテグレーションで作成したシークレットトークンと、ページIDデータベースIDなど分かればOKです。
確認方法はコチラ。

雛形

https://api.notion.com/のあとにバージョンを指定(v1)。
次に、要素の種類(pages,database,blocks)を指定。
さらにその後にアクセスする要素のIDを指定します。

データベース

ターミナルに下記のコードを貼り付けてEnter。

curl 'https://api.notion.com/v1/databases/データベースID' \
-H 'Notion-Version: 2022-06-28' \
-H 'Authorization: Bearer '"シークレットトークン"'' 

ページ

ターミナルに下記のコードを貼り付けてEnter。

curl 'https://api.notion.com/v1/pages/ページID' \
-H 'Notion-Version: 2022-06-28' \
-H 'Authorization: Bearer '"シークレットトークン"'' \

実行結果

ターミナルでは整形されていないですが、このようなデータが取得できます(データベース取得例)。

{
  "object": "database",
  "id": "76a9458e-0478-41ec-a55c-e5879ca62948",
  "cover": null,
  "icon": null,
  "created_time": "2023-05-06T02:24:00.000Z",
  "created_by": {
    "object": "user",
    "id": "4d882475-cedf-424a-b35c-219a28cd2ea3"
  },
  "last_edited_by": {
    "object": "user",
    "id": "4d882475-cedf-424a-b35c-219a28cd2ea3"
  },
  "last_edited_time": "2023-05-20T06:55:00.000Z",
  "title": [
    {
      "type": "text",
      "text": { "content": "Notion API test", "link": null },
      "annotations": {
        "bold": false,
        "italic": false,
        "strikethrough": false,
        "underline": false,
        "code": false,
        "color": "default"
      },
      "plain_text": "Notion API test",
      "href": null
    }
  ],
  "description": [],
  "is_inline": false,
  "properties": {
    "Date": {
      "id": "%3DLF%5B",
      "name": "Date",
      "type": "created_time",
      "created_time": {}
    },
    "Slug": {
      "id": "Dhnu",
      "name": "Slug",
      "type": "rich_text",
      "rich_text": {}
    },
    "Tags": {
      "id": "Kcvw",
      "name": "Tags",
      "type": "multi_select",
      "multi_select": {
        "options": [
          {
            "id": "df8555db-ca24-4919-b14d-b6e516f12d40",
            "name": "nextjs",
            "color": "yellow"
          },
          {
            "id": "7d343a19-0e27-498c-9659-0b24201ab759",
            "name": "react",
            "color": "red"
          },
          {
            "id": "9d80bcc6-4fdf-4952-b6bb-c8afd8fc228c",
            "name": "Notion",
            "color": "gray"
          }
        ]
      }
    },
    "Published": {
      "id": "O%5EM%3E",
      "name": "Published",
      "type": "checkbox",
      "checkbox": {}
    },
    "thumb": { "id": "gd%5BW", "name": "thumb", "type": "files", "files": {} },
    "Description": {
      "id": "ms%3D~",
      "name": "Description",
      "type": "rich_text",
      "rich_text": {}
    },
    "Name": { "id": "title", "name": "Name", "type": "title", "title": {} }
  },
  "parent": { "type": "workspace", "workspace": true },
  "url": "https://www.notion.so/76a9458e047841eca55ce5879ca62948",
  "public_url": null,
  "archived": false
}

上記はデータベースのデータを取得した例です。
タイトルとかプロパティとかチェックボックスのデータが取得できました。
本文は取得できていません。本文を取得したい場合はページIDになります。
少しわかりにくいですが、例えばブログ一覧のページはデータベース、記事詳細ページはページといったイメージです。
ここで取得したデータを外部のサービスやアプリケーションで使用できるようになります。

もちろんNotionをヘッドレスCMSとして使用することも可能です。

公式のリファレンスはこちらです。

最後に

今回は手軽な方法でNotionAPIを使用してデータを取得してみました。

この記事があなたの参考や助けになっていれば幸いです。
最後までありがとうございました。