Tony Wang6 分で読めますPinterestをスクレイピングする方法(2026年版・API & Python)
2026年にPinterestをスクレイピングする方法 — Pythonによる自作、ノーコードツール、または公開ピン・ボード・検索を扱う構造化API、そして公式APIが対応する範囲を解説します。
2026年にPinterestを最も手早くスクレイピングする方法は、正規化されたJSON — ピン、ボード、プロフィール、検索結果 — を返す構造化されたPinterest APIを呼び出すことです。Pinterestのボット許可リストや無限スクロールを突破するヘッドレスブラウザを操作する必要はありません。Pinterest自体のv5 APIも存在しますが、これは連携済みのビジネスアカウント自身のコンテンツを管理するために作られたものであり、任意の公開ピンやボードを読み取るためのものではありません。このガイドでは3つのアプローチすべてを取り上げ、それぞれが何を返すのか、どこで行き詰まるのか、そして法律面の基礎を解説します。
Pinterestデータをスクレイピングする理由
- トレンドとアイデアのリサーチ — ホームデコア、ファッション、フード、DIYで何が伸びているかを、他の場所でピークを迎える前に追跡します。
- ビジュアルコンテンツのデータセット — 公開ピンから画像とキャプションのペアを作成し、コンピュータービジョンやレコメンドモデルに使います。
- 競合ボードのモニタリング — 競合ブランドがどんなボードとピンをキュレーションしているか、フォロワー数がどう動いているかを確認します。
- AIビジョンとRAGパイプライン — 構造化されたピンのメタデータ(タイトル、説明、支配色、ソースドメイン)を、ビジュアルトレンドを推論するエージェントに供給します。
- アフィリエイトと商品発見 — 商品ページにリンクするピンを見つけ、どのドメインが最もリピンされているかを追跡します。
Pinterestのスクレイピングは合法ですか?
選択肢1:Pythonで自作する(そしてなぜ行き詰まるのか)
Pinterestはピンとボードのページを、scriptタグ(__PWS_DATA__ など)に埋め込まれたデータとしてレンダリングするため、素朴なスクレイパーはドキュメント化されたエンドポイントを呼ぶのではなくHTMLをパースすることになります。
import requests
from bs4 import BeautifulSoup
import json, re
resp = requests.get(
"https://www.pinterest.com/patrontequila/el-cafecito/",
headers={"User-Agent": "Mozilla/5.0"},
)
soup = BeautifulSoup(resp.text, "html.parser")
script = soup.find("script", {"id": "__PWS_DATA__"})
data = json.loads(script.string) if script else None
デモでは動作しますが、その後すぐに行き詰まります。
- ボット許可リスト — Pinterestの
robots.txtは公開された許可リストに載っていないユーザーエージェントをブロックし、承認されていない自動化トラフィックは、ファイルが技術的に何を許可しているかにかかわらず、すぐにフラグを立てられます。 - ページネーションではなく無限スクロール — ボード、検索結果、プロフィールのピングリッドはブックマークトークン付きのスクロールトリガーXHR呼び出しで読み込まれるため、単純なHTTPクライアントは最初のバッチしか見えません。
- 壊れやすい埋め込みJSON — scriptタグのペイロードの形はページテンプレートのバージョン間で変化するため、セレクターやJSONパスはリデザインのたびに壊れます。
- 画像の多いページ — Pinterestは
srcsetのバリアントと遅延読み込み画像で密集しており、生のHTMLから適切なサイズ(736x、originalsなど)を選ぶのはエラーが起きやすい作業です。
選択肢2:ノーコード/既製ツール
ブラウザ拡張機能のピン保存ツールやビジュアルスクレイパービルダーは、一度きりのリサーチ用にボードや検索結果をCSVにエクスポートできますが、実際のボリュームでは同じ許可リストとスクロールページネーションの問題にぶつかり、パイプライン向けの予測可能なフィールドは得られません。
選択肢3:構造化されたPinterest API
公開データを対象とする繰り返し可能なワークフローには、Pinterestスクレイピング APIが、実行するブラウザなしで正規化されたJSONを返します。公開ピンをキーワードで検索します。
curl "https://api.crawlora.net/api/v1/pinterest/search?query=minimalist+living+room" \
-H "x-api-key: $CRAWLORA_API_KEY"
import requests
resp = requests.get(
"https://api.crawlora.net/api/v1/pinterest/search",
headers={"x-api-key": "YOUR_API_KEY"},
params={"query": "minimalist living room"},
)
for pin in resp.json()["data"]["pins"]:
print(pin.get("title"), pin.get("link"))
検索のレスポンスは正規化されたJSONです(完全なスキーマはドキュメントを確認してください)。
{
"code": 200,
"msg": "OK",
"data": {
"query": "minimalist living room",
"pins": [
{
"id": "21673641953485811",
"url": "https://www.pinterest.com/pin/21673641953485811/",
"title": "Minimalist Luxury Living Spaces That Look Clean But Still Cozy",
"description": "Minimalist Luxury Living Spaces can feel cozy when the room uses texture, lighting, and practical furniture instead of extra clutter.",
"image_url": "https://i.pinimg.com/736x/da/b7/2a/dab72a3f9f2b9f18274752facb0349ef.jpg",
"domain": "impactdriverdrill.com",
"link": "https://impactdriverdrill.com/minimalist-luxury-living-spaces/",
"board_name": "Løkken hus",
"pinner_username": "annlizeth9550"
}
]
}
}
公開プロフィール、その人のピン、ボード、そして特定のボードのピンを取得します。
h = {"x-api-key": "YOUR_API_KEY"}
base = "https://api.crawlora.net/api/v1/pinterest"
user = requests.get(f"{base}/user/patrontequila", headers=h).json()["data"]
pins = requests.get(f"{base}/user/patrontequila/pins", headers=h).json()["data"]["pins"]
boards = requests.get(f"{base}/user/patrontequila/boards", headers=h).json()["data"]["boards"]
board = requests.get(f"{base}/board/patrontequila/el-cafecito", headers=h).json()["data"]
ボードの url フィールド(boards呼び出しから取得)が、/board/{username}/{slug} の slug の出どころです — 個別のボードを取得する前に、まずボード一覧が必要です。
IDで単一のピンを取得するか、Pinterestの「Ideas」タクソノミーを閲覧して、あるカテゴリー配下のトレンドピンを取得します。
pin = requests.get(f"{base}/pin/52846995624279072", headers=h).json()["data"]
categories = requests.get(f"{base}/categories", headers=h).json()["data"]["categories"]
animals_id = next(c["id"] for c in categories if c["slug"] == "animals")
idea = requests.get(f"{base}/ideas/{animals_id}", headers=h).json()["data"]
収集できるもの
- 検索 — キーワードによる公開ピン:タイトル、説明、画像URL、支配色、ソースドメインとリンク、ボード名、ピン投稿者のユーザー名。
- ピン — IDによる完全なピン詳細:上記に加えてコメント数、リピン数、作成日。
- ユーザー — ユーザー名による公開プロフィールのフィールド:表示名、bio、ウェブサイト、フォロワー・フォロー数、ピン・ボード数、アバター。
- ユーザーのピン/ボード — 公開プロフィールのピンまたはボード。各ボードには独自のピン数・フォロワー数・公開設定があります。
- ボード — 特定のボードのメタデータと、そのピンの1ページ分。
username/slugで指定します。 - カテゴリーとアイデア — Pinterestのトップレベル「Ideas」タクソノミー(10カテゴリー)と、それぞれのカテゴリー配下のトレンド公開ピン。
制約
- Pinterest自体にオープンな公開検索APIはありません。 公式のv5 APIは連携済みアカウント自身のピン、ボード、広告データにOAuthでスコープされており、任意の公開コンテンツを読み取る代替にはなりません — それこそが上記の検索・ボード・プロフィールエンドポイントが作られた目的です。
- ボット許可リスト。 Pinterestの
robots.txtはデフォルトで未登録のクローラーを禁止しています。承認されていない自動化トラフィックは、データが公開であってもブロックされるリスクがあります。 - 無限スクロールとカーソル。 ボード、プロフィール、検索結果は単純なページ番号ではなく、スクロールトリガーの呼び出しでページネーションされます — 管理されたAPIは、あなた自身がそれを再現する代わりにそれを吸収します。
- ユーザー名からslugへの一手間。 特定のボードを取得するにはその
slugが必要で、これはボード名ではなくユーザーのボード一覧から得られます。 - アイデンティティは個人データです。 ユーザー名、表示名、bioはGDPR/CCPAのもとで個人データにあたります。適法な根拠のもと、公開されている非個人フィールドのみを収集してください。
どこで使われるか
- トレンドリサーチ — ホーム、ファッション、フードの分野で伸びつつある美意識を、検索需要に現れる前に追跡します。
- 競合・ブランドモニタリング — 競合の公開ボードとピンの活動を時系列で観察します。
- コンテンツとデータセットパイプライン — 公開ピンの画像とメタデータをビジョンモデルやレコメンデーションシステムに供給します。
出典
収集を始める
まずは無料でお試しください: 任意の公開URLを無料ウェブスクレイパーにかけるか、Anti-Botチェッカーでサイトがボットをブロックするかどうかを確認できます。サインアップは不要です。
プレイグラウンドで検索エンドポイントを試し、APIドキュメントでスキーマを確認し、料金をご覧ください。ビジュアルソーシャルスタックの残りについてはInstagramをスクレイピングする方法とTikTokをスクレイピングする方法も、ウェブスクレイピングは合法かもあわせて参照してください。
よくある質問
Pinterestには公式の公開APIがありますか?
はい、Pinterestは公式のv5 REST APIを運用していますが、これはOAuthベースで、連携済みのビジネスアカウント自身のピン、ボード、広告データにスコープされています — そのアカウントの同意なしに、任意の公開ピン、ボード、検索結果へのオープンな読み取りアクセスは提供しません。
公開されているPinterestのピンやボードをスクレイピングするのは合法ですか?
厳密に公開されている非個人データのスクレイピングはリスクが低い部類に入り、hiQ v. LinkedInの判例では、公開データへのアクセスは米国においてCFAA違反にあたらないとされました。ただし、Pinterestの開発者ガイドラインは明示的に許可される場合を除き自動スクレイピングを禁止しており、robots.txtはデフォルトで未登録のボットを禁止しています。これは法的助言ではありません — Pinterestの規約を自分自身で確認してください。
自作のPinterestスクレイパーはなぜ行き詰まるのですか?
Pinterestはrobots.txtでボット許可リストを運用しており未登録のクローラーをブロックします。また、ボードや検索結果は単純なページ番号ではなくスクロールトリガーの呼び出しでページネーションされ、ページのデータはscriptタグに埋め込まれていて、その形はテンプレートのバージョン間で変化します。
ユーザー名しかない場合、ボードのピンをどう取得しますか?
まずユーザーのボードエンドポイントを呼び出し、各ボードの `url` フィールドから `slug` を取得します。次にそのusername/slugのペアをボードエンドポイントに渡すと、ボードのメタデータとそのピンの1ページ分が返されます。
Pinterestのピン取得APIはどんなフィールドを返しますか?
一般的なフィールドには、ピンのIDとURL、タイトル、説明、画像URL、支配色、ソースドメインと外部リンク、ボード名、ピン投稿者のユーザー名が含まれます。単一ピンの取得ではさらにコメント数、リピン数、作成日が加わります。
Pinterestのカテゴリーエンドポイントを使ってトレンドピンを見つけられますか?
はい。カテゴリーエンドポイントはPinterestのトップレベル「Ideas」タクソノミー(約10カテゴリー)を返し、各カテゴリーのIDをideasエンドポイントに渡すことで、そのカテゴリーの公開ピンを取得できます。
Pinterestのデータを収集する際に避けるべきことは何ですか?
ログインの内側にあるものは一切収集しないこと、ユーザー名やbioをGDPR/CCPAのもとで個人データとして扱うこと、Pinterestのボット許可リストを突破しないこと、そして適法な根拠のもとで公開されている非個人フィールドにとどめることです。