84 bintang di GitHub dan terus bertambah. Yozh Crawler + Scraper adalah perangkat lunak gratis, sumber terbuka, dan dikembangkan secara terbuka — berikan kami bintang jika alat ini layak masuk ke dalam tumpukan teknologi Anda.
CyberYozh Data / Kasus Penggunaan / E-commerce & Pasar Online
Kasus penggunaan · E-commerce

Satu skema. Semua pasar daring

Kirimkan URL produk apa pun — Amazon, eBay, Walmart, AliExpress, atau lebih dari 20 platform lainnya — dan dapatkan respons JSON yang terstruktur rapi dan konsisten. Tidak perlu mengelola selektor, tidak perlu berurusan dengan bot, dan tidak ada alur kerja yang rentan.

$curl -X POST localhost:8000/api/v1/scrape/page \ -d '{"url":"amazon.com/dp/B0CFFXRFTH"}'
amazon.com/dp/B0CFFXRFTH
scrape_page amazon.com
Fetching product page
Bypassing anti-bot
Extracting JSON-LD + DOM
Normalizing variants
Resolving images
Berfungsi pada pasar-pasar ini
Mengapa scraper generik gagal

Platform pasar berhasil menghentikan aktivitas scraper yang serba guna dalam waktu satu kuartal

Platform e-commerce merilis pembaruan tata letak setiap beberapa minggu sekali, menerapkan sistem anti-bot berlapis, membatasi akses ke Buy Box dan data penjual melalui sesi, serta menampilkan format kolom yang berbeda di setiap wilayah. Sebagian besar tim menghabiskan 80% waktunya untuk memastikan scraper tetap berfungsi dan 20% sisanya untuk mengolah data itu sendiri. Kami menyediakan empat hal yang pada akhirnya harus mereka bangun ulang dari awal.

Jika Anda pernah bangun dan mendapati dasbor penuh dengan nulls setelah perombakan desain marketplace — artikel ini cocok untuk Anda.

Selektor akan memicu pergeseran tata letak setiap kali terjadi

Masalahnya. Scraper generik hanya mengirimkan jalur CSS atau XPath, lalu berharap-harap cemas. Ketika sebuah marketplace merancang ulang halaman detail produk (PDP) — Amazon melakukannya setiap beberapa minggu sekali — pipeline Anda tetap berjalan tanpa memberikan peringatan nulldi lingkungan produksi. Anda baru mengetahuinya dari dasbor BI di tahap hilir beberapa jam kemudian.

Bagaimana Yozh Scraper mengatasinya. Masukkan llm: {model: "..."} dalam permintaan, dan parser meminta Anthropic / OpenAI / Gemini / OpenRouter untuk membuat ulang selektor dari DOM yang aktif. Pipeline tetap berjalan dengan self_heal: true penanda dalam respons — tidak ada pemberitahuan kepada tim piket.

  • Fitur pemulihan otomatis LLM
  • Multi-penyedia
  • Tanpa waktu henti sama sekali

Satu alamat IP, lima permintaan, diblokir

Masalahnya. Proksi pusat data cepat habis dalam satu sesi saja. Sistem CAPTCHA, identifikasi sidik jari TLS, dan tantangan JavaScript dapat mendeteksi browser headless dalam hitungan detik. Sebagian besar tim membangun lapisan rotasi proksi dari awal, namun tetap saja diblokir.

Begini cara Yozh Scraper mengatasinya. Integrasi bawaan dengan CyberYozh App Proxy melalui CYBERYOZH_API_KEY — 5 jenis proxy (residensial bergilir/tetap, seluler 4G/5G, pusat data, ISP) yang mencakup 250 kode negara. Versi Chromium tersembunyi dengan sidik jari yang disesuaikan secara otomatis menyesuaikan asal proxy.

  • 5 jenis proxy
  • 250 kode negara
  • Sidik jari hangat

Bentuk bidang yang berbeda-beda di setiap pasar

Masalahnya. Harga Amazon berada di satu blok, harga eBay di blok lain, dan harga Walmart di blok ketiga. Dasbor lintas pasar memerlukan lapisan normalisasi sebelum metrik pertama dapat diluncurkan. Tim-tim menghabiskan waktu berminggu-minggu untuk menyelaraskan format kolom.

