Pinterest APIpinterest.com ↗
Search Pinterest pins by keyword and fetch detailed pin metadata: images, pinner profiles, board info, save counts, and more. 2 endpoints, JSON responses.
What is the Pinterest API?
The Pinterest API provides 2 endpoints for retrieving pin data from Pinterest.com. Use search_pins to run full-text searches across Pinterest and get back paginated results with titles, images, pinner usernames, board names, source domains, and creation dates. Use get_pin to fetch a single pin by numeric ID or full URL, including engagement metrics like save counts and comment counts.
curl -X GET 'https://api.parse.bot/scraper/e3dd9006-958b-4837-a658-065d36611ff4/search_pins?query=home+decor' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace pinterest-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: pinterest SDK — bounded, re-runnable; every call capped."""
from parse_apis.pinterest_com_api import Pinterest, InputFormatInvalid
client = Pinterest()
# Search for pins with a topic query, cap total items.
for pin in client.pins.search(query="home decor", limit=3):
print(pin.title, pin.created_at, pin.domain)
# Drill-down: take one pin for detailed inspection via point lookup.
pin = client.pins.search(query="cats", limit=1).first()
if pin:
detail = client.pins.get(pin=pin.id)
print(detail.id, detail.title, detail.pinner_username)
print("saves:", detail.save_count, "comments:", detail.comment_count)
# Typed error: wrap a call that may reject malformed input.
try:
for p in client.pins.search(query="travel photography", limit=2):
print(p.title, p.pinner_full_name)
except InputFormatInvalid as e:
print("invalid input:", e)
print("exercised: pins.search / pins.get")
Full-text search over Pinterest pins. Returns pins matching the query with metadata including title, description, image, pinner, board, and creation date. Results are auto-iterated via bookmark-based pagination. Each pin includes its source domain and external link when available.
| Param | Type | Description |
|---|---|---|
| queryrequired | string | Search query for Pinterest pins (e.g. 'home decor', 'cats', 'travel'). |
| bookmark | string | Pagination bookmark from a previous response's next_bookmark field. Omit for first page. |
{
"type": "object",
"fields": {
"pins": "array of pin objects with id, title, description, link, domain, created_at, image_url, dominant_color, pinner_username, pinner_full_name, board_name, board_url",
"result_count": "number of pins returned in this page",
"next_bookmark": "pagination bookmark for the next page, empty string when no more results"
},
"sample": {
"data": {
"pins": [
{
"id": "42713896465703314",
"link": "",
"title": "cat",
"domain": "Uploaded by user",
"board_url": "/g_honorato/memes-icons/",
"image_url": "https://i.pinimg.com/736x/fa/b5/dc/fab5dc1d3bb9ef9741e496c22a9786ec.jpg",
"board_name": "memes icons",
"created_at": "Sat, 04 Jul 2026 19:09:13 +0000",
"description": "#cute #cat #kitten #pfp #cutecat",
"dominant_color": "#996e85",
"pinner_username": "g_honorato",
"pinner_full_name": "Gabriela Honorato"
}
],
"result_count": 10,
"next_bookmark": "Y2JVSG81V2sxcmNH..."
},
"status": "success"
}
}About the Pinterest API
Endpoints
The search_pins endpoint accepts a query string and returns a page of matching pins. Each pin object includes id, title, description, image_url, dominant_color, link, domain, created_at, pinner_username, and board details. The result_count field tells you how many pins are on the current page, and next_bookmark holds the cursor for the next page — pass it back as the bookmark parameter to iterate through results. An empty next_bookmark indicates the last page.
Pin Detail
The get_pin endpoint accepts either a numeric pin ID (e.g. 620441286183808599) or a full Pinterest URL. The response adds fields not present in search results: save_count, board_url, board_name, and description as a standalone field alongside the aggregated save_count for saves and repins. The image_url is normalized to a 736px-wide version. The link and domain fields identify the original source the pin points to, when one exists.
Data Coverage
Both endpoints return publicly visible pin data. The search_pins endpoint reflects the same index Pinterest exposes through its search interface, ordered by relevance and recency. Results include pins from any board or pinner that has not been made private. The created_at field is returned as a date string directly from Pinterest's pin metadata.
The Pinterest API is a managed, monitored endpoint for pinterest.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when pinterest.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official pinterest.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Monitor trending topics on Pinterest by searching keywords and sorting results by
created_at. - Aggregate product inspiration boards by searching category terms and extracting
linkanddomainfields to find source retailers. - Build a pinner analytics tool using
pinner_usernameandsave_countfromget_pinresponses. - Enrich a content database with Pinterest imagery by fetching
image_urlfor matching pins viasearch_pins. - Track how specific content spreads on Pinterest by querying a brand name and logging
save_countover time usingget_pin. - Research dominant color palettes for a design project by collecting
dominant_colorvalues fromsearch_pinsresults. - Identify top boards for a niche by extracting
board_nameandboard_urlfields across multiple searches.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Pinterest have an official developer API?+
What engagement data does `get_pin` return?+
get_pin returns save_count, which aggregates saves and repins. It does not currently return comment text or a list of individual users who saved a pin — only the aggregated count. You can fork this API on Parse and revise it to add a comments endpoint if that data is needed.Does `search_pins` return pins from private boards?+
Is there a way to browse pins by board or by a specific pinner's profile?+
search_pins and direct pin lookup via get_pin. It does not expose board browsing or profile-level feeds. You can fork this API on Parse and revise it to add a board or profile endpoint.How does pagination work in `search_pins`?+
next_bookmark string; pass it as the bookmark parameter in your next request to fetch the following page. When next_bookmark is an empty string, you have reached the last available page for that query.