2026'da Temu Ürün ve Fiyat Verileri Nasıl Kazınır: Proxy'ler, Anti-Bot ve Gizli JSON

Temu'nun public API'si yok. Bu rehber, HTML kartlarını parse etmek ile internal JSON endpoint'lerini hit etmek arasındaki trade-off'u, anti-bot stack'ini aşmayı ve ProxyHat ile çalışan Python örneklerini adım adım anlatıyor.

How to Scrape Temu Product and Price Data in 2026: Proxies, Anti-Bot, and the Hidden JSON
Bu makalede

2026'da Temu Ürün ve Fiyat Verileri Nasıl Kazınır: Temel Yaklaşım

Temu, 2026 itibarıyla küresel e-ticaretin en hızlı büyüyen platformlarından biri ve fiyat zekâsı (price intelligence) ekipleri için kritik bir veri kaynağı. Ancak Temu'nun public bir API'si yok. Bu, veri mühendislerini iki temel yola iter: volatil HTML kartlarını parse etmek veya internal JSON endpoint'lerini doğrudan hedeflemek. Bu rehberde, Temu ürün ve fiyat verileri kazıma sürecini — anti-bot stack'ini, gizli JSON endpoint'lerini, residential proxy gereksinimlerini ve çalışan Python kodlarını — baştan sona ele alacağız.

İki yaklaşım arasındaki temel fark aşağıdaki tabloda özetlenmiştir:

YaklaşımAvantajlarDezavantajlarNe zaman?
HTML parse (sayfa render)Kolay başlangıç, görsel veriyi yakalarCSS sınıf hash'leri sık değişir, JS render gerekir, yavaşAz sayıda ürün, manuel kontrol
Internal JSON endpointHızlı, yapılandırılmış veri, daha az bandwidthİmzalı header'lar gerekir, rate-limit agresifBulk fiyat izleme, SERP scraping

Pratikte, üretim seviyesinde bir Temu fiyat kazıyıcı genellikle JSON endpoint'lerini tercih eder — ama bu, anti-bot stack'ini anlamayı ve doğru proxy altyapısını kurmayı gerektirir.

Temu'nun Anti-Bot Stack'i: Neden Bu Kadar Zor?

Temu, Cloudflare altyapısı üzerinde çalışır ve birden fazla anti-bot katmanı kullanır. Bunları anlamadan herhangi bir istek atmak, IP'nizin saniyeler içinde banlanmasına yol açar.

1. Cloudflare Turnstile ve Bot Management

Temu, Cloudflare'nin Turnstile ve bot management çözümlerini kullanır. Datacenter IP'leri, Cloudflare'nin IP reputation veritabanında düşük güven skoruna sahiptir ve genellikle ilk istekte challenge'a düşer. Residential IP'ler ise gerçek ISP'lerden geldiği için çok daha yüksek geçiş oranına (pass rate) sahiptir.

2. İmzalı anti_content Header/Token

Temu'nun internal API endpoint'leri (örneğin /api/poppy/v1/search ve goods-detail) anti_content adında imzalı bir token gerektirir. Bu token, tarayıcıdaki JavaScript tarafından runtime'da üretilir ve istek parametrelerini, zaman damgasını ve cihaz parmak izini içerir. Token'ı reverse-engineer etmek mümkün olsa da, Temu bunu sık sık günceller ve bu yaklaşım kırılgandır.

Alternatif: anti_content token'ını headless browser (Playwright/Patchright) ile runtime'da çekip, ardından aynı oturumun cookie'leriyle JSON endpoint'lerine curl tabanlı istekler atmak. Bu hibrit yaklaşım, hem render maliyetini düşürür hem de JSON verisinin yapısını kullanır.

3. TLS/HTTP2 Parmak İzi

Cloudflare, TLS ClientHello ve HTTP/2 frame sıralamasını analiz ederek standart Python requests veya urllib kütüphanelerini anında tespit eder. Standart requests ile yapılan isteklerin Cloudflare challenge'ına düşme oranı datacenter IP'lerde neredeyse %90'ın üzerindedir. Bu nedenle, gerçek tarayıcı TLS parmak izini taklit eden curl_cffi gibi kütüphaneler kullanmak esastır.

Veriyi Bulmak: JSON Endpoint'leri ve Gömülü State

Temu'da veri iki ana yerde bulunur: sayfaya gömülü state blob'ları ve internal API endpoint'leri.