Bagaimana Yozh Scraper mengatasinya. 10 preset bawaan yang src/presets/builtin/ menghasilkan JSON yang identik di Amazon, eBay, Walmart, dan Google Shopping. Kunci yang sama: title, price, currency, in_stock, rating. Penguraian mata uang yang menyesuaikan dengan wilayah — strukturnya tetap sama.

  • 10 pengaturan bawaan
  • Bentuk JSON yang sama
  • Mata uang yang menyesuaikan dengan wilayah

Halaman login dan sesi yang terputus

Masalahnya. Data yang terikat akun — pemenang Buy Box, portal mitra, admin internal, sumber profil bergaya LinkedIn — memerlukan proses login. Penyimpanan cookie yang dibuat secara manual akan gagal saat dilakukan otentikasi ulang. Sebagian besar scraper sama sekali tidak dilengkapi dengan fitur manajemen sesi.

Begini cara Yozh Scraper mengatasinya. API Sesi dengan DSL login deklaratif (goto / fill / click / wait) atau tempel cookie yang telah diekspor. Gunakan kembali session_id di setiap proses pengikisan — cookie + storageState bertahan selama 24 jam, diperbarui secara langsung. Diperlukan untuk preset LinkedIn, didukung oleh semua preset lainnya.

  • Masuk secara deklaratif
  • Cookie + status penyimpanan
  • TTL 24 jam
Cara kerjanya

Dari URL menjadi JSON terstruktur dalam 3 panggilan

Tidak perlu menulis selektor. Pilih preset, masukkan parameter, lalu analisis responsnya. Alur yang sama berlaku untuk setiap marketplace yang didukung.

1 Mulai

Kloning repositori tersebut dan docker compose up. Dua layanan dimulai: scraper pada :8000, crawler di :8001.

# one-time setup
git clone \
  github.com/CyberYozh-data/yozh-scraper
cd yozh-scraper
docker compose up -d
2 Memanggil pengaturan yang telah ditentukan sebelumnya

POST nama preset beserta parameternya. Tanpa selektor, tanpa pengaturan anti-bot — paket preset ini menangani selektor, pengolahan pengaturan wilayah, dan pengolahan mata uang.

curl \
  localhost:8000/api/v1/scrape/preset/page \
  -X POST \
  -d '{"source": "amazon_product",
       "preset_params": {"asin": "B0CFFXRFTH"},
       "locale": "us"}'
3 Dapatkan JSON yang terstruktur

Bentuknya sama di seluruh wilayah. Jika sebuah selektor mengalami gangguan setelah perubahan tata letak, fitur pemulihan otomatis LLM akan memperbaikinya secara instan — alur kerja tetap berjalan.

{
  "asin":       "B0CFFXRFTH",
  "price":      189.99,
  "currency":   "USD",
  "in_stock":   true,
  "rating":     4.7
}
Contoh langsung

Apa yang Anda dapatkan — satu desain, untuk semua platform jual beli

Pilih salah satu preset untuk melihat seperti apa responsnya. Set bidang bervariasi tergantung sumbernya, tetapi bentuk permintaannya sama.


            
Resep

Bagaimana tim-tim menyusun susunan pemainnya — masing-masing dalam 10 baris

Tiga konfigurasi e-commerce siap pakai, siap disalin. Tidak ada penjadwal yang disertakan — gunakan cron / Airflow / Temporal milik Anda sendiri.

1 Ringkasan harga harian

Jalankan pemrosesan massal daftar ASIN pesaing Anda sekali sehari, bandingkan dengan data kemarin, lalu posting perubahannya ke Slack. Cron akan mengurus sisanya.

# crontab: every day at 06:00
0 6 * * * /usr/local/bin/price-watch.sh

# price-watch.sh
curl -X POST localhost:8000/api/v1/scrape/preset/pages \
  -d "@asins.json" \
| jq '.results[] | {asin, price, in_stock}' \
> today.json

