Roam Research logo

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.