Skip to content

Features

Some of the feature listed here, loosely correspond to the features of the endpoints defined in the Notion API. Please note that a slightly different terminology is used. Since the term properties is highly overloaded, we call the properties of a database as a whole schema and refer to the individual properties as database properties or sometimes columns in the context of a table or view. With page properties, we denote only the properties of a page within a database that correspond to the properties of the database schema. In contrast to that, the properties that every page has, e.g. title, icon, last edited by/time, etc., are called page attributes.

General

  • high-level and pythonic interface for the Notion API
  • caching to avoid unnecessary calls to the Notion API
  • 100% feature parity with the low-level Notion API

Databases

  • retrieve a database by its ID
  • search for a database by its title
  • create a new database with a given schema, i.e. properties and their types
  • delete and restore a database
  • update a database schema, i.e. adding/removing properties or changing their types
  • change database properties, e.g. name, formula of formula property, options, etc.
  • read the database attributes like title, description, cover, icon, etc.
  • change database attributes like title, description, etc.
  • retrieve all pages of a database
  • query with filters and sortings to retrieve only specific pages
  • display the content of a database as a table, e.g. in JupyterLab
  • create new pages with properties within the database respecting the schema

Pages

  • retrieve a page by its ID
  • search for a page by its title
  • create a new page
  • delete and restore a page
  • read page attributes like title, cover, icon, etc.
  • change page attributes like title, cover, icon, etc.
  • read page properties defined by a database schema
  • change page properties
  • navigate pages using parent and children links
  • read the blocks within a page
  • add/remove the blocks within a page
  • view the content of a page as Markdown

Blocks

  • create/delete/modify a block
  • navigate blocks using references of parent and children
  • create blocks within a page or another parent block

Users

  • retrieve a user by their ID
  • retrieve own bot user, i.e. self-identify
  • retrieve all users
  • read the attributes of a user

Comments

  • retrieve comments of a block or page
  • create/delete/modify a comment within a block or page

Adapters

  • general synchronization capabilities with external services
  • client for Google Tasks API and synchronization adapter to sync google tasks with a Notion database
  • synchronization adapter for Google Sheets API to sync google sheets with a Notion database

Notion API Limitations

Some features that the Notion UI provides are not possible to implement due to limitations of the API itself.

  • creating a Status property or updating the options as well as option groups. Sending an Status property within a create database call is currently accepted but just ignored, i.e. a database without the property will show up.
  • creating a Unique ID property or updating its properties like the prefix. This property type is not even mentioned as one of the database properties.
  • creating a Wiki database which has a special Verification property.
  • updating the database schema with respect to the options of a select/multi-select property, the formula of a formula property, and synced content.
  • referencing in a formula expression another formula property, e.g. prop("other formula"). Use substitution instead.
  • creating a two-way relation with the same source and target database, i.e. self-referencing. The update database call is currently accepted but only a one-way relation created, which seems to be a bug.
  • uploading files as icons or in general uploading files.
  • setting the icon and cover of a database.
  • moving pages is not possible as a page’s parent cannot be changed.
  • setting a reminder based on date and/or time.
  • modifying the url of file-like block, e.g. File, Image, etc.

If you think those limitations should be fixed, let the developers of Notion know 😆