diff yesterday.json today.json | slack-cli post #pricing
mv today.json yesterday.json
200 URL per batch ~30 detik per pekerja cron Anda
2 Deteksi produk baru

Lakukan perayapan halaman kategori setiap hari, dan hapus duplikat URL produk berdasarkan data kemarin. Gunakan webhook untuk produk baru sebelum pesaing mengindeksnya.

# start a crawl of the category
curl -X POST localhost:8001/api/v1/crawl/start \
  -d '{"seed_url":"amazon.com/s?k=ssd",
       "max_pages":300,
       "scope":"same-domain"}' \
| jq -r '.urls[]' > today_urls.txt

# urls that appeared today
comm -13 yesterday_urls.txt today_urls.txt \
| curl -X POST $WEBHOOK_URL -d @-
Jalur SSE deduplikasi per pekerjaan (SHA1) scope + rate-limit
3 Sumber yang sudah masuk · sesi

Mengambil data dari halaman yang memerlukan login (LinkedIn, portal mitra, admin internal). Masuk sekali melalui Sessions API, lalu gunakan kembali session_id pada setiap proses pengambilan data.

# 1. log in once via declarative script
SID=$(curl -X POST \
  localhost:8000/api/v1/sessions/$ID/login \
  -d "@login_script.json" \
  | jq -r .session_id)

# 2. reuse for every scrape · cookies persist 24h
curl -X POST localhost:8000/api/v1/scrape/preset/page \
  -d "{\"source\":\"linkedin_profile\",
       \"preset_params\":{\"slug\":\"satyanadella\"},
       \"session_id\":\"$SID\"}"
TTL 24 jam cookie + status penyimpanan CAPTCHA: tempel kue
FAQ

Pertanyaan umum mengenai data pasar

Platform jual beli apa saja yang Anda dukung?
10 preset bawaan yang src/presets/builtin/ yang mencakup sumber data terbesar: amazon_product (AS, Inggris, Jerman, Prancis, Jepang), amazon_search (AS, Inggris, Jerman), ebay_search (AS, Inggris, Jerman), walmart_product (AS), google_search (AS, Inggris, Jerman, Prancis, Rusia, Jepang), google_shopping (AS, Inggris, Jerman), bing_search (AS, Inggris, Jerman, Prancis, Rusia, Jepang), yandex_search (AS, Inggris, Jerman, Prancis, Rusia, Jepang), youtube_video (global), linkedin_profile (global, memerlukan session_id). Butuh yang lain? Gunakan POST /api/v1/presets/generate dengan URL contoh — LLM akan menyimpulkan skema dan menghasilkan pemilih untuk Anda.
Seberapa stabilkah skema tersebut?
Bentuk kolom yang sama di seluruh wilayah dan preset — amazon_product di .us, .uk, .de, .fr, .jp semuanya mengembalikan kunci yang identik (mata uang disesuaikan dengan wilayah, struktur tetap sama). Bidang opsional secara eksplisit dapat bernilai null, sehingga nilai yang hilang tidak akan pernah mengganggu parser Anda. Ketika tata letak marketplace berubah, LLM secara otomatis memperbarui selektor secara real-time (cantumkan llm: {model: "..."} dalam permintaan) — pipa tetap berjalan dengan self_heal: true flag dalam respons. Perubahan yang memengaruhi kompatibilitas mundur hanya dirilis dalam versi minor dengan catatan migrasi di CHANGELOG.md.
Apakah saya bisa melakukan scraping pada Amazon / eBay / Walmart?
Ya — ketiganya adalah preset kelas satu, tanpa konfigurasi tambahan. Amazon mencakup 5 wilayah regional (us, uk, de, fr, jp) untuk halaman detail produk (PDP) dan pencarian; eBay mencakup pencarian di us/uk/de; Walmart .us untuk halaman produk. Masing-masing mengembalikan struktur JSON yang sama: title, price, currency, in_stock, rating, seller, ditambah bidang-bidang khusus pasar jika ada (ASIN, pemenang Buy Box, tanda sponsor). Untuk data yang terikat akun di balik login (harga Prime, portal mitra), gunakan API Sessions dan sertakan session_id bersama permintaan.
Seberapa cepat saya bisa mendapatkan data pertama?
Sekitar 5 menit dari awal hingga akhir. git clone + docker compose up -d Menjalankan scraper dalam waktu sekitar 30 detik (Docker mengunduh gambar sekali). Pertama-tama curl POST /api/v1/scrape/preset/page mengembalikan JSON terstruktur dalam 1–3 detik untuk locale yang tersimpan dalam cache, hingga 5–8 detik untuk yang belum pernah diakses. Tanpa pendaftaran, tanpa pembuatan kunci API, tanpa pengukuran SaaS — Anda cukup mengakses titik akhir localhost:8000 saat kontainer dalam kondisi baik.
Apakah Anda menangani proxy dan sistem anti-bot?
Ya. Scraper ini terintegrasi dengan CyberYozh App Proxy melalui CYBERYOZH_API_KEY — 5 jenis proxy yang mencakup 250 kode negara (proxy residensial bergilir/tetap, seluler 4G/5G, pusat data, ISP). Perlindungan anti-bot ditangani oleh build Chromium tersembunyi dengan sidik jari hangat, proxy residensial yang sesuai, dan waktu respons layaknya manusia — sebagian besar alur proses menghindari CAPTCHA sepenuhnya. Jika CAPTCHA muncul, scraper akan mengembalikannya sebagai kesalahan terstruktur alih-alih menyelesaikannya secara diam-diam. Aturan praktis: gunakan proxy residensial bergilir untuk pengikisan skala katalog, dan proxy seluler untuk zona anti-bot yang ketat atau tugas yang terikat akun.
Sumber Terbuka · Lisensi MIT · 84 ★