Gömülü State: __NEXT_DATA__ ve Benzeri

Temu ürün sayfaları, Next.js benzeri bir framework kullanır ve sayfa kaynağında <script id="__NEXT_DATA__" type="application/json"> etiketi içinde büyük bir JSON blob'u taşır. Bu blob, ürün adı, fiyat, SKU listesi, görsel URL'leri ve shipping bilgilerini içerir. HTML kartlarını parse etmek yerine, bu blob'u çekmek çok daha sağlamdır.

Ancak dikkat: Temu'nun CSS sınıf isimleri hash'lenmiştir (örneğin _3e8d2f) ve her deploy'da değişebilir. data-uniqid gibi attribute'lar daha stabil olabilir, ancak yine de garanti değildir. JSON blob'u parse etmek, CSS selector kırılganlığını ortadan kaldırır.

Internal JSON Endpoint'leri

Temu'nun arama ve ürün detay verileri şu endpoint'lerden gelir:

  • /api/poppy/v1/search — arama sonuçları, liste grid'i arkasındaki JSON
  • Goods-detail endpoint — goods_id ile ürün detay, fiyat, SKU listesi

Bu endpoint'ler anti_content header'ı ve geçerli cookie'ler gerektirir. Aşağıda, bu endpoint'lerden birinden gelen truncated örnek JSON response bulunuyor:

{
  "goods": [
    {
      "goods_id": "601234567890",
      "goods_name": "Wireless Bluetooth Earbuds Pro",
      "goods_price": {
        "amount": 12.98,
        "currency": "USD",
        "original_price": 29.99
      },
      "sku_list": [
        {
          "sku_id": "sku_001",
          "sku_price": {"amount": 12.98},
          "sku_attr": {"color": "black"}
        },
        {
          "sku_id": "sku_002",
          "sku_price": {"amount": 13.49},
          "sku_attr": {"color": "white"}
        }
      ],
      "shipping": {"free": true, "estimated_days": "5-7"}
    }
  ],
  "total": 342,
  "page": 1
}

Bu yapı, HTML parse'e kıyasla çok daha temiz veri sağlar ve Temu ürün verisi API benzeri bir deneyim sunar.

Rate-Limit Eşikleri ve Neden Residential Proxy Zorunlu

Temu, agresif rate-limiting uygular. Deneyimsel gözlemlere göre:

  • Tek IP'den ~50 istek/dakika üzeri genellikle challenge veya geçici ban tetikler
  • Datacenter IP'lerde bu eşik daha da düşüktür — bazen 10-15 istek/dakika sonrasında block
  • Residential IP'lerde tolerance daha yüksek, ancak yine de 100+ istek/dakika risklidir

Daha da önemlisi: Temu'nun fiyatları ve shipping seçenekleri bölgeye göre değişir. ABD'den ve Almanya'dan aynı ürüne baktığınızda farklı fiyatlar, farklı shipping süreleri ve bazen farklı ürün listeleri görürsünüz. Bu nedenle, doğru bölgesel veriyi yakalamak için city-level geo-targeting gereklidir.

ProxyHat ile ABD residential proxy kullanımı:

http://user-country-US:pass@gate.proxyhat.com:8080

Berlin, Almanya için city-level targeting:

http://user-country-DE-city-berlin:pass@gate.proxyhat.com:8080

Bu, ProxyHat locations sayfasındaki mevcut ülke ve şehir kodlarıyla yapılandırılabilir. Fiyat zekâsı ekipleri için, her hedef bölge için ayrı bir residential proxy pool kullanmak veri tutarlılığını sağlar.

Çalışan Python Örneği: curl_cffi + ProxyHat

Aşağıdaki örnek, curl_cffi ile gerçek tarayıcı TLS parmak izini taklit ederek Temu ürün sayfasını çeker ve gömülü JSON blob'unu parse eder. ProxyHat residential proxy'si gate.proxyhat.com:8080 üzerinden kullanılır.

from curl_cffi import requests as cffi_requests
import json
import re

# ProxyHat residential proxy — US geo-targeting
PROXY = "http://user-country-US:YOUR_PASSWORD@gate.proxyhat.com:8080"

# Temu ürün sayfası URL'si
PRODUCT_URL = "https://www.temu.com/goods-detail.html?goods_id=601234567890"

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 "
                  "(KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36",
    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
    "Accept-Language": "en-US,en;q=0.9",
}

