Looking for the overview — what this API returns, what it costs, and a call you can run without a key? See the Pinterest API page →
Social Media

Pinterest API & Scraper

The Pinterest API returns public Pinterest data — pins, boards, profiles and search — as clean JSON.

13 actionsLive JSON1,000 free credits$0.67–$1.50 / 1,000 creditsMCP-ready
Get a free keyOpen in playground

🤖 Using an AI assistant? Copy this link into ChatGPT / Claude / Cursor — it reads every endpoint and parameter instantly and tells you if this API fits your use case.

The primary search_pins endpoint returns pins with id, URL, title, description, image, link, domain, repin count, video flag and pinner, and you can also search videos, users and boards, pull a pin and its comments, related pins, a profile and user boards. It is built for content research, trend analysis and social-marketing tools that need public Pinterest data without a login or a scraper. One ReefAPI key, one shared credit pool, the standard envelope.

Reference

Pin ids, board slugs, image sizes and which fields only the pin action carries

The two things that catch people out here are that a save count is not on a search row, and that the pin timestamp is not ISO 8601. Everything below came off live calls on 2026-08-27: search_pins for "minimalist home office", pin 99360735500167749, and the nike profile with its boards.

ThingMeasured shapeWhich action returns it
pin_id99360735500167749, the digits in pinterest.com/pin/<id>/pin, comments and related_pins all accept pin_id or pin_url
board id99360804217844427, the same numeric space as pins but a different objectboard.id on a full pin row, or user_boards and board
board slugnike-running, the path segment after the usernameboard and board_pins, combined with username, or pass board_url
full-size imagehttps://i.pinimg.com/originals/a7/66/56/....jpgpin.image_url and full search_pins rows
avatar and board coveri.pinimg.com/75x75_RS/... and i.pinimg.com/200x150/...pinner.avatar_url and board.cover_image_url
created_at"Thu, 04 Oct 2012 21:50:37 +0000", RFC 2822 rather than ISO 8601pin and full search_pins rows
repin_count, comment_count, share_count4838, 35 and 23 on pin 99360735500167749pin only. Search rows carry none of the three
source linklink "http://www.flickr.com/photos/kentbrew/6851755809/" plus domain "flickr.com"pin, and the search rows that have an outbound link (3 of 11 measured)
aggregated_pin_id4793404135709870511pin only. It groups every save of the same underlying image

search_pins mixes Pinterest's own interstitial cards into the result list. On a measured "minimalist home office" call with limit 10, eleven rows came back and four of them carried only id, url and is_video, with no image_url, description, board or created_at. Filter on the presence of image_url if you only want real pins, and treat limit as approximate rather than exact.

Live example

Real request and response JSON

Captured from the indexed primary action, search_pins, on .

Captured request
{
  "method": "POST",
  "url": "https://api.reefapi.com/pinterest/v1/search_pins",
  "headers": {
    "x-api-key": "$REEF_KEY",
    "content-type": "application/json"
  },
  "body": {
    "query": "minimalist home office",
    "limit": 10
  }
}
Captured response
{
  "ok": true,
  "meta": {
    "api": "pinterest",
    "endpoint": "search_pins",
    "mode": "live",
    "latency_ms": 3197.4,
    "record_count": 12,
    "bytes": 1077369,
    "cache_hit": false,
    "method": "internal_resource_json"
  },
  "data": {
    "pins": [
      {
        "id": "[redacted-phone]",
        "url": "https://www.pinterest.com/pin/[redacted-phone]/",
        "title": "Explore featured boards",
        "is_video": false
      },
      {
        "id": "[redacted-phone]",
        "url": "https://www.pinterest.com/pin/[redacted-phone]/",
        "is_video": false,
        "pinner": {
          "username": "pinterestman",
          "follower_count": 9095,
          "is_verified_merchant": false,
          "avatar_url": "https://i.pinimg.com/75x75_RS/1c/b5/61/1cb561c8e7b9c709f78d110a4b5f0863.jpg"
        }
      },
      {
        "id": "[redacted-phone]",
        "url": "https://www.pinterest.com/pin/[redacted-phone]/",
        "is_video": false,
        "pinner": {
          "username": "homedecor",
          "follower_count": 26494,
          "is_verified_merchant": false,
          "avatar_url": "https://i.pinimg.com/75x75_RS/20/ee/75/20ee75eb55a815f82f1fa6617233d83d.jpg"
        }
      }
    ],
    "bookmark": "Y2JVSG81V2sxcmNHRlpWM1J5VFVaU2NscEhSbE5XYlhjeVZsZHpNVlV4U25Sa1JGSlhVak5TVkZreWMzZGtNRFZYVm14V1YxSldjRkZXVjNSclZHMVJlRlZzV2xaaVJYQnhWbTEwYzA1R1ZuUmpNMmhWVWpCd01WZFVUbTlXVlRGWVZXdGtZVlpXVlRGV2JGcEhWbFpTZEZKdGJGZGhNVlkwVm10YWIyUXhiRmhTYmtwUFYwWktXVlpyVm5kVU1WcHhVVzFHYWxKc1JqUldWM1IzVkRGS2RHVklhRmROYWtaNlYxWmFZVkpzV25GVWJGWnBVakZLU0ZaR1dsWk5WbHBYVTJ4c2FsSXdXbGhVVm1RelRWWlplRmRzVG1oTmEzQlhWREZhVjFZeVNsaGxSVGxoVmpOU00xbHFSbE5XYkZaelUyczFVMVpGV2pSV2FrWnZZVEZTZEZOc1drOVdlbXhXVkZWYVMyVnNiSE5YYmtwc1ZteGFXbGt3VlRWVWJVcEdWMVJHV0dKWVVsZFVWbHBMWXpGa1dXTkhkR3hoYTBVMVdtdGFWMU5YU2paVmJYaFRWMGRvUmxkc1ZsZGhNV1J6"
  }
}
Actions