Siap mengekstrak data dari marketplace?

Yozh Scraper sudah siap digunakan untuk mengolah data dari Amazon, eBay, Walmart, dan Google Shopping. Gratis. Selamanya. Berikan kami bintang jika aplikasi ini bermanfaat — setiap bintang sangat berarti.

Yozh Crawler + Scraper didistribusikan di bawah lisensi MIT. Silakan gunakan. Buat cabang (fork). Gunakan untuk mengembangkan aplikasi.

Disukai oleh tim data dan pengembang AI

Apa yang dikatakan oleh para pengembang yang menggunakan Yozh

5.0 / 5 · Ulasan 5
GitHub
Dalam satu sore, kami mengganti klaster Playwright internal kami dengan Yozh. Titik akhir MCP langsung terintegrasi ke dalam agen Claude kami — tanpa perlu kode penghubung sama sekali, crawler dan scraper langsung berfungsi dengan baik.
Marcus Reinhardt Insinyur Data Utama Northwind Analytics
X
Sistem preset ini adalah fitur andalannya. Kami memasukkan nama sumber dan mendapatkan respons JSON yang rapi; fitur pemulihan otomatisnya bahkan berhasil mendeteksi dua perubahan tata letak Amazon sebelum kami menyadarinya.
Priya Nair Pendiri ScrapeStack
Reddit
Akhirnya, ada scraper sumber terbuka yang memperlakukan proxy dan sesi sebagai fitur utama. Kami menjalankannya di balik sistem otentikasi untuk portal mitra — sesi tetap aktif dan hasilnya tetap konsisten di seluruh wilayah.
Daniel Osei Insinyur Backend Loopfeed
X
Setelah menghubungkannya ke Cursor melalui MCP, agen saya kini dapat mengambil data web secara langsung di tengah-tengah tugas. Proses pengambilan data streaming melalui SSE inilah yang selama ini menjadi hal yang kurang dalam alur kerja agen.
Elena Kovac Insinyur Kecerdasan Buatan Vektor Labs
GitHub
Kami beralih dari API pengambilan data berbayar untuk menghemat biaya dan bersiap menghadapi penurunan kualitas layanan — ternyata hasilnya justru sebaliknya. Sistem ini dihosting sendiri, tanpa tagihan per permintaan, dan skema outputnya lebih rapi daripada yang dulu kami bayar.
Sofia Almeida Manajer Teknik Tabbly