โ† Back to Notes & PKM
Notes & PKM by @velvet-shark

raindrop

Search, list, and manage Raindrop.io bookmarks via CLI

0
Source Code

Raindrop.io Bookmarks

Manage bookmarks via the Raindrop.io API.

Setup

# Get token from: https://app.raindrop.io/settings/integrations โ†’ "Create test token"
echo 'RAINDROP_TOKEN="your-token"' > ~/.config/raindrop.env

# Or pass token at runtime (recommended for ephemeral use)
{baseDir}/scripts/raindrop.sh --token "your-token" whoami

Quick Start

# Search bookmarks
{baseDir}/scripts/raindrop.sh search "AI tools"

# List unsorted bookmarks
{baseDir}/scripts/raindrop.sh list -1 --limit 50

# Count unsorted
{baseDir}/scripts/raindrop.sh count -1

# Create collection and move bookmarks
{baseDir}/scripts/raindrop.sh create-collection "AI Coding"
{baseDir}/scripts/raindrop.sh move 12345 66016720

# Bulk move (efficient!)
{baseDir}/scripts/raindrop.sh bulk-move "123,456,789" 66016720

Commands

Reading

Command Description
whoami Show authenticated user
collections List all collections with IDs
list [ID] List bookmarks (default: 0 = all)
count [ID] Count bookmarks in collection
search QUERY [ID] Search bookmarks
get ID Get bookmark details
tags List all tags with counts
list-untagged [ID] Find bookmarks without tags
cache ID Get permanent copy (Pro only)

Writing

Command Description
add URL [ID] Add bookmark (default: -1 = Unsorted)
delete ID Delete bookmark
create-collection NAME Create new collection
move ID COLLECTION Move bookmark to collection
update ID [opts] Update tags/title/collection
bulk-move IDS TARGET [SOURCE] Move multiple bookmarks (source defaults to -1/Unsorted)
suggest URL Get AI-suggested tags/title

Options

Flag Description
--json Raw JSON output
--limit N Max results (default: 25)
--page N Pagination (0-indexed)
--delay MS Delay between API calls (rate limiting)
--token TOKEN Override API token

Update Options

For the update command:

Flag Description
--tags TAG1,TAG2 Set tags (comma-separated)
--title TITLE Set title
--collection ID Move to collection

Collection IDs

  • 0 = All bookmarks
  • -1 = Unsorted
  • -99 = Trash
  • N = Specific collection (get IDs from collections)

Examples

# List unsorted with pagination
{baseDir}/scripts/raindrop.sh list -1 --limit 50 --page 0
{baseDir}/scripts/raindrop.sh list -1 --limit 50 --page 1

# Create collection
{baseDir}/scripts/raindrop.sh create-collection "AI Coding"
# Output: Created: AI Coding / ID: 66016720

# Move single bookmark
{baseDir}/scripts/raindrop.sh move 1234567 66016720

# Update bookmark with tags and move
{baseDir}/scripts/raindrop.sh update 1234567 --tags "claude-code,workflow,tips" --collection 66016720

# Bulk move with rate limiting (100ms between calls)
{baseDir}/scripts/raindrop.sh bulk-move "123,456,789,101112" 66016720 --delay 100

# Find untagged bookmarks in unsorted
{baseDir}/scripts/raindrop.sh list-untagged -1 --limit 100

# Get JSON for scripting
{baseDir}/scripts/raindrop.sh list -1 --json --limit 50 | jq '.items[]._id'

# Count unsorted bookmarks
{baseDir}/scripts/raindrop.sh count -1

Bulk Operations

For large batch operations, use bulk-move which uses the Raindrop batch API (up to 100 items per request):

# Get IDs from unsorted
ids=$({baseDir}/scripts/raindrop.sh list -1 --json --limit 100 | jq -r '[.items[]._id] | join(",")')

# Move all to collection
{baseDir}/scripts/raindrop.sh bulk-move "$ids" 66016720

Rate Limiting

Raindrop API has rate limits. For bulk operations:

  1. Use --delay 100 (100ms between calls)
  2. Use bulk-move instead of individual move calls
  3. Process in batches of 50-100

Direct API

For operations not covered:

source ~/.config/raindrop.env

# Update tags
curl -X PUT "https://api.raindrop.io/rest/v1/raindrop/ID" \
  -H "Authorization: Bearer $RAINDROP_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"tags": ["tag1", "tag2"]}'

# Bulk update (up to 100 IDs)
curl -X PUT "https://api.raindrop.io/rest/v1/raindrops" \
  -H "Authorization: Bearer $RAINDROP_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"ids": [123, 456, 789], "collectionId": 12345}'

API docs: https://developer.raindrop.io/