response = cffi_requests.get(
    PRODUCT_URL,
    headers=headers,
    proxies={"http": PROXY, "https": PROXY},
    impersonate="chrome131",
    timeout=30,
)

if response.status_code != 200:
    print(f"Blocked or error: {response.status_code}")
else:
    # __NEXT_DATA__ blob'unu çek
    match = re.search(
        r'<script id="__NEXT_DATA__" type="application/json">(.*?)</script>',
        response.text,
        re.DOTALL
    )
    if match:
        data = json.loads(match.group(1))
        # goods verisine eriş (yol değişebilir, inspect ile doğrulayın)
        goods = data.get("props", {}).get("pageProps", {}).get("goods", {})
        print(f"goods_id: {goods.get('goods_id')}")
        print(f"price: {goods.get('goods_price', {}).get('amount')}")
        print(f"sku count: {len(goods.get('sku_list', []))}")
    else:
        print("__NEXT_DATA__ blob bulunamadı")

Bu kod, scrape Temu iş akışının temelini oluşturur. impersonate="chrome131" parametresi, curl_cffi'nin Chrome 131 TLS parmak izini taklit etmesini sağlar ve Cloudflare'nin TLS fingerprinting kontrolünü geçmeye yardımcı olur.

curl ile Hızlı Test

Kod yazmadan önce proxy bağlantısını test etmek için:

curl -x http://user-country-US:YOUR_PASSWORD@gate.proxyhat.com:8080 \
  -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36" \
  "https://www.temu.com/goods-detail.html?goods_id=601234567890" \
  -o temu_product.html

Sticky Session'lar, Retry'ler ve Pagination

Sticky Session'lar

Sepet ve shipping verisini çekerken, aynı IP'de kalmak kritiktir. Aksi takdirde, Temu farklı bölgelerden gelen istekleri farklı shipping seçenekleriyle yanıtlayabilir. ProxyHat'ın sticky session özelliği bunu sağlar:

http://user-country-US-session-myshop001:YOUR_PASSWORD@gate.proxyhat.com:8080

-session-myshop001 flag'i, aynı session ID'si ile yapılan tüm isteklerin aynı residential IP'ye yönlendirilmesini sağlar. Session süreleri için ProxyHat dokümantasyonunu inceleyin.

Retry Stratejisi

Residential proxy'lerde IP rotasyonu doğası gereği bazı isteklerin timeout veya connection error vermesine yol açar. Sağlam bir retry stratejisi şunları içermelidir:

  • Exponential backoff: 1s, 2s, 4s, 8s aralıklarla maksimum 3-4 retry
  • HTTP 403/429 aldığında IP'yi değiştir (yeni session ID veya rotating port)
  • Başarı oranı %85'in altına düştüğünde rate'i düşür
  • Bulk işlerde concurrency'i 20-50 paralel istek civarında tut

Pagination

Arama sonuçlarında pagination için, /api/poppy/v1/search endpoint'ine page ve pageSize parametreleri gönderin. Her sayfa için yeni bir residential IP kullanmak (rotating proxy), tek IP üzerinde accumulation riskini azaltır:

import time
from curl_cffi import requests as cffi_requests

BASE_PROXY = "http://user-country-US-session-list{page}:YOUR_PASSWORD@gate.proxyhat.com:8080"

for page in range(1, 6):
    proxy = BASE_PROXY.format(page=page)
    resp = cffi_requests.get(
        "https://www.temu.com/api/poppy/v1/search",
        params={"search_key": "bluetooth earbuds", "page": page, "pageSize": 50},
        proxies={"http": proxy, "https": proxy},
        impersonate="chrome131",
        timeout=30,
    )
    if resp.status_code == 200:
        data = resp.json()
        print(f"Page {page}: {len(data.get('goods', []))} products")
    else:
        print(f"Page {page} failed: {resp.status_code}")
    time.sleep(2)  # rate-limit'e takılmamak için

Her sayfa için farklı session ID kullanmak, ProxyHat'ın rotating residential pool'undan farklı IP'ler atamasını sağlar.

Etik ve Yasal Açıklamalar

