Claude.ai & Claude Desktop
Settings → Connectors → Add custom connector.
Name it PinPinterest, paste https://api.pinpinterest.com/mcp and leave the OAuth fields empty.
Press Connect, sign in to PinPinterest (or create your account) and press Allow.
Ask your assistant how competitive a Pinterest keyword is, what ranks for it and what is rising, and it answers from pins we actually measured. 15 lookups a month free, and a keyword we do not hold costs nothing.
Claude, ChatGPT, Claude Code, Cursor and VS Code can connect with just the server URL. They open a PinPinterest sign-in, you press Allow, and the app gets its own key (it shows in Settings → API as “connected”; revoke it there to disconnect).
Settings → Connectors → Add custom connector.
Name it PinPinterest, paste https://api.pinpinterest.com/mcp and leave the OAuth fields empty.
Press Connect, sign in to PinPinterest (or create your account) and press Allow.
Settings → Apps & Connectors → Advanced settings → turn on Developer mode.
Create a connector with https://api.pinpinterest.com/mcp and choose OAuth as the authentication.
Sign in to PinPinterest in the window it opens and press Allow.
Run this once, then type /mcp in Claude Code, pick pinpinterest and choose Authenticate.
Sign in to PinPinterest in the browser tab it opens and press Allow.
claude mcp add --transport http pinpinterest https://api.pinpinterest.com/mcpAdd the server with only its URL, https://api.pinpinterest.com/mcp (no headers).
Press the sign-in button the app shows beside it, sign in to PinPinterest and press Allow.
Server URL: https://api.pinpinterest.com/mcp. An app that cannot sign in (n8n, a script) uses a key, below.
Create an account, then open Settings → API in the dashboard and press Create key. The same key works for the REST API and here, and both draw on one monthly allowance.
Server URL: https://api.pinpinterest.com/mcp
Each plan can see a set number of different pins in any 30 days, with a tenth of it a day. One count covers the API, the MCP and the app together. A pin counts once per 30 days, so re-reading pins you have already seen is free, and keyword numbers (searches, related terms, trends) are not part of it.
At the limit, pins you have already seen still come back and new ones pause: the API answers HTTP 429 with code: "pin_limit", returns_at (when new pins return) and upgrade_plan; a page that only partly fits answers 200 with the pins that fit and a pin_limit object. Why a pin limit? It keeps the data fair and fresh for everyone and stops bulk copying of the database.
Run this once in your terminal, then ask Claude Code a Pinterest question.
claude mcp add --transport http pinpinterest https://api.pinpinterest.com/mcp \
--header "Authorization: Bearer pp_live_YOUR_KEY_HERE"Settings → Connectors → Add custom connector.
Name it PinPinterest and paste this URL (with your key in place of the placeholder). Leave the OAuth fields empty.
https://api.pinpinterest.com/mcp?key=pp_live_YOUR_KEY_HERESettings → Apps & Connectors → Advanced settings → turn on Developer mode.
Create a connector, paste this URL (with your key), and choose "No authentication" — the key in the URL is the authentication.
https://api.pinpinterest.com/mcp?key=pp_live_YOUR_KEY_HEREAdd this to the file, then reload Cursor.
File: ~/.cursor/mcp.json
{
"mcpServers": {
"pinpinterest": {
"url": "https://api.pinpinterest.com/mcp",
"headers": {
"Authorization": "Bearer pp_live_YOUR_KEY_HERE"
}
}
}
}Add this to the file in your workspace, then start the server from the file.
File: .vscode/mcp.json
{
"servers": {
"pinpinterest": {
"type": "http",
"url": "https://api.pinpinterest.com/mcp",
"headers": {
"Authorization": "Bearer pp_live_YOUR_KEY_HERE"
}
}
}
}Add an MCP Client Tool node to your AI Agent and fill in these three fields.
Endpoint: https://api.pinpinterest.com/mcp
Server Transport: HTTP Streamable
Authentication: Bearer Auth → pp_live_YOUR_KEY_HEREReplace pp_live_YOUR_KEY_HERE with your key. Keep a URL with your key in it private — anyone holding it can spend your lookups. You can revoke a key and make a new one at any time.
| Tool | What it answers |
|---|---|
keyword_lookup | Pinterest data for one keyword: how many ranking pins we analysed, their average and total saves, competition (low/medium/high) and an opportunity score, plus its niche. est_clicks is an ESTIMATE derived from saves (Pinterest does not publish clicks or impressions for pins you do not own); pins_analysed, saves and competition are measured from the pins we crawled. On Pro and above: demand is our high/medium/low word from average saves (the word the app shows); google_monthly_searches is GOOGLE's average monthly US searches for the exact term (null until read), never Pinterest's — Pinterest publishes no monthly search counts. pinterest_search_count is Pinterest's own search count for the exact phrase, from its public interest page (read at pinterest_search_count_at; Pinterest does not say what period it covers, so use it to compare phrases, never as searches per month); null when Pinterest has no interest for the phrase. A keyword we do not hold returns tracked:false with close suggestions and does not use a lookup. Its crawl field says what happens next: on a paid plan we have already started crawling it (crawl.status queued or crawling) — tell the person to ask again in crawl.retry_after_minutes, or that we e-mail them when it is in. When several keywords come back tracked:false, offer request_keywords to queue them all in one call. |
request_keywords | Ask PinPinterest to crawl Pinterest for keywords it has no data for yet — offer this after keyword_lookup answers tracked:false, especially for a list. Pass up to 25 terms; each comes back with a request_id and a status (queued, crawling, ready, failed). Crawls usually land within 10–40 minutes and the person gets ONE e-mail when they are in; asking keyword_lookup again after crawl.retry_after_minutes returns the data. Asking twice for the same term is the same request. Uses no lookup; up to 25 new keywords a day per account. Needs the Starter plan or above. |
related_keywords | Keywords that appear on the same ranking pins as yours, strongest overlap first — the ones worth targeting next. Each comes with how many pins it shares and its own competition. Needs the Starter plan or above. |
keyword_top_pins | The best-performing pins ranking for a keyword, by saves, with their titles, links and save counts — what is winning that search right now. est_clicks is an ESTIMATE derived from saves (Pinterest does not publish clicks or impressions for pins you do not own); pins_analysed, saves and competition are measured from the pins we crawled. Needs the Pro plan or above. |
niche_top_pins | The best-performing pins across a whole niche (use list_niches for the slugs), sorted and paged. Pass next_cursor back as cursor for the next page. There is no impressions sort: Pinterest does not publish impressions for pins you do not own, so we do not invent them. Needs the Pro plan or above. |
trending | Topics rising in a niche right now, read from the pins people are publishing this month, with example pins. Use list_niches for the slugs. |
list_niches | The niche slugs the other tools accept (niche_top_pins, trending). Free — uses no lookup. |
my_quota | Your PinPinterest plan, how many lookups you have used this month and when they reset. Free — uses no lookup. |
Each tool is a REST endpoint underneath, with the same numbers, the same plan rules and the same meter — see the allowance on each plan. When the month runs out, the assistant tells you, along with the plan that lifts the limit.
A keyword we have not crawled yet costs nothing. On a paid plan we start crawling it the moment you ask, and request_keywords queues a whole list in one go — you get one e-mail when they are in, and asking your assistant again then answers with the data. How the crawl works.
Create an account, open Settings → API, press Create key. The free allowance never expires.