Notion
Notion
Scan Notion pages, data sources, comments, and file attachments.
- Category
- Collaboration
- Source type
- NOTION
- Produces
- pagedata_sourcefilecomments
Notion is a wiki, a database and a file cabinet at once, which is why it tends to hold a bit of everything — hiring notes, vendor contracts, a table of API keys someone made “temporarily”.
What you need to connect
An integration token. Create an internal integration in Notion, copy its secret, then share the pages and databases you want scanned with it — Notion integrations see nothing by default. An OAuth access token works too.
That sharing step is also your scope control: the integration can only read what someone deliberately gave it.
What Classifyre reads
- Pages — the text of the page’s blocks.
- Data sources (databases) — their schema, with their row pages linked.
- Comments — page and block comments, as one comments asset per page.
- Files — attachments, images, PDFs and video blocks, page icons and covers, materialised as their own assets.
- Links between pages — parent, relation and mention references, wired into the graph.
Narrow further by page id, data source id, or a search query.
Files attached in Notion are read with the shared file pipeline: see Supported File Formats for everything it can open, and OCR & Transcription for reading text out of images, audio and video.
Metadata on every asset
Asset kind · page
| Field | Type | Always present | What it is |
|---|---|---|---|
| page_id | string | Yes | Notion page id |
| title | string | Yes | Title of the page |
| links_count | integer | Yes | Number of linked or related assets |
| parent_type | string | No | Parent object type |
| parent_id | string | No | Parent object id |
| status | string | No | Status from properties |
| tags | string[] | No | Multi-select property values |
Asset kind · data_source
| Field | Type | Always present | What it is |
|---|---|---|---|
| data_source_id | string | Yes | Notion data source id |
| name | string | Yes | Data source name |
| row_count | integer | Yes | Number of rows |
| columns | object[] | No | Columns as {name, type} objects (Notion property name and type) |
| parent_type | string | No | Parent object type |
| parent_id | string | No | Parent object id |
Asset kind · file
| Field | Type | Always present | What it is |
|---|---|---|---|
| selector | string | Yes | Selector for the file within the page |
| name | string | Yes | File name |
| is_external | boolean | Yes | Whether the file is externally hosted |
Asset kind · comments
| Field | Type | Always present | What it is |
|---|---|---|---|
| comments_count | integer | Yes | Number of comments |
| page_id | string | Yes | Parent page id |
Lineage
Lineage
This source records no lineage. Nothing in the system it reads describes data moving from one place to another, so no FLOW edges are produced. Related items are still linked — see Lineage & Relationships for what those links mean and how they differ from lineage.
Worth knowing
- Nothing shared, nothing scanned. An empty scan almost always means the integration hasn’t been given access to any pages yet.
- Rate limits are respected with retries and an optional fixed delay.
Configuration
Beyond the fields below, every source also has the settings shared by all of them: the sampling strategy, the detectors to run, the scan schedule, and the compute limits for its scan jobs.
Required
Without these, the source will not save.
| Field | Type | Required | What it does | Default |
|---|---|---|---|---|
| required | object | Yes | Notion has no required connection fields; the integration token lives in the masked section.no extra properties | — |
Secrets
Stored encrypted and never shown again after you save them. See Configuration & Fields.
| Field | Type | Required | What it does | Default |
|---|---|---|---|---|
| masked | object | Yes | —no extra properties | — |
| notion_token | string | Yes | Notion API token used as a Bearer credential. Accepts an internal integration secret (ntn_...) or an OAuth public-integration access token. | — |
Optional
Everything you can tune. Sensible defaults apply when you leave them alone.
| Field | Type | Required | What it does | Default |
|---|---|---|---|---|
| optional | object | No | —no extra properties | — |
| connection | object | No | HTTP, version, and retry settings for Notion API calls.no extra properties | — |
| connection.max_retries | integer | No | Maximum retry attempts for transient API failures and rate limitsmin 0, max 10 | 3 |
| connection.notion_version | string | No | Notion-Version header sent with every request. Defaults to the data-sources API version. | 2025-09-03 |
| connection.rate_limit_delay_seconds | number | No | Additional delay between API requests to reduce rate-limit pressuremin 0 | 0 |
| connection.request_timeout_seconds | number | No | HTTP request timeout for Notion API callsmin 1 | 30 |
| content | object | No | Notion content extraction controls.no extra properties | — |
| content.file_max_bytes | integer | No | Maximum bytes downloaded per file for MIME inference and text extractionmin 1024 | 5242880 |
| content.include_comments | boolean | No | Include page and block comments and aggregate them into a per-page comments asset | true |
| content.include_data_sources | boolean | No | Emit Notion data sources (databases) as assets with their schema and link their row pages | true |
| content.include_files | boolean | No | Materialize files from file/image/pdf/video blocks, file properties, and page icon/cover as related assets | true |
| content.include_linked_pages | boolean | No | Wire parent, relation, and mention references between pages into the asset links graph | true |
| scope | object | No | Optional Notion scope filters. When omitted, all content shared with the integration is eligible for sampling.no extra properties | — |
| scope.data_source_ids | array | No | Restrict extraction to specific data source IDs (up to 250)max items 250 | — |
| scope.data_source_ids[] | string | No | — | — |
| scope.page_ids | array | No | Restrict extraction to specific page IDs (up to 250)max items 250 | — |
| scope.page_ids[] | string | No | — | — |
| scope.search_query | string | No | Optional full-text query passed to the Notion search endpoint to narrow discoverymin length 1 | — |