
Notion API
Notion API
Notion API lets external apps read and write pages and databases — used for automation, internal tools, and dashboard integrations.
Official JS SDK is fully typed down to property level
Average rate limit ~3 req/s — bulk syncs hit it easily
Create an internal integration at notion.so/my-integrations and copy its secret token. In Notion, share the target page or database with the integration. Then call the API with Authorization: Bearer <token> and a Notion-Version header.
Uptime · 30-day window
About this API
Notion API turns Notion into a programmable workspace: read and write pages, query and filter databases, manipulate block trees. The most common indie use case is treating Notion as a headless CMS — store blog posts, changelogs, or knowledge base entries in a database, and have your frontend pull and render via API.
Authentication comes in two flavors. Internal integrations are zero-friction for personal use — generate a token and go, no OAuth dance. Public integrations follow standard OAuth and are suitable for app-marketplace distribution. Either way, the integration must be explicitly shared with the target page or database — that's Notion's permission model.
The block model is the heart of Notion's data shape: every page is a container of blocks, and blocks can be paragraphs, headings, lists, code, child databases, and so on. Reading a page usually means fetching its metadata first, then paginating through its block tree. Rate limit averages ~3 req/s, so bulk syncs need careful pacing. A handful of property types (rollups, formulas, relations) are read-only via API; writes go through upstream fields or the UI.
What you can build
- 1Use Notion as a headless CMS for a blog or marketing site
- 2Sync data from external systems into Notion databases
- 3Build cross-tool automations (e.g. Linear issue → Notion entry)
- 4Generate reports or PDFs from Notion content
- 5Power read-only dashboards or public pages
Strengths & limitations
Strengths
- Official JS SDK is fully typed down to property level
- Internal integrations are zero-friction — no OAuth redirect needed
- Block model is expressive enough for rich text and nested structures
- Mature community middleware (notion-to-md, etc.)
Limitations
- Average rate limit ~3 req/s — bulk syncs hit it easily
- Some property types are read-only (rollup, formula)
- Page size defaults to 100; cross-page assembly is fiddly
Example request
curl https://notion.com/<endpoint> \
-H "Authorization: Bearer $ACCESS_TOKEN"Getting started
Create an internal integration at notion.so/my-integrations and copy its secret token. In Notion, share the target page or database with the integration. Then call the API with Authorization: Bearer <token> and a Notion-Version header.
FAQ
Is the API paid?+
The API itself is free, but the target workspace must be on a paid Notion plan to unlock certain features like fine-grained sharing.
Why am I getting "page not found"?+
Most often the integration is not shared with that page or database. Notion permissions are granted at the integration level.
Can I modify formula fields?+
No — formula, rollup, created_by, and last_edited_by are derived/system properties and read-only via API.
How many database rows can I fetch at once?+
Default page_size is 100, max 100. Use next_cursor to paginate.
Technical details
- Auth type
- oauth
- Pricing
- freemium
- Protocols
- REST
- SDKs
- javascript, typescript, python
- Response time
- 709 ms
- Last health check
- 5/12/2026, 7:37:58 AM
Endpoints
Parsed from the OpenAPI spec. Showing 12 of 13 non-deprecated endpoints.
/v1/blocks/{id}BlocksDelete a block
/v1/blocks/{id}BlocksRetrieve a block
/v1/blocks/{id}BlocksUpdate a block
/v1/blocks/{id}/childrenBlocksRetrieve block children
/v1/blocks/{id}/childrenBlocksAppend block children
/v1/commentsCommentsRetrieve comments
/v1/databases/{id}DatabasesRetrieve a database
/v1/databases/{id}DatabasesUpdate a database
/v1/databases/{id}/queryDatabasesQuery a database
/v1/pages/{id}PagesRetrieve a Page
/v1/pages/{id}PagesUpdate Page properties
/v1/pages/{page_id}/properties/{property_id}PagesRetrieve a Page Property Item
1 more endpoints not shown. See the OpenAPI spec for the full list.
Alternatives to consider
Different providers solving similar problems. Picked by category, auth, pricing, and tag overlap.
Slack Web API lets apps read and post messages, manage channels, and upload files — the foundation for Slack bots and integrations.
GitHub REST API v3 — programmatic access to repos, issues, pull requests, Actions, Packages, and every other GitHub.com resource.