Quick start
Fetch your first record with pin.
Once pin is on your PATH, look up a board. A reference is whatever you have:
a bare id, a full pinterest.com URL, a user/slug board path, or an
@handle.
pin board show pinterestman/ball-is-life
By default you get an aligned table. Ask for JSON when you want to pipe it:
$ pin board show pinterestman/ball-is-life -o json
[
{
"id": "...",
"name": "ball is life",
"slug": "ball-is-life",
"url": "https://www.pinterest.com/pinterestman/ball-is-life/",
"owner": "pinterestman",
"pins": 0,
"followers": 0
}
]
Profiles work the same way, by username or @handle:
pin user show pinterestman
pin user boards pinterestman --limit 5 --fields name,pins,followers
Shape the output
The same flags work on every command:
pin user show pinterestman --fields username,followers,boards
pin board show pinterestman/ball-is-life --template '{{.Name}} ({{.Followers}})'
pin user boards pinterestman -o jsonl | jq .name
-o takes auto, table, json, jsonl, csv, tsv, url, or raw. Left
to auto, it prints a table to a terminal and JSONL into a pipe, so the same
command reads well by hand and parses cleanly downstream. See
output formats for the full contract.
Resolve a reference offline
The ref commands classify and build references with no network call:
pin ref id https://www.pinterest.com/pin/123456/ -o json # -> {kind: pin, id: 123456}
pin ref url user alice # the canonical profile URL
Serve it instead
The same operations are available over HTTP and to agents over MCP:
pin serve --addr :7777 &
curl -s 'localhost:7777/v1/board/show/pinterestman/ball-is-life' # NDJSON
pin mcp # MCP over stdio
A note on empty feeds
The metadata commands above (board show, user show, user boards) return
data from any network. The pin-grid feeds (search, related, topic,
trending, board pins, user pins, get) can come back empty from a
datacenter or cloud IP because of Pinterest's anti-bot measures. When a feed is
withheld, pin exits with no results (exit 3) rather than fabricating. See
troubleshooting.