Pinterest Board API
Pins on a Pinterest board — saves, imageOriginal, destinationUrl, top-level author. ~0.5 credits/pin.
GET request to /v1/pinterest/board that responds with clean JSON and costs ~13 credits (0.5/result). Pass cache=true for a free 24h cache hit; default is always fresh. Start with 100 free credits — no credit card.What is the Pinterest Board API?
Pass a Pinterest board URL (.../username/board-name/ — not a /pin/ URL) and get that board's public pins as clean JSON. Response includes board + boardName, a top-level author{} (pinner card with followers, once), and pins[] with id/url, title when Pinterest exposes it, description, destinationUrl (outbound link), domain, saves (the primary Pinterest engagement metric from aggregated_pin_data), image (display CDN size) + imageOriginal (/originals/) + images{236x,564x,originals,…}, and a slim per-pin author{username,displayName}. Billed about 0.5 credits per returned pin (min 2). Native pidgets soft-caps around 50–100 pins with no cursor yet — larger boards need a follow-up surface.
What you get
- saves (repin metric) + destinationUrl + domain
- image + imageOriginal + images{} size map
- Top-level author{} (followers); slim per-pin author
- title when exposed; board + boardName
Platform limits
Honest ceilings from the upstream platform surface — not Captapi bugs. Unexpected truncation here is usually the platform, not us.
- Pass a board URL (.../user/board-slug/), not a pin URL. Pin URLs belong on /pinterest/pin-details.
- Native board hydrate soft-caps ~50–100 pins. No cursor/hasMore yet — limit alone cannot page a 500+ pin board.
- title / richPinType are often null on the board pidgets list; pin-details hydrates richer pin metadata.
Try it
Fill in the parameters below and copy a ready-to-run request, or open the live Playground to run it against your account (no API key paste).
Parameters
curl "https://api.captapi.com/v1/pinterest/board?url=https%3A%2F%2Fwww.pinterest.com%2Fpotterybarn%2Frustic-lodge-lookbook%2F" \
-H "Authorization: Bearer capt_live_..."
# or: -H "x-api-key: capt_live_..."Edit the parameters and the code updates instantly. Switch languages and hit copy.
Example response
{
"success": true,
"data": {
"board": "https://www.pinterest.com/potterybarn/rustic-lodge-lookbook/",
"totalReturned": 4,
"pins": [
{
"platform": "pinterest",
"id": "264938390611779142",
"url": "https://www.pinterest.com/pin/264938390611779142/",
"description": "Add texture and dimension to any console table with our Woven Vine Vase. Available in two sizes, this handcrafted piece is sure to make a statement. Complete the moment with some faux branches or florals. Tap to shop!",
"domain": "Uploaded by user",
"image": "https://i.pinimg.com/564x/22/f4/da/22f4da6ab05a70aabcda594a7d004883.jpg",
"images": {
"564x": {
"url": "https://i.pinimg.com/564x/22/f4/da/22f4da6ab05a70aabcda594a7d004883.jpg",
"width": 564,
"height": 846
},
"originals": {
"url": "https://i.pinimg.com/originals/22/f4/da/22f4da6ab05a70aabcda594a7d004883.jpg"
}
},
"isVideo": false,
"dominantColor": "#3f2712",
"repinCount": 1,
"board": {
"name": "Rustic Lodge Lookbook",
"url": "https://www.pinterest.com/potterybarn/rustic-lodge-lookbook/",
"pinCount": 13,
"followers": 1021580
},
"author": {
"username": "potterybarn",
"displayName": "Pottery Barn"
},
"originAuthor": {
"id": "264938527987338255"
},
"saves": 2,
"imageOriginal": "https://i.pinimg.com/originals/22/f4/da/22f4da6ab05a70aabcda594a7d004883.jpg"
},
{
"platform": "pinterest",
"id": "264938390611779129",
"url": "https://www.pinterest.com/pin/264938390611779129/",
"description": "Rustic meets refined with our expertly crafted Bozeman Console Table—perfect for any entryway or living room. Layer home decor with varying textures and heights to add dimension and character. Tap to shop our exclusive Fall collection.",
"domain": "Uploaded by user",
"image": "https://i.pinimg.com/564x/cc/2a/6a/cc2a6a49424bedc1aa29cdeb6195a48b.jpg",
"images": {
"564x": {
"url": "https://i.pinimg.com/564x/cc/2a/6a/cc2a6a49424bedc1aa29cdeb6195a48b.jpg",
"width": 564,
"height": 846
},
"originals": {
"url": "https://i.pinimg.com/originals/cc/2a/6a/cc2a6a49424bedc1aa29cdeb6195a48b.jpg"
}
},
"isVideo": false,
"dominantColor": "#3a220f",
"board": {
"name": "Rustic Lodge Lookbook",
"url": "https://www.pinterest.com/potterybarn/rustic-lodge-lookbook/",
"pinCount": 13,
"followers": 1021580
},
"author": {
"username": "potterybarn",
"displayName": "Pottery Barn"
},
"originAuthor": {
"id": "264938527987338255"
},
"saves": 1,
"imageOriginal": "https://i.pinimg.com/originals/cc/2a/6a/cc2a6a49424bedc1aa29cdeb6195a48b.jpg",
"repinCount": 0
}
],
"boardName": "Rustic Lodge Lookbook",
"author": {
"id": "264938527987338255",
"username": "potterybarn",
"displayName": "Pottery Barn",
"url": "https://www.pinterest.com/potterybarn/",
"followers": 1122739,
"pinCount": 19312448,
"avatar": "https://i.pinimg.com/60x60_RS/c0/c2/52/c0c252100791f0a4ed29e7bb31b85a0f.jpg",
"about": "Ideas & inspiration for real life. Mindfully made. Crafted to last."
}
}
}Billing metadata is returned in response headers: X-Captapi-Credits (credits charged), X-Captapi-Cache (hit or miss), and X-Captapi-Source. Failed requests (4xx/5xx) are never charged. See the full list of error codes in the error reference.
Response structure
A successful call returns success, cached, creditsUsed, and a data object with the following fields:
Top-level fields
boardBoard URL.totalReturnedNumber of items returned in this response.boardNameBoard name. Example: "Rustic Lodge Lookbook".
Pins
Each item in pins contains:
platformPlatform identifier for this response (matches the endpoint's platform).idStable platform ID for the item.urlCanonical URL of the item.descriptionDescription text.domainDomain. Example: "Uploaded by user".imageDisplay image URL (typically 564x or 736x CDN size). Prefer imageOriginal for archival/analysis.imagesAttached image URL list for this item.isVideoWhether the item is a video.dominantColorDominant color. Example: "#3f2712".repinCountRepin count. Example: 1.boardObject with name, url, pinCount, followers.authorTop-level: full pinner card (username, displayName, followers). Per-pin author is slim (username/displayName) to avoid repeating followers on every row.originAuthorObject with id.savesHow many times the pin was saved/repinned — Pinterest's primary engagement metric.imageOriginalFull-resolution pin image via i.pinimg.com/originals/… (derived when Pinterest only ships sized CDN URLs).
Author
The author object contains:
idStable platform ID for the item.usernameAccount username / handle.displayNameDisplay name of the account. Canonical across profile endpoints (prefer over name).urlCanonical URL of the item.followersFollower count.pinCountPin count. Example: 19312448.avatarAvatar / profile picture URL. Canonical across profile endpoints.aboutAbout.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| url | string | Yes | Pinterest board URL (.../username/board-name/), not a /pin/ URL. Example: https://www.pinterest.com/potterybarn/rustic-lodge-lookbook/. The URL platform must match this endpoint's platform. Do not pass cross-platform URLs, e.g. YouTube to TikTok, Instagram to Facebook, LinkedIn to X/Twitter, or Pinterest to Rumble. |
| limit | integer | No | Max items to return (default 25, max 200). Billed per result. |
| cache | boolean | No | Set true to serve from the 24h response cache (0 credits on hit). Default false — always fetch fresh. Envelope includes cached + cachedAt on hits. |
Authentication: send your key as Authorization: Bearer capt_live_.... A typical call costs ~13 credits (0.5/result) — billed per result, so the exact amount scales with how many items you request. Pass cache=true for a free 24h cache hit; default is always fresh (metrics refresh within ~1 hour).
How it works
- 1. Sign up — get 100 free credits, no card required.
- 2. Create a key from your dashboard.
- 3. Send one request to
/v1/pinterest/boardand parse the JSON response.
Use cases
Discovery
Surface items matching a topic, tag, sound, or trend query.
Monitoring
Watch a list feed over time for new activity.
Research
Sample structured list results for analysis.
Pipelines
Ingest list results into your own store or CRM.
Frequently asked questions
What does the Pinterest Board API do?+
The Pinterest Board API lets you list items in bulk with metadata from a public Pinterest board using one GET request to /v1/pinterest/board. It returns clean JSON — no OAuth or infrastructure setup required.
How many credits does the Pinterest Board API cost?+
At the default limit this endpoint costs 13 credits (0.5 per result). Billing scales with how many results you request. Pass cache=true to serve from the 24h cache (0 credits on hit); default is always fresh. Hits include cached + cachedAt. Selected profile endpoints also accept cacheMaxAge=1d|3d|7d|14d|30d. Failed or empty results are never charged.
Do I need a Pinterest API key or OAuth?+
No. A single Captapi key works across every platform Captapi supports — YouTube, TikTok, Instagram, Facebook, Twitter/X, Reddit, Threads, Bluesky, Pinterest, LinkedIn, Rumble, Spotify, Kwai, and more. We handle proxies, rate limits, retries, and authentication for you.
Why did my request fail with a pin URL?+
This endpoint requires a board URL (.../username/board-name/). Pin URLs go to /v1/pinterest/pin-details. The docs cURL uses a board URL — do not paste a /pin/… link here.
Where is the save/repin count?+
On each pin as saves (from Pinterest aggregated_pin_data). That is the primary engagement metric on Pinterest — not likes.
How do I get the full-resolution image?+
Use imageOriginal or images.originals.url. Top-level image is a display CDN size (often 564x).
Is the Pinterest Board API suitable for production use?+
Yes. It is a stable REST endpoint with predictable JSON and automatic retries. Pass cache=true to serve from the 24h cache (0 credits on hit); default is always fresh. Hits include cached + cachedAt. Selected profile endpoints also accept cacheMaxAge=1d|3d|7d|14d|30d. Use it for analytics, monitoring, and content automation.
More Pinterest APIs
Ready to use the Pinterest Board API?
Sign up, grab your key, and make your first call in 60 seconds.