Pinterest APIpinterest.com ↗
Search Pinterest pins by keyword via one endpoint. Returns pin title, description, image URL, pinner, board, source domain, and creation date with pagination.
What is the Pinterest API?
The Pinterest API exposes one endpoint — search_pins — that returns up to paginated pages of pin results matching a free-text query, with 10 distinct fields per pin including image URL, pinner username, source domain, external link, and creation date. It covers the full Pinterest catalog of public pins and supports bookmark-based pagination to walk through result sets of any depth.
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, InvalidQuery
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 inspection.
pin = client.pins.search(query="cats", limit=1).first()
if pin:
print(pin.id, pin.title, pin.pinner_username, pin.image_url)
# Typed error: wrap a call that may reject input.
try:
for p in client.pins.search(query="travel photography", limit=2):
print(p.title, p.pinner_full_name)
except InvalidQuery as e:
print("invalid query:", e)
print("exercised: pins.search")
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
What the API Returns
The search_pins endpoint accepts a query string and returns an array of pin objects. Each pin includes id, title, description, link (the external URL the pin points to), domain (the source site of that link), created_at, image_url, dominant_color, pinner_username, and pinner_full_name. The response also includes result_count for the current page and a next_bookmark string for pagination.
Pagination
Results are paginated using an opaque bookmark parameter. Omit it on the first request, then pass the next_bookmark value from each response as the bookmark input on the next request. An empty string for next_bookmark signals the end of the result set. This allows full traversal of large result sets for a given query without any additional configuration.
Data Coverage
All returned pins are public Pinterest content. Each pin's domain and link fields expose the external source the pinner referenced, making the data useful for tracking which external sites are most frequently pinned for a given topic. The dominant_color field provides a hex-value color extracted from the pin's image, which can be used for visual clustering or filtering. Creation timestamps (created_at) allow sorting and filtering results by recency after retrieval.
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 which external domains are most frequently pinned for a given product category using the
domainfield - Build a trend-detection tool by querying
search_pinsregularly and comparingcreated_attimestamps across crawls - Aggregate pin images and dominant colors to analyze visual trends in a niche like interior design or fashion
- Collect pinner usernames across a topic to identify prolific creators in a vertical
- Index Pinterest content for a niche search engine using pin titles, descriptions, and external links
- Track brand mentions by querying a brand name and collecting the
linkanddomainfields from results - Build a content inspiration tool that surfaces recent pins with images and metadata for a keyword
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Pinterest have an official developer API?+
What does the `search_pins` endpoint return beyond the pin image?+
id, title, description, image_url, dominant_color, created_at, the pinner's pinner_username and pinner_full_name, and the external link and domain the pin references. Board-level metadata is not currently returned at the pin level in this endpoint.Can I retrieve a specific user's profile or follower count through this API?+
search_pins, but it does not expose dedicated profile endpoints, follower counts, or board-level statistics. You can fork this API on Parse and revise it to add a profile or board endpoint.How does pagination work and when does it end?+
next_bookmark field. Pass that value as the bookmark parameter in your next request to retrieve the following page. When next_bookmark returns an empty string, there are no more results for that query.Does the API return private or login-required pins?+
result_count and available results will reflect only the public index for the given query.