# Pinterest API scraper — public Pinterest data: pin detail & comments, profiles, boards, board pins, related pins, search (pins / users / boards / videos) and autocomplete suggestions from pinterest.com (no account required)

> Search Pinterest pins by keyword. Returns pin id/title/description/image/link/save-count with the pinner. Paginate with meta.bookmark.
> ReefAPI engine `pinterest` · 13 endpoints · clean JSON, no scraping or browsers to manage.

## How to call
- **Endpoint:** `POST https://api.reefapi.com/pinterest/v1/<action>` with a JSON body.
- **Auth:** header `x-api-key: <YOUR_REEFAPI_KEY>` — create one free (1,000 credits, no card): https://reefapi.com/signup
- **Response (every call):** `{ ok: boolean, data: ..., meta: { record_count, credits, ... }, error: { code, message } }` — branch on `ok`. Failed or blocked calls are free.
- **One key + one shared credit pool** across every ReefAPI API. Per-call credits are listed on each endpoint below.
- **Use it from an AI agent (MCP):** connect `https://api.reefapi.com/mcp` (remote streamable-http, `Authorization: Bearer <key>`) and your assistant can call these actions directly.

## Endpoints

### POST /pinterest/v1/search_pins — 1 credit
Search Pinterest pins by keyword. Returns pin id/title/description/image/link/save-count with the pinner. Paginate with meta.bookmark.

**Parameters:**
- `query` (string, required) — Free-text search query (a topic, brand, product or idea).
- `limit` (integer, optional, default 25) — How many items to return per page (1–100, default 25). Use the returned meta.bookmark to fetch the next page.
- `bookmark` (string, optional) — Pagination cursor — pass the previous response's meta.bookmark to get the next page. Omit for page one.

**Returns:** pins[]{id, url, title, description, image_url, link, domain, repin_count, is_video, pinner}, bookmark

**Example request body:**
```json
{
  "query": "minimalist home office",
  "limit": 10
}
```

### POST /pinterest/v1/search_videos — 1 credit
Search Pinterest video pins (Idea Pins / video) by keyword. Same shape as search_pins but scoped to video content (image_url + video_url). Paginate with meta.bookmark.

**Parameters:**
- `query` (string, required) — Free-text search query (a topic, brand, product or idea).
- `limit` (integer, optional, default 25) — How many items to return per page (1–100, default 25). Use the returned meta.bookmark to fetch the next page.
- `bookmark` (string, optional) — Pagination cursor — pass the previous response's meta.bookmark to get the next page. Omit for page one.

**Returns:** pins[]{id, url, title, image_url, video_url, is_video, repin_count, pinner}, bookmark

**Example request body:**
```json
{
  "query": "minimalist home office"
}
```

### POST /pinterest/v1/search_users — 1 credit
Search Pinterest users/creators by keyword. Returns username/profile stats/avatar.

**Parameters:**
- `query` (string, required) — Free-text search query (a topic, brand, product or idea).
- `limit` (integer, optional, default 25) — How many items to return per page (1–100, default 25). Use the returned meta.bookmark to fetch the next page.
- `bookmark` (string, optional) — Pagination cursor — pass the previous response's meta.bookmark to get the next page. Omit for page one.

**Returns:** users[]{id, username, full_name, follower_count, board_count, pin_count, avatar_url}, bookmark

**Example request body:**
```json
{
  "query": "minimalist home office"
}
```

### POST /pinterest/v1/search_boards — 1 credit
Search Pinterest boards by keyword. Returns board name/url/description/pin-count/owner.

**Parameters:**
- `query` (string, required) — Free-text search query (a topic, brand, product or idea).
- `limit` (integer, optional, default 25) — How many items to return per page (1–100, default 25). Use the returned meta.bookmark to fetch the next page.
- `bookmark` (string, optional) — Pagination cursor — pass the previous response's meta.bookmark to get the next page. Omit for page one.

**Returns:** boards[]{id, name, url, description, pin_count, follower_count, owner}, bookmark

**Example request body:**
```json
{
  "query": "minimalist home office"
}
```

### POST /pinterest/v1/suggestions — 1 credit
Autocomplete / typeahead search suggestions for a partial query — the dropdown Pinterest shows as you type. Great for keyword research.

**Parameters:**
- `query` (string, required) — Free-text search query (a topic, brand, product or idea).

**Returns:** suggestions[]{term, display, type}

**Example request body:**
```json
{
  "query": "minimalist home office"
}
```

### POST /pinterest/v1/pin — 1 credit
Full detail for one pin: title, description, image, video, outbound link/domain, save & comment & share counts, reactions, hashtags, board, dominant color, product/price (when a shopping pin) and the pinner. Provide pin_id or pin_url.

**Parameters:**
- `pin_id` (string, optional) — Numeric pin id (the digits in pinterest.com/pin/<pin_id>/). Provide pin_id OR pin_url.
- `pin_url` (string, optional) — Full pin URL (alternative to pin_id).