What the Pinterest API does

ActionDescriptionConcrete use caseKey params
search_pinsSearch Pinterest pins by keyword. Returns pin id/title/description/image/link/save-count with the pinner. Paginate with meta.bookmark.Social-listening tools call search_pins to search Pinterest pins by keyword.query, limit, bookmark
search_videosSearch 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.Creator and influencer platforms call search_videos to search Pinterest video pins (Idea Pins / video) by keyword.query, limit, bookmark
search_usersSearch Pinterest users/creators by keyword. Returns username/profile stats/avatar.Brand-monitoring teams call search_users to search Pinterest users/creators by keyword.query, limit, bookmark
search_boardsSearch Pinterest boards by keyword. Returns board name/url/description/pin-count/owner.Audience analysts call search_boards to search Pinterest boards by keyword.query, limit, bookmark
suggestionsAutocomplete / typeahead search suggestions for a partial query — the dropdown Pinterest shows as you type. Great for keyword research.Social-listening tools call suggestions to get autocomplete / typeahead search suggestions for a partial query.query
pinFull 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.Creator and influencer platforms call pin to get full detail for one pin.pin_id, pin_url, id
pin_commentsPublic 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.Brand-monitoring teams call pin_comments to get public comments & 'Tried it' notes on a pin.pin_id, pin_url, id, limit, bookmark
related_pins'More like this' pins related to a source pin. Provide pin_id or pin_url.Audience analysts call related_pins to get 'More like this' pins related to a source pin.pin_id, pin_url, id, limit, bookmark
profilePublic profile for a username: name, bio, follower/following/board/pin counts, avatar, website.Social-listening tools call profile to get public profile for a username.username
user_boardsPublic boards owned by a username: name, url, description, pin-count, cover image.Creator and influencer platforms call user_boards to get public boards owned by a username.username
user_pinsPins created by a username (their feed). Paginate with meta.bookmark.Brand-monitoring teams call user_pins to get pins created by a username (their feed).username, limit, bookmark
boardBoard metadata: name, description, pin & follower & section counts, cover image, owner. Provide board_url or username + board.Audience analysts call board to get board metadata.board_url, username, board, board_slug
board_pinsPins inside a board. Provide board_url or username + board. Paginate with meta.bookmark.Social-listening tools call board_pins to get pins inside a board.board_url, username, board, board_slug, limit, ...
Code samples

Call search_pins from your stack

curl -X POST https://api.reefapi.com/pinterest/v1/search_pins \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"query":"minimalist home office","limit":10}'
MCP one-liner
Ask your MCP-connected assistant: call reefapi.pinterest.search_pins with {"query":"minimalist home office","limit":10}.
Use cases

Who uses this API and why

  • Content and trend teams call search_pins to find top-performing pins and rising visual themes.
  • Brand-monitoring tools use search_pins by domain to see which of a site's pages get repinned.
  • Social-marketing tools use profile and user_boards to study a competitor's Pinterest strategy.
FAQ

Questions developers ask before integrating

Why do some search_pins rows have no image, title or description?

