Pinterest data via Wire — profiles, pin detail, board pins and search as structured JSON
https://api.anakin.io/v1/wire/taskProfiles, pin detail, board pins and search. Every Pinterest action is a Wire action: call POST /v1/wire/task with the action_id and params below, then poll GET /v1/wire/jobs/{id} (or pass a webhook_url). All actions read public data — no login, no cookies, auth_mode: none.
Catalog: pinterest · Actions: 4 · Auth: none · Billing: only successful calls are charged
| Action | action_id | Credits | Returns |
|---|---|---|---|
| User Profile | pinterest_user_profile | 4 | 1 item |
| Pin Details | pinterest_pin_detail | 4 | 1 item |
| Board Pins | pinterest_board_pins | 4 | 15 pins per page |
| Pin Search | pinterest_search | 4 | 16 pins per page |
Credits marked + grow with limit — the exact formula is on each action. See Pricing for what a credit costs on your plan.
Call a Pinterest action
The same call works for every action on this page — swap action_id and params.
curl -X POST https://api.anakin.io/v1/wire/task \
-H "X-API-Key: your_api_key" \
-H "Content-Type: application/json" \
-d '{"action_id": "pinterest_user_profile", "params": {"username": "pinterest"}}'import requests, time
res = requests.post('https://api.anakin.io/v1/wire/task', headers={'X-API-Key': 'your_api_key'},
json={"action_id": "pinterest_user_profile", "params": {"username": "pinterest"}})
job_id = res.json()['job_id']
while True: # poll until the job settles (or pass webhook_url and skip this)
job = requests.get(f'https://api.anakin.io/v1/wire/jobs/{job_id}', headers={'X-API-Key': 'your_api_key'}).json()
if job['status'] in ('completed', 'failed'):
break
time.sleep(2)
print(job['data']['data'])const headers = { 'X-API-Key': 'your_api_key', 'Content-Type': 'application/json' };
const res = await fetch('https://api.anakin.io/v1/wire/task', { method: 'POST', headers, body: JSON.stringify({"action_id": "pinterest_user_profile", "params": {"username": "pinterest"}}) });
const { job_id } = await res.json();
let job;
do { // poll until the job settles (or pass webhook_url and skip this)
await new Promise((r) => setTimeout(r, 2000));
job = await (await fetch(`https://api.anakin.io/v1/wire/jobs/${job_id}`, { headers })).json();
} while (!['completed', 'failed'].includes(job.status));
console.log(job.data.data);The job result wraps the action's output: data.status is "ok" or "error", and data.data holds the fields shown under each action below. See the overview for the full envelope.
User Profile
Get a public Pinterest profile: name, bio, follower, following, pin and board counts, verified badge, website and avatar.
action_id: pinterest_user_profile · Credits: 4 / call · Returns: 1 item
| Parameter | Type | Description |
|---|---|---|
action_id required | string | Set to pinterest_user_profile |
params.username required | string | Pinterest username or profile URL. |
Request
{
"action_id": "pinterest_user_profile",
"params": {
"username": "pinterest"
}
}Response — data.data of the completed job (trimmed):
{
"username": "pinterest",
"full_name": "Pinterest",
"bio": "Find your reason to go offline. 📌",
"followers": 6267313,
"following": 397,
"pins": 97030,
"boards": 143,
"verified": true,
"website": "http://www.pinterest.com",
"profile_image_url": "https://i.pinimg.com/280x280_RS/1c/b5/61/1cb561c8e7b9c709f78d110a4b5f0863.jpg",
"profile_url": "https://www.pinterest.com/pinterest/",
"top_boards": []
}Pin Details
Get one Pinterest pin: title, description, image or video, outbound link, saves, comments, repins, date, pinner and board.
action_id: pinterest_pin_detail · Credits: 4 / call · Returns: 1 item
| Parameter | Type | Description |
|---|---|---|
action_id required | string | Set to pinterest_pin_detail |
params.pin_url required | string | Link to the pin (https://www.pinterest.com/pin/<id>/). |
Request
{
"action_id": "pinterest_pin_detail",
"params": {
"pin_url": "https://www.pinterest.com/pin/89649848828674707/"
}
}Response — data.data of the completed job (trimmed):
{
"pin_id": "89649848828674707",
"url": "https://www.pinterest.com/pin/89649848828674707/",
"title": "#recipes | Recipes for dinner easy video, Chicken and pasta recipes videos easy, Easy dinner recipes with chicken quick videos",
"description": "#recipes",
"image_url": "https://i.pinimg.com/originals/0d/c1/f9/0dc1f96db6694c9659546bc529ec7998.jpg",
"is_video": true,
"link": null,
"saves": 89,
"comments": 2,
"repins": 241,
"created_at": "Wed, 30 Sep 2026 03:29:08 +0000",
"pinner_username": "hfmunson",
"board_name": "Recipes to Try"
}Board Pins
Get the pins on a Pinterest board, one full page (about 15) per call, with title, description, image, link, saves and date. Use cursor for more.
action_id: pinterest_board_pins · Credits: 4 / call · Returns: 15 pins per page
| Parameter | Type | Description |
|---|---|---|
action_id required | string | Set to pinterest_board_pins |
params.board_url required | string | Link to the board (https://www.pinterest.com/<user>/<board>/). |
params.cursor | string | Leave empty for the first page. For the next page, pass the next_cursor value from the previous response (next_cursor is null when there are no more). |
Request
{
"action_id": "pinterest_board_pins",
"params": {
"board_url": "https://www.pinterest.com/pinterest/girls-night-in/"
}
}Response — data.data of the completed job (trimmed):
{
"board_url": "https://www.pinterest.com/pinterest/girls-night-in/",
"pins": [
{
"pin_id": "424605071145776592",
"url": "https://www.pinterest.com/pin/424605071145776592/",
"title": "Making cute pink meringues",
"description": "Making meringuess can be so fun and easy!! Creds: mangotastes #baking #cooking #meringe #cookies",
"image_url": "https://i.pinimg.com/originals/da/c0/74/dac0749b1411aebab3d5eef1f16e87c0.jpg",
"is_video": false,
"link": null,
"saves": 69696,
"comments": null,
"repins": 18,
"created_at": null,
"pinner_username": "pinterest",
"board_name": "Girls' night in"
},
{
"pin_id": "424605071145776596",
"url": "https://www.pinterest.com/pin/424605071145776596/",
"title": "Viral Scoopable Cookies",
"description": "These scoopable cookies have crisp golden brown edges, pools of melty chocolate, and a gooey center. The cookie dough is a no-chill recipe.",
"image_url": "https://i.pinimg.com/originals/00/45/da/0045da6e5f07322bc203439cc764fa07.jpg",
"is_video": false,
"link": "https://richanddelish.com/scoopable-cookies/",
"saves": 10493,
"comments": null,
"repins": 19,
"created_at": null,
"pinner_username": "pinterest",
"board_name": "Girls' night in"
},
"… 13 more"
],
"count": 15,
"next_cursor": "Y2JZakk0ZUU1WWQzbE9SR2N5VFhwWk0wMXFVWGhOYWtrelRucGpkMHRyWkZKVVEzQTRUa1JzYlUxVVl6TlBSRTE0VDBSck5FNUVWWGRhYlZFelRUSk9hbHBVWkdoT2JWRjVUa2RKTUZscVVYbGFSR3hxV2tSU…",
"message": null
}Paging: the first call returns
next_cursor; pass it back ascursorfor the next page (nullwhen there are no more). Each page is a new call.
Pin Search
Search Pinterest pins by keyword, one full page (about 15-20) per call, with title, description, image, link, saves and pinner. Use cursor for more.
action_id: pinterest_search · Credits: 4 / call · Returns: 16 pins per page
| Parameter | Type | Description |
|---|---|---|
action_id required | string | Set to pinterest_search |
params.query required | string | Keyword or phrase to search for. |
params.cursor | string | Leave empty for the first page. For the next page, pass the next_cursor value from the previous response (next_cursor is null when there are no more). |
Request
{
"action_id": "pinterest_search",
"params": {
"query": "travel"
}
}Response — data.data of the completed job (trimmed):
{
"query": "travel",
"pins": [
{
"pin_id": "1144195849115940791",
"url": "https://www.pinterest.com/pin/1144195849115940791/",
"title": "Somewhere Above the Clouds ✈️ | Travel Inspiration",
"description": "There’s something about watching the world from above that makes you want to book another trip immediately. 🌅✈️ Save this for your travel moodboard.",
"image_url": "https://i.pinimg.com/originals/8d/75/7d/8d757d4798941c1a9a441c2870468d06.jpg",
"is_video": false,
"link": null,
"saves": null,
"comments": null,
"repins": null,
"created_at": "Thu, 24 Sep 2026 21:38:26 +0000",
"pinner_username": "h3rverse",
"board_name": "tr4vel vibes ♡"
},
{
"pin_id": "1144195849115869240",
"url": "https://www.pinterest.com/pin/1144195849115869240/",
"title": "Sunset Somewhere New ✈️ | Travel Aesthetic",
"description": "There’s something about watching the world from above and knowing you’re on your way somewhere new. Collect places, memories and little moments along the way…",
"image_url": "https://i.pinimg.com/originals/99/23/27/99232797e150375dc238c5c548c8f731.png",
"is_video": false,
"link": null,
"saves": null,
"comments": null,
"repins": null,
"created_at": "Thu, 24 Sep 2026 00:12:59 +0000",
"pinner_username": "h3rverse",
"board_name": "tr4vel vibes ♡"
},
"… 14 more"
],
"count": 16,
"next_cursor": "Y2JVSG81V2sxcmNHRlpWM1J5VFVad1ZsWlVSbXRXTVVZMldWVlZNVll4U1hsVVdHaFhVbXhhVkZVeWMzZGtNRFZWVjIxb1RrMXNTbEZXYlhSWFZqQXdlRlZZYUZaaWEzQnpWV3hvVTJWV1pISlhhM1JYVm10V…",
"message": null
}Paging: the first call returns
next_cursor; pass it back ascursorfor the next page (nullwhen there are no more). Each page is a new call.