**Returns:** pin{id, url, title, description, image_url, video_url, link, domain, repin_count, comment_count, share_count, reaction_counts, hashtags, board, product, pinner}

### POST /pinterest/v1/pin_comments — 1 credit
Public comments & 'Tried it' notes on a pin: text, like/helpful counts, commenter and whether the pin owner highlighted it. Provide pin_id or pin_url. Paginate with meta.bookmark.

**Parameters:**
- `pin_id` (string, optional) — Numeric pin id (the digits in pinterest.com/pin/<pin_id>/). Provide pin_id OR pin_url.
- `pin_url` (string, optional) — Full pin URL (alternative to pin_id).
- `limit` (integer, optional, default 25) — How many items to return per page (1–100, default 25). Use the returned meta.bookmark to fetch the next page.
- `bookmark` (string, optional) — Pagination cursor — pass the previous response's meta.bookmark to get the next page. Omit for page one.

**Returns:** comments[]{id, text, type, like_count, helpful_count, highlighted_by_pin_owner, user}, bookmark

### POST /pinterest/v1/related_pins — 1 credit
'More like this' pins related to a source pin. Provide pin_id or pin_url.

**Parameters:**
- `pin_id` (string, optional) — Numeric pin id (the digits in pinterest.com/pin/<pin_id>/). Provide pin_id OR pin_url.
- `pin_url` (string, optional) — Full pin URL (alternative to pin_id).
- `limit` (integer, optional, default 25) — How many items to return per page (1–100, default 25). Use the returned meta.bookmark to fetch the next page.
- `bookmark` (string, optional) — Pagination cursor — pass the previous response's meta.bookmark to get the next page. Omit for page one.

**Returns:** pins[]{id, url, title, image_url, link, repin_count, pinner}, bookmark

### POST /pinterest/v1/profile — 1 credit
Public profile for a username: name, bio, follower/following/board/pin counts, avatar, website.

**Parameters:**
- `username` (string, required) — Pinterest username (the handle in pinterest.com/<username>/).

**Returns:** profile{id, username, full_name, bio, follower_count, following_count, board_count, pin_count, avatar_url, website_url}

**Example request body:**
```json
{
  "username": "nike"
}
```

### POST /pinterest/v1/user_boards — 1 credit
Public boards owned by a username: name, url, description, pin-count, cover image.

**Parameters:**
- `username` (string, required) — Pinterest username (the handle in pinterest.com/<username>/).

**Returns:** boards[]{id, name, url, description, pin_count, cover_image_url, owner}

**Example request body:**
```json
{
  "username": "nike"
}
```

### POST /pinterest/v1/user_pins — 1 credit
Pins created by a username (their feed). Paginate with meta.bookmark.

**Parameters:**
- `username` (string, required) — Pinterest username (the handle in pinterest.com/<username>/).
- `limit` (integer, optional, default 25) — How many items to return per page (1–100, default 25). Use the returned meta.bookmark to fetch the next page.
- `bookmark` (string, optional) — Pagination cursor — pass the previous response's meta.bookmark to get the next page. Omit for page one.

**Returns:** pins[]{id, url, title, description, image_url, link, repin_count, pinner}, bookmark

**Example request body:**
```json
{
  "username": "nike"
}
```

### POST /pinterest/v1/board — 1 credit
Board metadata: name, description, pin & follower & section counts, cover image, owner. Provide board_url or username + board.

**Parameters:**
- `board_url` (string, optional) — Full board URL (alternative to username + board).
- `username` (string, optional) — Pinterest username (the handle in pinterest.com/<username>/).
- `board` (string, optional) — Board slug — the segment after the username in a board URL (also accepted as 'board_slug'). Combine with username, or pass board_url.

**Returns:** board{id, name, url, description, pin_count, follower_count, section_count, owner}

### POST /pinterest/v1/board_pins — 1 credit
Pins inside a board. Provide board_url or username + board. Paginate with meta.bookmark.

**Parameters:**
- `board_url` (string, optional) — Full board URL (alternative to username + board).
- `username` (string, optional) — Pinterest username (the handle in pinterest.com/<username>/).
- `board` (string, optional) — Board slug — the segment after the username in a board URL (also accepted as 'board_slug'). Combine with username, or pass board_url.
- `limit` (integer, optional, default 25) — How many items to return per page (1–100, default 25). Use the returned meta.bookmark to fetch the next page.
- `bookmark` (string, optional) — Pagination cursor — pass the previous response's meta.bookmark to get the next page. Omit for page one.

**Returns:** pins[]{id, url, title, description, image_url, link, repin_count, pinner}, bookmark

## More
- Try it live, no code: https://reefapi.com/playground?engine=pinterest
- Human docs page: https://reefapi.com/docs/pinterest
- Every ReefAPI API in one file (for your AI): https://reefapi.com/llms-full.txt