They are not pins. Pinterest injects module cards into its own search feed, and they come through as rows with only id, url and is_video, sometimes plus a stray title like "Explore featured boards". A live call for "minimalist home office" returned 11 rows of which 4 were these thin cards. A full pin row always has image_url, description, board, domain, dominant_color and created_at, so test for image_url and drop the rest.

Where do I get a pin's save or repin count?

From the pin action, not from search. A live pin read of 99360735500167749 returned repin_count 4838, comment_count 35 and share_count 23, none of which appear on any search_pins or board_pins row. If you need engagement for a list of pins, collect the ids from search and then call pin for each one.

Is created_at ISO 8601?

No. Pinterest returns it in RFC 2822 form, for example "Thu, 04 Oct 2012 21:50:37 +0000", which most ISO date parsers will refuse. Use an RFC 2822 or email-date parser, or convert once at ingest. The offset is always +0000 in the responses measured, so the value is effectively UTC.

Does the outbound source link come through?

Yes, when the pin has one. A pin that points somewhere returns both link, the full destination URL, and domain, the host on its own. Measured examples: link http://www.flickr.com/photos/kentbrew/6851755809/ with domain flickr.com, and a shopping pin with domain link.amazon. Plenty of pins have no destination at all, and on those two fields are simply absent from the object rather than null, so use a key check.

Why does a profile report pin_count 0 when the account clearly has pins?

pin_count on a profile is Pinterest's created-pins counter for that account, and brand accounts that only save into boards read 0. A live profile read of nike on 2026-08-27 returned pin_count 0, board_count 10 and follower_count 1,088,703, while user_boards for the same account returned 9 public boards holding 61, 114, 194 pins and more. board_count can also exceed the number of boards user_boards returns, because it counts boards that are not on the public profile grid. Sum board.pin_count if you want a real total.

What image sizes does the API return?

Three, each on a different field, and each a different host path on i.pinimg.com. image_url on a pin is the /originals/ path, the full-resolution file. board.cover_image_url is the /200x150/ thumbnail. pinner.avatar_url is the /75x75_RS/ square. The paths are stable enough to swap by hand, but only the originals path is guaranteed to exist for every pin.

What is reaction_counts, and why is it usually empty?

It is Pinterest's per-reaction breakdown, keyed by reaction id. On every search_pins row measured it came back as an empty object {}, and on the pin action it returned {"1": 4} for a pin with four reactions of type 1. Empty means nobody reacted, not that the field failed, so read it as zero rather than as missing.

Can I use this for Pinterest keyword research?

That is what suggestions is for. It returns the typeahead dropdown for a partial query, so "home off" returned 12 rows on 2026-08-27, each shaped {term, display, type}, with type "query" on all of them and terms including "home office", "home office ideas", "home office inspiration" and "home office setup". There is no volume figure attached; the ordering is Pinterest's own ranking.

What is the Pinterest API?

Pinterest API is a ReefAPI endpoint group for pinterest It returns live JSON through POST requests under /pinterest/v1.

Is the Pinterest API free to try?

Yes. ReefAPI starts with 1,000 free credits, no card required. Pinterest calls use the same shared credit balance as every other ReefAPI engine.

Do I need a Pinterest login or account?

No login to Pinterest is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.

How fresh is the Pinterest data?

The page example is captured from a live search_pins call, and production requests fetch live data through ReefAPI rather than a static sample.

How many credits does the Pinterest API use?

Pinterest actions currently cost 1 credit per successful call. Failed or blocked calls are free, and all APIs draw from one credit pool.

Can I call Pinterest from an AI assistant or MCP client?

Yes. Connect ReefAPI once through MCP and your assistant can call pinterest actions with the same key, credit pool and JSON envelope used by normal REST requests.

docs / pinterest

Pinterest

Pinterest

base /pinterest/v113 endpoints
post/pinterest/v1/search_pins1 credit

Search Pinterest pins by keyword. Returns pin id/title/description/image/link/save-count with the pinner. Paginate with meta.bookmark.

ParameterAllowed / rangeDescription
queryrequiredFree-text search query (a topic, brand, product or idea).
limit = 25optional1–100How many items to return per page (1–100, default 25). Use the returned meta.bookmark to fetch the next page.
bookmarkoptionalPagination cursor — pass the previous response's meta.bookmark to get the next page. Omit for page one.
Try in playground →
post/pinterest/v1/search_videos1 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.

