Reference · Tools

Notion

Manage databases, pages, database pages, blocks, and users in Notion. Supports downloading file properties as binary data.

Action (binary) Productivity v1 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

DirectionPort(s)
InputInput
OutputOutput, Error

Credentials

This tool requires Notion API credentials. See the Credentials Guide for setup instructions.

Resources

ResourceValue
Blockblock
Databasedatabase
Database PagedatabasePage
Pagepage
Useruser

Operations

Block (block)

OperationValueDescription
Append AfterappendAppend child blocks to a parent block or page
Get Child BlocksgetAllGet child blocks of a block or page

Database (database)

OperationValueDescription
GetgetGet a database by ID
Get ManygetAllList all databases
SearchsearchSearch databases by text

Database Page (databasePage)

OperationValueDescription
CreatecreateCreate a page in a database
GetgetGet a page in a database
Get ManygetAllQuery pages in a database
UpdateupdateUpdate a page in a database

Page (page)

OperationValueDescription
ArchivearchiveArchive (soft-delete) a page
CreatecreateCreate a child page under a parent page
SearchsearchText search of pages

User (user)

OperationValueDescription
GetgetGet a user by ID
Get ManygetAllList all workspace users

Parameters

Block: Append After

ParameterTypeRequiredDefaultDescription
Block IDstringYesThe UUID of the block or page. Supports Notion URLs or plain IDs.
Block ContentjsonNo[]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

ParameterTypeRequiredDefaultDescription
Block IDstringYesThe UUID of the block or page. Supports Notion URLs or plain IDs.
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo50Max number of results to return. (shown when Return All is false)
Also Fetch Nested BlocksbooleanNofalseWhether to recursively fetch children of children blocks.
Simplify OutputbooleanNotrueWhether to extract plain text content from block types.

Database: Get

ParameterTypeRequiredDefaultDescription
Database ID (databaseId)stringYesThe UUID of the database. Supports Notion URLs or plain IDs.
SimplifybooleanNotrueWhether to return a simplified version of the response instead of the raw data.

Database: Get Many

ParameterTypeRequiredDefaultDescription
SimplifybooleanNotrueWhether to return a simplified version of the response instead of the raw data.
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo50Max number of results to return. (shown when Return All is false)
ParameterTypeRequiredDefaultDescription
SimplifybooleanNotrueWhether to return a simplified version of the response instead of the raw data.
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo50Max number of results to return. (shown when Return All is false)
Search TextstringNoThe text to search for.
Sort DirectionoptionsNodescendingSort direction for search results.
Options: ascending, descending
Sort TimestampoptionsNolast_edited_timeThe timestamp to sort by.
Options: last_edited_time

Database Page: Create

ParameterTypeRequiredDefaultDescription
Database ID (databaseId)stringYesThe UUID of the parent database to create the page in / query pages from. Supports Notion URLs or plain IDs.
TitlestringNoPage title. Appears at the top of the page and can be found via Quick Find.
SimplifybooleanNotrueWhether to return a simplified version of the response instead of the raw data.
PropertiesjsonNo[]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 ContentjsonNo[]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 TypeoptionsNoemojiThe icon type for the page.
Options: emoji, file
IconstringNoEmoji character or file URL to use as the page icon.

Database Page: Get

ParameterTypeRequiredDefaultDescription
Page ID (pageId)stringYesThe UUID of the database page. Supports Notion URLs or plain IDs.
SimplifybooleanNotrueWhether to return a simplified version of the response instead of the raw data.

Database Page: Get Many

ParameterTypeRequiredDefaultDescription
Database ID (databaseId)stringYesThe UUID of the parent database to create the page in / query pages from. Supports Notion URLs or plain IDs.
SimplifybooleanNotrueWhether to return a simplified version of the response instead of the raw data.
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo50Max number of results to return. (shown when Return All is false)
Download FilesbooleanNofalseWhether to download file/image properties as binary data. File properties are stored as binary with the naming pattern {propertyName}_{fileIndex}.
Filter TypeoptionsNononeHow to filter database pages.
Options: none, manual, json
Must MatchoptionsNoanyFilterWhether all filters must match (AND) or any filter (OR). (shown when Filter Type is manual)
Options: anyFilter, allFilters
Filter ConditionsjsonNo[]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)stringNoRaw 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)
SortjsonNo[]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

ParameterTypeRequiredDefaultDescription
Page ID (pageId)stringYesThe UUID of the database page. Supports Notion URLs or plain IDs.
SimplifybooleanNotrueWhether to return a simplified version of the response instead of the raw data.
PropertiesjsonNo[]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 TypeoptionsNoemojiThe icon type for the page.
Options: emoji, file
IconstringNoEmoji character or file URL to use as the page icon.

Page: Archive

ParameterTypeRequiredDefaultDescription
Page ID (pageId)stringYesThe UUID of the page to archive. Supports Notion URLs or plain IDs.
SimplifybooleanNotrueWhether to return a simplified version of the response instead of the raw data.

Page: Create

ParameterTypeRequiredDefaultDescription
Parent Page IDstringYesThe UUID of the parent page under which the new child page will be created. Supports Notion URLs or plain IDs.
TitlestringNoPage title. Appears at the top of the page and can be found via Quick Find.
SimplifybooleanNotrueWhether to return a simplified version of the response instead of the raw data.
Block ContentjsonNo[]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 TypeoptionsNoemojiThe icon type for the page.
Options: emoji, file
IconstringNoEmoji character or file URL to use as the page icon.
ParameterTypeRequiredDefaultDescription
SimplifybooleanNotrueWhether to return a simplified version of the response instead of the raw data.
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo50Max number of results to return. (shown when Return All is false)
Search TextstringNoThe text to search for.
Sort DirectionoptionsNodescendingSort direction for search results.
Options: ascending, descending
Sort TimestampoptionsNolast_edited_timeThe timestamp to sort by.
Options: last_edited_time
Filter Object TypeoptionsNoFilter search results by object type.
Options: "" (None), page, database

User: Get

ParameterTypeRequiredDefaultDescription
User IDstringYesThe UUID of the user.

User: Get Many

ParameterTypeRequiredDefaultDescription
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo50Max number of results to return. (shown when Return All is false)

All Operations

ParameterTypeRequiredDefaultDescription
Max ConcurrencynumberNo5Maximum 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 block
  • Database: Get Many and Database: Search — one item per database
  • Database Page: Get Many — one item per page
  • Page: Search — one item per page
  • User: 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

ModeBehavior
stopHalts workflow on first error
continueSkips failed items, passes successful ones through
errorPortRoutes 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 BusyBot

Last updated . Spotted something wrong? Tell us.