notion-api-worker

🍭 **Easy to use** – Receive Notion data with a single GET request

Usage no npm install needed!

<script type="module">
  import notionApiWorker from 'https://cdn.skypack.dev/notion-api-worker';
</script>

README

Notion API Worker API Version

A serverless wrapper for the private Notion API. It provides fast and easy access to your Notion content. Ideal to make Notion your CMS.

We provide a hosted version of this project on https://notion-api.splitbee.io. You can also host it yourself. Cloudflare offers a generous free plan with up to 100,000 request per day.

Use with caution. This is based on the private Notion API. We can not gurantee it will stay stable.

Features

🍭 Easy to use – Receive Notion data with a single GET request

🗄 Table Access – Get structured data from tables & databases

Blazing Fast – Built-in SWR caching for instant results

🛫 CORS Friendly – Access your data where you need it

Use Cases

  • Use it as data-source for blogs and documentation. Create a table with pages and additional metadata. Query the /table endpoints everytime you want to render a list of all pages.

  • Get data of specific pages, which can be rendered with react-notion

Endpoints

Load page data

/v1/page/<PAGE_ID>

Example (Source Notion Page)

https://notion-api.splitbee.io/v1/page/2e22de6b770e4166be301490f6ffd420

Returns all block data for a given page. For example, you can render this data with react-notion.

Load data from table

/v1/table/<PAGE_ID>

Example (Source Notion Page)

https://notion-api.splitbee.io/v1/table/20720198ca7a4e1b92af0a007d3b45a4

Authentication for private pages

All public pages can be accessed without authorization. If you want to fetch private pages there are two options.

  • The recommended way is to host your own worker with the NOTION_TOKEN environment variable set. You can find more information in the Cloudflare Workers documentation.
  • Alternatively you can set the Authorization: Bearer <NOTION_TOKEN> header to authorize your requests.

Receiving the token

To obtain your token, login to Notion and open your DevTools and find your cookies. There should be a cookie called token_v2, which is used for the authorization.

Credits