Önemli uyarı: Bu rehber yalnızca herkese açık, giriş gerektirmeyen Pinterest verilerine erişim için hazırlanmıştır. Pinterest'in Kullanım Şartları'na, ABD'de Computer Fraud and Abuse Act (CFAA) kapsamındaki ilgili yasalara ve AB'de GDPR kapsamındaki kişisel veri koruma kurallarına mutlaka uyulmalıdır. Kişisel verilerin toplanması veya izinsiz kullanımı bu kapsamda değildir.
2026'da Pinterest pin ve panoları nasıl scrape edilir? Kısa cevap: Pinterest'in herkese açık pin, pano akışı ve arama sonuçları sayfalarını, dahili Resource API uç noktalarını uygun HTTP başlıkları ve dönerken konumlandırılmış residential proxy'lerle kullanarak scrape edebilirsiniz. Bu rehberde, Python ve Node.js örnekleriyle üretim seviyesinde bir Pinterest scraper kurmanın tüm adımlarını ele alıyoruz.
Pinterest'te Herkese Açık Yüzeyler ve Giriş Duvarı
Pinterest'i bir geliştirici olarak scrape etmeden önce, hangi verilerin herkese açık olduğunu netleştirmek gerekir. Pinterest'te üç temel herkese açık yüzey bulunur:
- Pin sayfaları: Her pinin benzersiz bir URL'si vardır (örneğin
/pin/123456789/). Pin başlığı, açıklaması, görsel URL'si ve yönlendirme bağlantısı herkese açıktır. - Pano akışları (board feeds): Bir kullanıcıya ait pano,
/username/board-name/adresinde herkese açıktır ve pinleri JSON olarak döndüren dahili uç noktalar üzerinden sayfalanabilir. - Arama sonuçları: Pinterest arama sayfaları, anahtar kelimeye göre pin ve pano sonuçlarını herkese açık şekilde gösterir.
Buna karşılık ana sayfa akışı (home feed), kişiselleştirilmiş öneri pinleri ve giriş yapmış kullanıcılara özel bölümler, giriş duvarı (login wall) arkasındadır ve bu veriler bu rehberin kapsamı dışındadır. Giriş gerektiren veriler için Pinterest'in resmi Pinterest API v5 belgelerine başvurmalısınız.
Pinterest API v5 ve Sınırları
Pinterest, geliştiricilere resmi bir REST API sunar: Pinterest API v5. Bu API, pin oluşturma, pano yönetimi ve analitik verilerine erişim sağlar, ancak birkaç önemli sınırlaması vardır:
- Erişim, OAuth 2.0 ile giriş yapmış bir kullanıcı bağlamında çalışır; yani yalnızca kullanıcının kendi hesabıyla ilgili verilere izin verir.
- Herkese açık arama veya rastgele bir pano akışını doğrudan çekmek için uygun bir uç nokta sunmaz.
- Rate limit'ler hesap bazında uygulanır ve üretim ölçeğinde görsel-trend veri setleri için genellikle yetersizdir.
Bu nedenle, herkese açık pin ve pano verilerini ölçekli toplamak isteyen geliştiriciler genellikle dahili Resource API'ye yönelir.
Pinterest Dahili Resource API: Nasıl Çalışır?
Pinterest'in web arayüzü, sayfa içeriğini yüklemek için /resource/<ResourceName>/get/ biçiminde dahili uç noktalar kullanır. Bu uç noktalar, normal HTML sayfaları yerine JSON döndürür ve sayfalama için imleç (bookmark) mekanizması kullanır. Üç temel Resource uç noktası şunlardır:
- PinResource: Tek bir pinin tam detayını döndürür. URL örüntüsü:
/resource/PinResource/get/ - BoardFeedResource: Bir panodaki pinleri sayfalanmış olarak döndürür. URL örüntüsü:
/resource/BoardFeedResource/get/ - SearchResource: Anahtar kelimeye göre arama sonuçlarını döndürür. URL örüntüsü:
/resource/SearchResource/get/
Bu uç noktalara yapılan isteklerde iki önemli parametre bulunur:
?source_url=/username/board-name/&data={"options":{"board_id":"1234567890","page_size":25,"bookmarks":["first"]}}
Burada source_url, taklit edilen sayfanın yolunu belirtir ve data parametresi, URL kodlanmış bir JSON nesnesidir. bookmarks dizisi, sayfalama imlecini taşır; ilk istekte ["first"] gönderilir, sonraki isteklerde önceki yanıttan dönen imleç kullanılır.
Gerekli HTTP Başlıkları
Resource API uç noktaları, standart tarayıcı isteklerini taklit etmek için belirli başlıklar bekler. Eksik veya tutarsız başlıklar, isteklerin reddedilmesine yol açar:
| Başlık | Açıklama | Örnek Değer |
|---|---|---|
X-Pinterest-PWS-Handler | İstek bağlamını tanımlayan dahili işleyici adı | www/[username]/[board].js |
X-APP-VERSION | Pinterest web uygulamasının sürümü | 9a8b7c6 |
csrftoken | Oturum sürekliliği için CSRF token | Çerezlerden alınan değer |
User-Agent | Tutarlı bir masaüstü tarayıcı kimliği | Güncel Chrome UA dizesi |
csrftoken genellikle ilk sayfa ziyaretinde çerez olarak ayarlanır. Bu nedenle, oturum sürekliliği için sticky session (yapışkan oturum) kullanmak ve aynı IP üzerinden csrftoken alıp tekrar kullanmak kritiktir.
Anti-Bot Gerçekleri ve Neden Residential Proxy Gerekir
Pinterest, bot tespiti için IP bazlı rate limit'ler ve davranışsal bot skorlama uygular. Tek bir IP'den kısa sürede çok sayıda istek göndermek, 429 (Too Many Requests) yanıtlarına veya geçici IP yasaklarına yol açar. Ayrıca Pinterest'in arama ve öneri sonuçları coğrafi olarak yerelleştirilmiştir; farklı ülkelerden yapılan istekler farklı içerik döndürebilir.
Bu iki nedenden dolayı, bir Pinterest scraper'ı için dönen residential proxy'ler ve coğrafi hedefleme neredeyse zorunludur:
- Per-IP rate limit'lerini aşmak: İstekleri birden çok residential IP'ye dağıtarak, tek IP başına düşen istek sayısını sınırlar içinde tutabilirsiniz.
- Yerelleştirilmiş içerik: ABD merkezli trend verileri için
-country-US, Almanya için-country-DEbayrağı kullanarak doğru coğrafi sonuçlar alabilirsiniz. - Bot skorunu düşürmek: Gerçek ISP IP'lerinden gelen istekler, veri merkezi IP'lerine kıyasla çok daha az şüphe çekicidir.
ProxyHat residential proxy'leri, gate.proxyhat.com ağ geçidi üzerinden çalışır ve kullanıcı adında bayraklar ile geo-hedefleme ve sticky session sağlar. Kullanılabilir konumlar sayfasından desteklenen ülkeleri görebilirsiniz.
Python ile BoardFeedResource Sayfalama Örneği
Aşağıdaki Python örneği, ProxyHat HTTP ağ geçidi üzerinden bir Pinterest pano akışını sayfalar. Her yanıttan bir pinin id, title, görsel URL'si ve yönlendirme bağlantısını çıkarır.
import requests
import json
from urllib.parse import quote
PROXY = "http://user-country-US-session-abc123:PASSWORD@gate.proxyhat.com:8080"
PROXIES = {"http": PROXY, "https": PROXY}
HEADERS = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36",
"X-Pinterest-PWS-Handler": "www/[username]/[board].js",
"X-APP-VERSION": "9a8b7c6",
"Accept": "application/json",
}
def scrape_board(board_slug, max_pages=5):
base = "https://www.pinterest.com/resource/BoardFeedResource/get/"
bookmarks = ["first"]
pins = []
for page in range(max_pages):
data = json.dumps({
"options": {
"board_url": board_slug,
"page_size": 25,
"bookmarks": bookmarks,
}
})
params = {
"source_url": f"/{board_slug}/",
"data": data,
}
resp = requests.get(base, headers=HEADERS, params=params, proxies=PROXIES, timeout=30)
if resp.status_code != 200:
print(f"Sayfa {page}: HTTP {resp.status_code}, bekleniyor...")
break
payload = resp.json()
resource_resp = payload.get("resource_response", {})
results = resource_resp.get("data", [])
for pin in results:
pins.append({
"id": pin.get("id"),
"title": pin.get("title") or pin.get("grid_title"),
"image_url": pin.get("images", {}).get("orig", {}).get("url"),
"link": pin.get("link"),
})
bookmarks = resource_resp.get("bookmark") or payload.get("bookmarks", [])
if not bookmarks or bookmarks == ["-end-"]:
break
# Pacing: sayfalar arasında 2-4 saniye bekle
import time; time.sleep(3)
return pins
if __name__ == "__main__":
data = scrape_board("username/board-name", max_pages=10)
print(f"Toplam pin: {len(data)}")
print(json.dumps(data[:3], indent=2, ensure_ascii=False))
Bu örnekte -session-abc123 bayrağı, csrftoken sürekliliği için aynı IP'nin kullanılmasını sağlar. Farklı panolar için farklı session kimlikleri kullanarak IP başına düşen yükü dengeleyebilirsiniz. Web scraping kullanım senaryosu sayfamızda bu kalıbın daha fazla varyasyonunu bulabilirsiniz.
Node.js ile HTTP Ağ Geçidi Üzerinden Pinterest İsteği
Aşağıdaki Node.js örneği, ProxyHat'ın 8080 portundaki HTTP ağ geçidini kullanarak SearchResource'a istek gönderir:
const axios = require('axios');
const HttpsProxyAgent = require('https-proxy-agent');
const proxyUrl = 'http://user-country-US-session-search01:PASSWORD@gate.proxyhat.com:8080';
const agent = new HttpsProxyAgent(proxyUrl);
const headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36',
'X-Pinterest-PWS-Handler': 'www/search/[scope].js',
'X-APP-VERSION': '9a8b7c6',
'Accept': 'application/json',
};
async function searchPins(query) {
const data = JSON.stringify({
options: {
query: query,
scope: 'pins',
page_size: 25,
bookmarks: ['first'],
}
});
const params = new URLSearchParams({
source_url: `/search/pins/?q=${encodeURIComponent(query)}`,
data: data,
});
const url = `https://www.pinterest.com/resource/SearchResource/get/?${params.toString()}`;
try {
const resp = await axios.get(url, {
httpsAgent: agent,
headers: headers,
timeout: 30000,
});
const results = resp.data.resource_response?.data || [];
return results.map(pin => ({
id: pin.id,
title: pin.title || pin.grid_title,
image_url: pin.images?.orig?.url,
link: pin.link,
}));
} catch (err) {
console.error('Hata:', err.response?.status || err.message);
return [];
}
}
(async () => {
const pins = await searchPins('minimalist interior design');
console.log(`Bulunan pin: ${pins.length}`);
console.log(JSON.stringify(pins.slice(0, 3), null, 2));
})();
Sayfalama, Sticky Session ve Parmak İzi Riskleri
Bookmark / İmleç Sayfalama
Pinterest, sayfa numarası yerine imleç tabanlı sayfalama kullanır. Her yanıt, bir sonraki sayfa için bir bookmark değeri döndürür. İlk istekte ["first"] gönderilir; sonraki isteklerde önceki yanıttan dönen imleç kullanılır. Akış bittiğinde genellikle ["-end-"] döner.
İmleç değerleri bazen base64 kodlu uzun dizeler olabilir ve bunları olduğu gibi kullanmanız gerekir; değiştirmeye çalışmayın.
Sticky Session ile csrftoken Sürekliliği
Pinterest, csrftoken'ı çerez olarak ayarlar ve sonraki isteklerde bu token'ın gönderilmesini bekler. Eğer her istekte farklı bir IP kullanırsanız, token/IP uyumsuzluğu isteklerin reddedilmesine yol açabilir. ProxyHat'ta -session- bayrağı ile belirli bir oturum kimliği için aynı IP'yi sabitleyebilirsiniz:
http://user-country-US-session-board42:PASSWORD@gate.proxyhat.com:8080
Bu şekilde, bir pano scrape işlemi boyunca aynı IP ve dolayısıyla aynı csrftener kullanılır. Yeni bir panoya geçtiğinizde yeni bir session kimliği kullanarak IP'yi değiştirebilirsiniz.
Pacing ve Hız Sınırları
Üretim seviyesinde Pinterest scraping için agresif hızlardan kaçının. Pratik öneriler:
- Sayfalar arasında 2-5 saniye bekleme ekleyin.
- Tek bir IP'den dakikada 30-50'den fazla istek göndermeyin.
- 429 yanıtı aldığınızda en az 60 saniye bekleyin ve session kimliğini değiştirin.
- Paralel pano scrape'leri için farklı session kimlikleri ve farklı coğrafi konumlar kullanın.
User-Agent ve Parmak İzi Hijyeni
Bot tespiti yalnızca IP'ye dayanmaz; HTTP başlıklarındaki tutarsızlıklar da parmak izi riski oluşturur. Şu kurallara uymanız gerekir:
- Tek bir tutarlı User-Agent kullanın ve tüm isteklerde aynı kalsın.
Accept-Languagebaşlığını coğrafi konumla uyumlu tutun (örneğinen-US,en;q=0.9).- Tarayıcı benzeri
AcceptveAccept-Encodingbaşlıkları gönderin. - Başlık sıralamasını ve değerlerini istekler arasında değiştirmeyin.
Daha fazla proxy yapılandırma detayı için ProxyHat belgelerine bakabilirsiniz.
Sık Yapılan Hatalar ve Edge Case'ler
- Bookmarks'ı boş dizi göndermek:
[]yerine her zaman["first"]ile başlayın; aksi halde boş yanıt alırsınız. - JSON data parametresini URL kodlamadan göndermek:
dataparametresi mutlaka URL kodlanmış JSON olmalıdır;requestsbunu otomatik yapar ancak elle URL oluşturuyorsanız dikkat edin. - Sticky session olmadan csrftoken kullanmak: IP değiştiğinde token geçersiz olur ve 403 yanıtı alırsınız.
- Giriş duvarı arkasındaki verileri scrape etmeye çalışmak: Ana sayfa akışı ve kişiselleştirilmiş öneriler giriş gerektirir ve bu rehberin kapsamı dışındadır.
- Çok agresif hız: Dakikada 100+ istek, kısa sürede IP yasağına yol açar.
ProxyHat Kurulumu ve Yapılandırması
ProxyHat residential proxy'leri ile Pinterest scraping'e başlamak için:
- ProxyHat fiyatlandırma sayfasından ihtiyacınıza uygun bir residential proxy paketi seçin.
- Dashboard'a giriş yapın ve proxy kimlik bilgilerinizi alın.
- Yukarıdaki örneklerdeki
USERNAMEvePASSWORDalanlarını kendi kimlik bilgilerinizle değiştirin. - Coğrafi hedefleme için kullanıcı adında
-country-US,-country-DEgibi bayraklar kullanın. - Sticky session için
-session-<kimlik>bayrağını ekleyin.
ProxyHat ağ geçidi adresi her zaman gate.proxyhat.com'dur ve HTTP için port 8080, SOCKS5 için port 1080'dir. SERP takip ve Pinterest arama sonuçları için benzer proxy kalıpları kullanabilirsiniz.
Etik Scraping ve Resmi API Kullanımı
Scrape etmeden önce her zaman robots.txt dosyasını kontrol edin ve Pinterest'in Kullanım Şartları'na uygun hareket edin. Etik scraping için temel ilkeler:
- Yalnızca herkese açık, kişisel olmayan veri toplayın: Pin başlıkları, görsel URL'leri ve pano yapıları herkese açıktır; ancak kullanıcıların özel bilgilerini veya giriş duvarı arkasındaki verileri toplamayın.
- Hızı makul tutun: Pinterest'in sunucularını aşırı yüklemeyin; sayfalama aralarında bekleme ekleyin.
- Verileri yeniden yayınlamayın: Topladığınız pin verilerini Pinterest'in izni olmadan kendi platformunuzda yayınlamak telif hakkı ihlali olabilir.
- GDPR ve CCPA'ya dikkat edin: AB ve Kaliforniya kullanıcılarına ait kişisel verileri işlemek yasal yükümlülükler doğurur.
Üretim ortamında, özellikle ticari bir ürün için çalışıyorsanız, önce Pinterest'in resmi Pinterest API v5'i değerlendirin. Resmi API, rate limit'leri ve izin kapsamları ile daha öngörülebilir bir erişim sağlar. Ancak herkese açık arama ve pano verileri için resmi API uygun uç noktalar sunmadığında, bu rehberdeki yöntemler devreye girer.
Temel Çıkarımlar
Özet: Pinterest scraping, dahili Resource API uç noktaları (PinResource, BoardFeedResource, SearchResource) ve uygun HTTP başlıkları ile mümkündür. Başarı, doğru proxy stratejisine bağlıdır: residential IP'ler, coğrafi hedefleme, sticky session'lar ve makul hız. Her zaman herkese açık verilerle sınırlı kalın ve resmi API'yi üretim için tercih edin.
- Pinterest'in dahili Resource API'si, herkese açık pin ve pano verilerine JSON formatında erişim sağlar.
bookmarksimleç mekanizması, sayfalama için standarttır;["first"]ile başlayın.- Sticky session, csrftener sürekliliği için kritiktir;
-session-bayrağını kullanın. - Residential proxy'ler ve coğrafi hedefleme, IP yasağını önler ve yerelleştirilmiş içerik sağlar.
- Etik scraping, yalnızca herkese açık verilerle sınırlı kalmayı ve resmi API'yi üretim için değerlendirmeyi gerektirir.
SSS
2026'da Pinterest pin ve panoları nasıl scrape edilir?
Pinterest'in dahili Resource API uç noktalarını (PinResource, BoardFeedResource, SearchResource) uygun HTTP başlıkları ve dönen residential proxy'lerle kullanarak herkese açık pin ve pano verilerini JSON formatında çekebilirsiniz. İsteklerde source_url ve URL kodlanmış data parametresi gönderilir; sayfalama bookmarks imleci ile yapılır. İlk istekte ["first"] kullanılır, sonraki isteklerde önceki yanıttan dönen imleç kullanılır.
Pinterest scraping için proxy kullanımı neden önemlidir?
Pinterest, IP bazlı rate limit'ler ve davranışsal bot tespiti uygular. Tek IP'den çok sayıda istek, 429 yanıtlarına veya IP yasağına yol açar. Ayrıca arama ve öneri sonuçları coğrafi olarak yerelleştirilmiştir; farklı ülkelerden farklı içerik döner. Residential proxy'ler, gerçek ISP IP'leri sağlayarak bot skorunu düşürür ve coğrafi hedefleme ile doğru içerik almanızı sağlar.
Pinterest scraping için en iyi proxy tipi hangisidir?
Herkese açık Pinterest verileri için residential proxy'ler en iyi seçenektir. Gerçek ISP IP'leri, veri merkezi IP'lerine kıyasla çok daha az şüphe çeker. Coğrafi hedefleme (örneğin -country-US) yerelleştirilmiş içerik için gereklidir. Sticky session (-session- bayrağı), csrftener sürekliliği için kullanılmalıdır. Mobile proxy'ler de çalışır ancak maliyetleri daha yüksektir ve genellikle gerekli değildir.
Pinterest scraping'de blokları nasıl önlersiniz?
Blokları önlemek için: sayfalar arasında 2-5 saniye bekleme ekleyin, tek IP'den dakikada 30-50'den fazla istek göndermeyin, tutarlı bir User-Agent kullanın, sticky session ile csrftener sürekliliğini sağlayın ve 429 yanıtı aldığınızda en az 60 saniye bekleyip session kimliğini değiştirin. Farklı panolar için farklı session kimlikleri kullanarak yükü dağıtın.
Pinterest API v5 scraping için yeterli mi?
Hayır, Pinterest API v5 yalnızca OAuth 2.0 ile giriş yapmış kullanıcının kendi hesabıyla ilgili verilere erişim sağlar. Herkese açık arama sonuçları veya rastgele pano akışları için uygun uç noktalar sunmaz. Bu nedenle, herkese açık pin ve pano verilerini ölçekli toplamak için dahili Resource API kullanmak gerekir. Ancak üretim ve ticari kullanımda önce resmi API değerlendirilmelidir.






