Roam Research
A note taking tool for networked thought — connect ideas like your brain does
Paid·All audiences·API available
Key strengths
Bi-directional linking between notes and ideasGraph-based knowledge visualizationDaily notes workflow for building a personal knowledge baseBlock-level references and transclusionPowerful outliner with nested, collapsible structure
Paid only · from $15 USD/mo
San Francisco, USA
Founded 2020
No ratings yet
Developer & Power-User Documentation
Datalog Queries
Roam supports inline Datalog queries to pull structured data from your graph:
{{[[query]]
{:find [?block]
:where [[?block :block/refs ?page]
[?page :node/title "Project Alpha"]]}}}
This renders a live list of all blocks referencing the page "Project Alpha."
Roam Depot (Plugin Ecosystem)
- Install community and official extensions via Roam Depot (Settings → Roam Depot).
- Extensions are written in JavaScript/ClojureScript and can manipulate the graph via the
window.roamAlphaAPI.
roamAlphaAPI (JavaScript API)
// Pull data for a specific page
window.roamAlphaAPI.data.pull("[:block/string :block/children]", [":node/title", "My Page"]);
// Create a new block on today's daily notes page
window.roamAlphaAPI.createBlock({
location: { "parent-uid": "today-uid", order: 0 },
block: { string: "New block content" }
});
Data Export
- Export your entire graph as EDN or JSON (Markdown per page also available) from Settings → Export.
- The EDN export is a complete Datomic-style graph database suitable for programmatic processing.
Key Parameters & Concepts
- UID: Every block has a unique 9-character alphanumeric ID used for block references
((uid)). - Attributes: Use
::syntax to create structured key-value metadata on any block. - SmartBlocks: A popular community extension enabling templating and automation scripting within Roam.