Temu scrape yapmadan önce etik ve yasal sınırları anlamak kritiktir:

  • Sadece public katalog verisi: Ürün adı, fiyat, SKU, görsel URL'leri gibi herkese açık veriler. Kullanıcı hesap verileri, sipariş geçmişi veya kişisel veriler kazımayın.
  • CFAA ve GDPR: ABD'de Computer Fraud and Abuse Act (CFAA), yetkisiz erişimi yasaklar. Avrupa'da GDPR, kişisel verilerin işlenmesini düzenler. Public fiyat verisi genellikle CFAA kapsamında "yetkisiz erişim" sayılmaz, ancak her durumda hukuk danışmanlığı alın.
  • robots.txt ve ToS: Temu'nun robots.txt dosyasını kontrol edin ve Terms of Service'i okuyun. ToS kazımayı yasaklıyorsa, resmi merchant feed API'sini kullanmak daha güvenli bir alternatif olabilir.
  • Hesap kazıma yapmayın: Login gerektiren verileri kazımak hem ToS ihlalidir hem de CFAA riski taşır.
  • Resmi merchant feed: Eğer bir Temu satıcısıysanız, Temu Merchant Center üzerinden resmi API/feed erişimi sağlayabilirsiniz. Bu, kazımaya göre çok daha güvenli ve sürdürülebilir bir yoldur.

ProxyHat Kurulumu ve Fiyatlandırma

ProxyHat, residential, mobile ve datacenter proxy hizmetleri sunar. Temu kazıma için residential proxy'ler tek doğru seçimdir — datacenter IP'ler Cloudflare tarafından anında flag'lenir.

ProxyHat'ı kullanmaya başlamak için:

  1. ProxyHat fiyatlandırma sayfasından residential proxy planınızı seçin
  2. Dashboard'dan kullanıcı adı ve şifrenizi alın
  3. Yukarıdaki kod örneklerindeki YOUR_PASSWORD yerine kendi şifrenizi yerleştirin
  4. Web scraping use case sayfamızdan daha fazla örnek inceleyin

SERP tracking use case sayfamız, arama sonuçları kazıma için ek stratejiler içerir ve Temu SERP verisi için de uygulanabilir.

Key Takeaways

  • JSON endpoint > HTML parse: Temu'nun internal /api/poppy/v1/search ve goods-detail endpoint'leri, HTML kart parse'inden çok daha sağlam ve hızlıdır.
  • anti_content token: Internal API'ler imzalı token gerektirir; hibrit yaklaşım (headless browser + curl) en pragmatik yoldur.
  • TLS fingerprinting: Standart requests Cloudflare'e takılır; curl_cffi ile impersonate kullanın.
  • Residential proxy zorunlu: Datacenter IP'ler anında banlanır. City-level geo-targeting (-country-US, -country-DE-city-berlin) fiyat/shipping tutarlılığı için gerekli.
  • Sticky session: Sepet ve shipping verisi için aynı IP'de kalın (-session- flag).
  • Etik sınırlar: Sadece public katalog verisi, hesap verisi kazımayın, resmi merchant feed'i tercih edin.

SSS

Temu ürün ve fiyat verileri kazıma nedir?

Temu ürün ve fiyat verileri kazıma, Temu platformundaki public ürün katalog verilerini (ürün adı, fiyat, SKU listesi, shipping bilgileri) otomatik olarak toplama işlemidir. Temu'nun public API'si olmadığı için, veri mühendisleri ya HTML sayfalarını parse eder ya da internal JSON endpoint'lerini doğrudan hedefler. Residential proxy'ler ve TLS fingerprinting takibi, bu sürecin başarısı için kritiktir.

Temu kazıma için proxy kullanıcıları neden önem taşıyor?

Temu, Cloudflare bot management ve TLS/HTTP2 fingerprinting kullanır. Datacenter IP'ler anında flag'lenir ve banlanır. Residential proxy'ler, gerçek ISP'lerden gelen IP'ler sağladığı için Cloudflare challenge'ına düşme oranı çok daha düşüktür. Ayrıca, Temu'nun fiyatları bölgeye göre değiştiği için city-level geo-targeting doğru veriyi yakalamak için zorunludur.

Temu kazıma için en iyi proxy tipi hangisidir?

Residential proxy'ler, Temu kazıma için en iyi sonuçları verir. Gerçek ev/ISP IP'leri oldukları için Cloudflare'nin bot detection'ından en yüksek geçiş oranına sahiptirler. Mobile proxy'ler de çalışabilir ancak maliyetleri daha yüksektir. Datacenter proxy'ler ise Temu'da pratik olarak kullanılamaz — ilk istekte banlanırlar. ProxyHat residential proxy'leri, gate.proxyhat.com:8080 üzerinden country ve city-level targeting ile kullanılabilir.