ParameterAllowed / rangeDescription
queryrequiredFree-text search query (a topic, brand, product or idea).
limit = 25optional1–100How many items to return per page (1–100, default 25). Use the returned meta.bookmark to fetch the next page.
bookmarkoptionalPagination cursor — pass the previous response's meta.bookmark to get the next page. Omit for page one.
Try in playground →
post/pinterest/v1/search_users1 credit

Search Pinterest users/creators by keyword. Returns username/profile stats/avatar.

ParameterAllowed / rangeDescription
queryrequiredFree-text search query (a topic, brand, product or idea).
limit = 25optional1–100How many items to return per page (1–100, default 25). Use the returned meta.bookmark to fetch the next page.
bookmarkoptionalPagination cursor — pass the previous response's meta.bookmark to get the next page. Omit for page one.
Try in playground →
post/pinterest/v1/search_boards1 credit

Search Pinterest boards by keyword. Returns board name/url/description/pin-count/owner.

ParameterAllowed / rangeDescription
queryrequiredFree-text search query (a topic, brand, product or idea).
limit = 25optional1–100How many items to return per page (1–100, default 25). Use the returned meta.bookmark to fetch the next page.
bookmarkoptionalPagination cursor — pass the previous response's meta.bookmark to get the next page. Omit for page one.
Try in playground →
post/pinterest/v1/suggestions1 credit

Autocomplete / typeahead search suggestions for a partial query — the dropdown Pinterest shows as you type. Great for keyword research.

ParameterAllowed / rangeDescription
queryrequiredFree-text search query (a topic, brand, product or idea).
Try in playground →
post/pinterest/v1/pin1 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.

ParameterAllowed / rangeDescription
pin_idoptionalNumeric pin id (the digits in pinterest.com/pin/<pin_id>/). Provide pin_id OR pin_url.
pin_urloptionalFull pin URL (alternative to pin_id).
Try in playground →
post/pinterest/v1/pin_comments1 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.

ParameterAllowed / rangeDescription
pin_idoptionalNumeric pin id (the digits in pinterest.com/pin/<pin_id>/). Provide pin_id OR pin_url.
pin_urloptionalFull pin URL (alternative to pin_id).
limit = 25optional1–100How many items to return per page (1–100, default 25). Use the returned meta.bookmark to fetch the next page.
bookmarkoptionalPagination cursor — pass the previous response's meta.bookmark to get the next page. Omit for page one.
Try in playground →
post/pinterest/v1/profile1 credit

Public profile for a username: name, bio, follower/following/board/pin counts, avatar, website.

ParameterAllowed / rangeDescription
usernamerequiredPinterest username (the handle in pinterest.com/<username>/).
Try in playground →
post/pinterest/v1/user_boards1 credit

Public boards owned by a username: name, url, description, pin-count, cover image.

ParameterAllowed / rangeDescription
usernamerequiredPinterest username (the handle in pinterest.com/<username>/).
Try in playground →
post/pinterest/v1/user_pins1 credit

Pins created by a username (their feed). Paginate with meta.bookmark.

ParameterAllowed / rangeDescription
usernamerequiredPinterest username (the handle in pinterest.com/<username>/).
limit = 25optional1–100How many items to return per page (1–100, default 25). Use the returned meta.bookmark to fetch the next page.
bookmarkoptionalPagination cursor — pass the previous response's meta.bookmark to get the next page. Omit for page one.
Try in playground →
post/pinterest/v1/board1 credit

Board metadata: name, description, pin & follower & section counts, cover image, owner. Provide board_url or username + board.

ParameterAllowed / rangeDescription
board_urloptionalFull board URL (alternative to username + board).
usernameoptionalPinterest username (the handle in pinterest.com/<username>/).
boardoptionalBoard slug — the segment after the username in a board URL (also accepted as 'board_slug'). Combine with username, or pass board_url.
Try in playground →
post/pinterest/v1/board_pins1 credit

Pins inside a board. Provide board_url or username + board. Paginate with meta.bookmark.

ParameterAllowed / rangeDescription
board_urloptionalFull board URL (alternative to username + board).
usernameoptionalPinterest username (the handle in pinterest.com/<username>/).
boardoptionalBoard slug — the segment after the username in a board URL (also accepted as 'board_slug'). Combine with username, or pass board_url.
limit = 25optional1–100How many items to return per page (1–100, default 25). Use the returned meta.bookmark to fetch the next page.
bookmarkoptionalPagination cursor — pass the previous response's meta.bookmark to get the next page. Omit for page one.
Try in playground →
Comparing scraping APIs?ReefAPI vs Apify