{"id":26406333,"url":"https://github.com/planet-a-ventures/dlt-source-notion","last_synced_at":"2026-05-16T01:32:45.420Z","repository":{"id":282911053,"uuid":"950004392","full_name":"planet-a-ventures/dlt-source-notion","owner":"planet-a-ventures","description":"DLT (www.github.com/dlt-hub/dlt) source for Personio (www.notion.com)","archived":false,"fork":false,"pushed_at":"2026-01-20T20:35:42.000Z","size":229,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-01-21T01:44:33.590Z","etag":null,"topics":["data-engineering","data-load-tool","data-loading","dlt","dlthub","notion","python"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/planet-a-ventures.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-03-17T13:34:24.000Z","updated_at":"2026-01-20T20:27:54.000Z","dependencies_parsed_at":"2025-09-07T18:57:49.825Z","dependency_job_id":null,"html_url":"https://github.com/planet-a-ventures/dlt-source-notion","commit_stats":null,"previous_names":["planet-a-ventures/dlt-source-notion"],"tags_count":10,"template":false,"template_full_name":null,"purl":"pkg:github/planet-a-ventures/dlt-source-notion","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/planet-a-ventures%2Fdlt-source-notion","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/planet-a-ventures%2Fdlt-source-notion/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/planet-a-ventures%2Fdlt-source-notion/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/planet-a-ventures%2Fdlt-source-notion/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/planet-a-ventures","download_url":"https://codeload.github.com/planet-a-ventures/dlt-source-notion/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/planet-a-ventures%2Fdlt-source-notion/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33087028,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-15T20:25:35.270Z","status":"ssl_error","status_checked_at":"2026-05-15T20:25:34.732Z","response_time":103,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["data-engineering","data-load-tool","data-loading","dlt","dlthub","notion","python"],"created_at":"2025-03-17T17:19:16.275Z","updated_at":"2026-05-16T01:32:45.395Z","avatar_url":"https://github.com/planet-a-ventures.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"---\ndescription: dlt source for notion.com\nkeywords: [notion API, notion.com]\n---\n\n# dlt-source-notion\n\n[![PyPI version](https://img.shields.io/pypi/v/dlt-source-notion)](https://pypi.org/project/dlt-source-notion/)\n\n[DLT](https://dlthub.com/) source for [notion](https://www.notion.com/).\n\nCurrently loads the following data:\n\n| Table | Contains |\n| -- | -- |\n| `persons` | Items of the `user` model of type `person` |\n| `bots` | Items of the `user` model of type `bot` |\n| `database_\u003cname\u003e_\u003cshorthash\u003e` | The database content (pages) of a given database. Columns are all global page columns + selected columns of properties |\n| `databases` | All metadata of each loaded database. Has the title and a reference to the database table as well. |\n| `databases__properties` | Column \\\u003c-\u003e Label mapping for each unfiltered database property |\n| `options_\u003cname\u003e_\u003cshorthash\u003e` | All options of a `select` or `multi_select` in one of the loaded databases. |\n\n`\u003cshorthash\u003e` refers to the hashed `id` of an entity.\nThe hash is a 4-bit BLAKE2b hash.\n\n## Why are you not using the `dlt-hub/verified-sources` notion source / Differences\n\nThe [official verified source](https://github.com/dlt-hub/verified-sources/tree/master/sources/notion)\nhas a few drawbacks:\n\n- on usage of the verified source, a copy of the current state of\n  the `dlt-hub/verified-sources` repository is copied into your project;\n  Once you make changes to it, it effectively becomes a fork,\n  making it hard to update after the fact.\n- This makes use of a preexisting client implementation\n- And Pydantic types for Notion entities,\n  which makes this implementation a lot more stable\n\n## Usage\n\nCreate a `.dlt/secrets.toml` with your API key and email:\n\n```toml\nnotion_token = \"ntn_abcd12345\"\n```\n\nand then run the default source with optional list references:\n\n```py\nfrom dlt_source_notion import source as notion_source\n\npipeline = dlt.pipeline(\n   pipeline_name=\"notion_pipeline\",\n   destination=\"duckdb\",\n   dev_mode=True,\n)\nnotion_data = notion_source()\npipeline.run(notion_data)\n```\n\n## Development\n\nThis project is using [devenv](https://devenv.sh/).\n\nCommands:\n\n| Command | What does it do? |\n| -- | -- |\n| `format` | Formats \u0026 lints all code |\n| `sample-pipeline-run` | Runs the sample pipeline. By default `dev_mode=True` which fetches resources with a limit of 1 (page) |\n| `sample-pipeline-show` | Starts the streamlit-based dlt hub |\n\n### Run the sample\n\n```sh\nNOTION_TOKEN=[...] \\\n  sample-pipeline-run\n```\n\nalternatively you can also create a `.dlt/secrets.toml`\n(excluded from git) with the following content:\n\n```toml\nnotion_token = \"ntn_abcd12345\"\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fplanet-a-ventures%2Fdlt-source-notion","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fplanet-a-ventures%2Fdlt-source-notion","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fplanet-a-ventures%2Fdlt-source-notion/lists"}