Temu kazıma yaparken banlanmayı nasıl önlersiniz?

Banlanmayı önlemek için: (1) curl_cffi ile gerçek tarayıcı TLS parmak izini taklit edin, (2) residential proxy kullanın ve tek IP'de dakikada 50 istek sınırını aşmayın, (3) her istek arasında 2-3 saniye bekleme yapın, (4) pagination'da her sayfa için yeni IP kullanın, (5) HTTP 403/429 aldığınızda IP'yi değiştirin ve backoff uygulayın, (6) gerçekçi User-Agent ve Accept-Language header'ları gönderin.

Temu'nun internal JSON endpoint'lerine erişmek mümkün mü?

Evet, Temu'nun /api/poppy/v1/search ve goods-detail endpoint'leri JSON formatında yapılandırılmış veri döner. Ancak bu endpoint'ler anti_content adında imzalı bir token gerektirir ve geçerli cookie'ler ister. En pragmatik yaklaşım, headless browser ile token ve cookie'leri çekip, ardından curl_cffi ile aynı oturumu kullanarak JSON endpoint'lerine istek atmaktır.

Sık sorulan sorular

Temu ürün ve fiyat verileri kazıma nedir?

Temu ürün ve fiyat verileri kazıma, Temu platformundaki public ürün katalog verilerini (ürün adı, fiyat, SKU listesi, shipping bilgileri) otomatik olarak toplama işlemidir. Temu'nun public API'si olmadığı için, veri mühendisleri ya HTML sayfalarını parse eder ya da internal JSON endpoint'lerini doğrudan hedefler. Residential proxy'ler ve TLS fingerprinting takibi, bu sürecin başarısı için kritiktir.

Temu kazıma için proxy kullanıcıları neden önem taşıyor?

Temu, Cloudflare bot management ve TLS/HTTP2 fingerprinting kullanır. Datacenter IP'ler anında flag'lenir ve banlanır. Residential proxy'ler, gerçek ISP'lerden gelen IP'ler sağladığı için Cloudflare challenge'ına düşme oranı çok daha düşüktür. Ayrıca, Temu'nun fiyatları bölgeye göre değiştiği için city-level geo-targeting doğru veriyi yakalamak için zorunludur.

Temu kazıma için en iyi proxy tipi hangisidir?

Residential proxy'ler, Temu kazıma için en iyi sonuçları verir. Gerçek ev/ISP IP'leri oldukları için Cloudflare'nin bot detection'ından en yüksek geçiş oranına sahiptirler. Mobile proxy'ler de çalışabilir ancak maliyetleri daha yüksektir. Datacenter proxy'ler ise Temu'da pratik olarak kullanılamaz — ilk istekte banlanırlar. ProxyHat residential proxy'leri, gate.proxyhat.com:8080 üzerinden country ve city-level targeting ile kullanılabilir.

Temu kazıma yaparken banlanmayı nasıl önlersiniz?

Banlanmayı önlemek için: curl_cffi ile gerçek tarayıcı TLS parmak izini taklit edin, residential proxy kullanın ve tek IP'de dakikada 50 istek sınırını aşmayın, her istek arasında 2-3 saniye bekleme yapın, pagination'da her sayfa için yeni IP kullanın, HTTP 403/429 aldığınızda IP'yi değiştirin ve backoff uygulayın, gerçekçi User-Agent ve Accept-Language header'ları gönderin.

Temu'nun internal JSON endpoint'lerine erişmek mümkün mü?

Evet, Temu'nun /api/poppy/v1/search ve goods-detail endpoint'leri JSON formatında yapılandırılmış veri döner. Ancak bu endpoint'ler anti_content adında imzalı bir token gerektirir ve geçerli cookie'ler ister. En pragmatik yaklaşım, headless browser ile token ve cookie'leri çekip, ardından curl_cffi ile aynı oturumu kullanarak JSON endpoint'lerine istek atmaktır.

Başlamaya hazır mısınız?

148+ ülkede 50M+ konut IP'sine AI destekli filtreleme ile erişin.

Fiyatlandırmayı GörüntüleKonut Proxy'leri
← Bloga Dön