Reference · Tools
Notion
Manage databases, pages, database pages, blocks, and users in Notion. Supports downloading file properties as binary data.
The Notion node manages databases, pages, database pages, blocks and users, and can pull file properties down as binary data. A typical build is creating a Notion page for each completed project with its documents attached, or syncing a Notion database into another system.
- Node type
- Action (binary)
- Parameters
- 34
- Outputs
- Output, Error
- Credentials
- Notion API
Notion
Manage Notion databases, pages, blocks, and users with binary file download
Overview
The Notion tool provides full integration with the Notion API v1 (2022-06-28). Supports 5 resources: Block (append, getAll), Database (get, getAll, search), DatabasePage (create, get, getAll, update), Page (archive, create, search), User (get, getAll). The DatabasePage getAll operation supports downloading file/image properties as binary data when downloadFiles=true. Uses Bearer token authentication with the Notion-Version header.
Category: Productivity
Tool Name: notion
Version: 1
Appearance: Icon: si-notion | Color: #000000
Node Type
Action (Binary) — handles file/binary data operations
Input / Output
| Direction | Port(s) |
|---|---|
| Input | Input |
| Output | Output, Error |
Credentials
This tool requires Notion API credentials. See the Credentials Guide for setup instructions.
Resources
| Resource | Value |
|---|---|
| Block | block |
| Database | database |
| Database Page | databasePage |
| Page | page |
| User | user |
Operations
Block (block)
| Operation | Value | Description |
|---|---|---|
| Append After | append | Append child blocks to a parent block or page |
| Get Child Blocks | getAll | Get child blocks of a block or page |
Database (database)
| Operation | Value | Description |
|---|---|---|
| Get | get | Get a database by ID |
| Get Many | getAll | List all databases |
| Search | search | Search databases by text |
Database Page (databasePage)
| Operation | Value | Description |
|---|---|---|
| Create | create | Create a page in a database |
| Get | get | Get a page in a database |
| Get Many | getAll | Query pages in a database |
| Update | update | Update a page in a database |
Page (page)
| Operation | Value | Description |
|---|---|---|
| Archive | archive | Archive (soft-delete) a page |
| Create | create | Create a child page under a parent page |
| Search | search | Text search of pages |
User (user)
| Operation | Value | Description |
|---|---|---|
| Get | get | Get a user by ID |
| Get Many | getAll | List all workspace users |
Parameters
Block: Append After
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Block ID | string | Yes | — | The UUID of the block or page. Supports Notion URLs or plain IDs. |
| Block Content | json | No | [] | Array of block objects to append. Each item: { “type”: “paragraph|heading_1|heading_2|heading_3|toggle|to_do|bulleted_list_item|numbered_list_item|image”, “textContent”: ”…”, “checked”: false, “url”: ”…” } |
Block: Get Child Blocks
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Block ID | string | Yes | — | The UUID of the block or page. Supports Notion URLs or plain IDs. |
| Return All | boolean | No | false | Whether to return all results or only up to a given limit. |
| Limit | number | No | 50 | Max number of results to return. (shown when Return All is false) |
| Also Fetch Nested Blocks | boolean | No | false | Whether to recursively fetch children of children blocks. |
| Simplify Output | boolean | No | true | Whether to extract plain text content from block types. |
Database: Get
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
Database ID (databaseId) | string | Yes | — | The UUID of the database. Supports Notion URLs or plain IDs. |
| Simplify | boolean | No | true | Whether to return a simplified version of the response instead of the raw data. |
Database: Get Many
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Simplify | boolean | No | true | Whether to return a simplified version of the response instead of the raw data. |
| Return All | boolean | No | false | Whether to return all results or only up to a given limit. |
| Limit | number | No | 50 | Max number of results to return. (shown when Return All is false) |
Database: Search
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Simplify | boolean | No | true | Whether to return a simplified version of the response instead of the raw data. |
| Return All | boolean | No | false | Whether to return all results or only up to a given limit. |
| Limit | number | No | 50 | Max number of results to return. (shown when Return All is false) |
| Search Text | string | No | — | The text to search for. |
| Sort Direction | options | No | descending | Sort direction for search results. |
Options: ascending, descending | ||||
| Sort Timestamp | options | No | last_edited_time | The timestamp to sort by. |
Options: last_edited_time |
Database Page: Create
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
Database ID (databaseId) | string | Yes | — | The UUID of the parent database to create the page in / query pages from. Supports Notion URLs or plain IDs. |
| Title | string | No | — | Page title. Appears at the top of the page and can be found via Quick Find. |
| Simplify | boolean | No | true | Whether to return a simplified version of the response instead of the raw data. |
| Properties | json | No | [] | Array of property objects for create/update. Each item: { “key”: “PropertyName|propertyType”, “title”: ”…”, “textContent”: ”…”, “numberValue”: 0, “selectValue”: ”…”, “checkboxValue”: false, “urlValue”: ”…”, “emailValue”: ”…”, “phoneValue”: ”…”, “dateStart”: ”…”, “dateEnd”: ”…”, “date”: ”…”, “range”: false, “multiSelectValue”: ”…”, “peopleValue”: [“id”], “relationValue”: [“id”], “statusValue”: ”…”, “fileUrls”: { “fileUrl”: [{ “name”: ”…”, “url”: ”…” }] } } |
| Block Content | json | No | [] | Array of block objects to append. Each item: { “type”: “paragraph|heading_1|heading_2|heading_3|toggle|to_do|bulleted_list_item|numbered_list_item|image”, “textContent”: ”…”, “checked”: false, “url”: ”…” } |
| Icon Type | options | No | emoji | The icon type for the page. |
Options: emoji, file | ||||
| Icon | string | No | — | Emoji character or file URL to use as the page icon. |
Database Page: Get
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
Page ID (pageId) | string | Yes | — | The UUID of the database page. Supports Notion URLs or plain IDs. |
| Simplify | boolean | No | true | Whether to return a simplified version of the response instead of the raw data. |
Database Page: Get Many
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
Database ID (databaseId) | string | Yes | — | The UUID of the parent database to create the page in / query pages from. Supports Notion URLs or plain IDs. |
| Simplify | boolean | No | true | Whether to return a simplified version of the response instead of the raw data. |
| Return All | boolean | No | false | Whether to return all results or only up to a given limit. |
| Limit | number | No | 50 | Max number of results to return. (shown when Return All is false) |
| Download Files | boolean | No | false | Whether to download file/image properties as binary data. File properties are stored as binary with the naming pattern {propertyName}_{fileIndex}. |
| Filter Type | options | No | none | How to filter database pages. |
Options: none, manual, json | ||||
| Must Match | options | No | anyFilter | Whether all filters must match (AND) or any filter (OR). (shown when Filter Type is manual) |
Options: anyFilter, allFilters | ||||
| Filter Conditions | json | No | [] | Array of filter conditions. Each: { “key”: “PropertyName|propertyType”, “type”: “propertyType”, “condition”: “equals|contains|…”, “value”: ”…” }. For formula: add “returnType”: “text|number|checkbox|date”. (shown when Filter Type is manual) |
| Filters (JSON) | string | No | — | Raw JSON filter object following the Notion API filter format. See https://developers.notion.com/reference/post-database-query-filter (shown when Filter Type is json) |
| Sort | json | No | [] | Array of sort objects. Each: { “key”: “PropertyName|type”, “direction”: “ascending|descending”, “timestamp”: false }. Set timestamp=true and key to “created_time” or “last_edited_time” for timestamp sorts. |
Database Page: Update
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
Page ID (pageId) | string | Yes | — | The UUID of the database page. Supports Notion URLs or plain IDs. |
| Simplify | boolean | No | true | Whether to return a simplified version of the response instead of the raw data. |
| Properties | json | No | [] | Array of property objects for create/update. Each item: { “key”: “PropertyName|propertyType”, “title”: ”…”, “textContent”: ”…”, “numberValue”: 0, “selectValue”: ”…”, “checkboxValue”: false, “urlValue”: ”…”, “emailValue”: ”…”, “phoneValue”: ”…”, “dateStart”: ”…”, “dateEnd”: ”…”, “date”: ”…”, “range”: false, “multiSelectValue”: ”…”, “peopleValue”: [“id”], “relationValue”: [“id”], “statusValue”: ”…”, “fileUrls”: { “fileUrl”: [{ “name”: ”…”, “url”: ”…” }] } } |
| Icon Type | options | No | emoji | The icon type for the page. |
Options: emoji, file | ||||
| Icon | string | No | — | Emoji character or file URL to use as the page icon. |
Page: Archive
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
Page ID (pageId) | string | Yes | — | The UUID of the page to archive. Supports Notion URLs or plain IDs. |
| Simplify | boolean | No | true | Whether to return a simplified version of the response instead of the raw data. |
Page: Create
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Parent Page ID | string | Yes | — | The UUID of the parent page under which the new child page will be created. Supports Notion URLs or plain IDs. |
| Title | string | No | — | Page title. Appears at the top of the page and can be found via Quick Find. |
| Simplify | boolean | No | true | Whether to return a simplified version of the response instead of the raw data. |
| Block Content | json | No | [] | Array of block objects to append. Each item: { “type”: “paragraph|heading_1|heading_2|heading_3|toggle|to_do|bulleted_list_item|numbered_list_item|image”, “textContent”: ”…”, “checked”: false, “url”: ”…” } |
| Icon Type | options | No | emoji | The icon type for the page. |
Options: emoji, file | ||||
| Icon | string | No | — | Emoji character or file URL to use as the page icon. |
Page: Search
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Simplify | boolean | No | true | Whether to return a simplified version of the response instead of the raw data. |
| Return All | boolean | No | false | Whether to return all results or only up to a given limit. |
| Limit | number | No | 50 | Max number of results to return. (shown when Return All is false) |
| Search Text | string | No | — | The text to search for. |
| Sort Direction | options | No | descending | Sort direction for search results. |
Options: ascending, descending | ||||
| Sort Timestamp | options | No | last_edited_time | The timestamp to sort by. |
Options: last_edited_time | ||||
| Filter Object Type | options | No | — | Filter search results by object type. |
Options: "" (None), page, database |
User: Get
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| User ID | string | Yes | — | The UUID of the user. |
User: Get Many
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Return All | boolean | No | false | Whether to return all results or only up to a given limit. |
| Limit | number | No | 50 | Max number of results to return. (shown when Return All is false) |
All Operations
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Max Concurrency | number | No | 5 | Maximum number of items to process concurrently. Notion API has a 3 req/s rate limit, so keep this low. |
Output Data
The Notion response becomes the output item’s JSON — it is not merged into the incoming item, so fields you set upstream do not survive this node. Copy anything you still need into the Notion record, or fetch it again downstream. Binary data on the input item is forwarded.
These operations fan out — one output item per record returned:
Block: Get Child Blocks— one item per child blockDatabase: Get ManyandDatabase: Search— one item per databaseDatabase Page: Get Many— one item per pagePage: Search— one item per pageUser: Get Many— one item per user
When one of those returns nothing at all, no record item is produced: the input item passes through unchanged. Test for the fields you expect rather than assuming a record arrived.
Every other operation — Block: Append After, Database: Get, Database Page: Create, Database Page: Get, Database Page: Update, Page: Archive, Page: Create, User: Get — produces exactly one output item holding the response object. If a response ever arrives as something other than a plain object, it lands under result instead.
Simplify (on by default for Database, Database Page and Page operations) trims each record to id, name and url, and a database page additionally carries its properties flattened to plain values. Turn it off to get Notion’s raw object.
Child blocks each carry object and parent_id (the block or page you queried). With Simplify Output on they also carry root_id and a content string holding the block’s plain text, and the timestamp fields are dropped.
Download Files applies to Database Page: Get Many only. Each file or image property is downloaded and attached to that page’s output item as a binary property named {propertyName}_{fileIndex} — for a Attachments property, Attachments_0, Attachments_1, and so on. A file that fails to download is skipped rather than failing the item.
Reference the result downstream by expression, e.g. {{ $json.id }}.
Usage Examples
- Query all pages in a Notion database
- Create a new page in a Notion database with properties
- Download file attachments from Notion database pages
- Search for pages by text
- Append blocks to a Notion page
- Archive a Notion page
- Get all users in a Notion workspace
Example Configuration
Get a single database page in simplified form:
{
"type": "notion",
"parameters": {
"resource": "databasePage",
"operation": "get",
"pageId": "12345678-1234-1234-1234-123456789abc",
"simple": true
}
}
Create a page in a database with a status, some rich text and an emoji icon:
{
"type": "notion",
"parameters": {
"resource": "databasePage",
"operation": "create",
"databaseId": "87654321-4321-4321-4321-cba987654321",
"title": "New Task",
"propertiesUi": [
{
"key": "Status|status",
"statusValue": "In Progress"
},
{
"key": "Description|rich_text",
"textContent": "This is a new task description"
}
],
"iconType": "emoji",
"icon": "📝"
}
}
Query a database with a manual filter and a timestamp sort:
{
"type": "notion",
"parameters": {
"resource": "databasePage",
"operation": "getAll",
"databaseId": "87654321-4321-4321-4321-cba987654321",
"filterType": "manual",
"matchType": "allFilters",
"filterConditions": [
{
"key": "Status|status",
"type": "status",
"condition": "equals",
"value": "In Progress"
}
],
"sort": [
{
"key": "created_time",
"direction": "descending",
"timestamp": true
}
],
"returnAll": false,
"limit": 10
}
}
Append paragraphs, a heading and a to-do to an existing page:
{
"type": "notion",
"parameters": {
"resource": "block",
"operation": "append",
"blockId": "12345678-1234-1234-1234-123456789abc",
"blockUi": [
{
"type": "paragraph",
"textContent": "This is a new paragraph block"
},
{
"type": "heading_1",
"textContent": "Important Heading"
},
{
"type": "to_do",
"textContent": "Complete this task",
"checked": false
}
]
}
}
Search pages by text, newest first:
{
"type": "notion",
"parameters": {
"resource": "page",
"operation": "search",
"text": "project management",
"searchFilterValue": "page",
"sortDirection": "descending",
"sortTimestamp": "last_edited_time",
"returnAll": false,
"limit": 5
}
}
Walk a page’s whole block tree as plain text:
{
"type": "notion",
"parameters": {
"resource": "block",
"operation": "getAll",
"blockId": "12345678-1234-1234-1234-123456789abc",
"fetchNestedBlocks": true,
"simplifyOutput": true
}
}
Create a database page and give it body content in the same call:
{
"type": "notion",
"parameters": {
"resource": "databasePage",
"operation": "create",
"databaseId": "87654321-4321-4321-4321-cba987654321",
"title": "Weekly Report",
"propertiesUi": [
{
"key": "Priority|select",
"selectValue": "High"
},
{
"key": "Due Date|date",
"date": "2024-01-15"
},
{
"key": "Completed|checkbox",
"checkboxValue": false
}
],
"blockUi": [
{
"type": "heading_2",
"textContent": "Summary"
},
{
"type": "paragraph",
"textContent": "This week's accomplishments and goals."
}
]
}
}
Create a child page under an existing page:
{
"type": "notion",
"parameters": {
"resource": "page",
"operation": "create",
"pageId": "12345678-1234-1234-1234-123456789abc",
"title": "Meeting Notes - January 2024",
"iconType": "emoji",
"icon": "📋",
"blockUi": [
{
"type": "heading_1",
"textContent": "Meeting Agenda"
},
{
"type": "bulleted_list_item",
"textContent": "Review project status"
},
{
"type": "bulleted_list_item",
"textContent": "Discuss next steps"
},
{
"type": "to_do",
"textContent": "Follow up on action items",
"checked": false
}
]
}
}
Query with a raw Notion filter object and pull down the file properties:
{
"type": "notion",
"parameters": {
"resource": "databasePage",
"operation": "getAll",
"databaseId": "87654321-4321-4321-4321-cba987654321",
"filterType": "json",
"filterJson": "{\"and\": [{\"property\": \"Status\", \"status\": {\"equals\": \"In Progress\"}}, {\"property\": \"Priority\", \"select\": {\"equals\": \"High\"}}]}",
"sort": [
{
"key": "Priority|select",
"direction": "ascending"
},
{
"key": "last_edited_time",
"direction": "descending",
"timestamp": true
}
],
"downloadFiles": true,
"simple": true
}
}
Error Handling
| Mode | Behavior |
|---|---|
| stop | Halts workflow on first error |
| continue | Skips failed items, passes successful ones through |
| errorPort | Routes failed items to Error output port |
Tips
Manage Notion databases, pages, blocks, and users. Supports downloading file properties from database pages as binary data.
Frequently asked questions
What is the difference between a page and a database page?
A page is a standalone Notion page; a database page is a row inside a database, with the database's properties. They are separate resources on the node because they behave differently.
Can it retrieve files stored in Notion?
Yes — file properties on database pages can be downloaded as binary data, ready to store elsewhere or process.
Can it edit page content, not just properties?
Yes, through the blocks resource, which is how Notion models the content inside a page.
How do I react to changes in Notion?
Use the Notion Trigger, which polls a database for new or updated pages.
Build with the Notion node
Drop it into a workflow, wire it to an agent, or call it on a schedule. You'll need Notion API credentials first.
Open BusyBotLast updated . Spotted something wrong? Tell us.