Etika dan Legalitas Scraping Data di Indonesia plus Rambu UU PDP
TL;DR
Scraping data publik kayak harga produk atau judul artikel umumnya aman selama kamu nggak nembus login, nggak bikin server kewalahan, dan nggak ngambil data pribadi. Yang bikin masalah di Indonesia itu ngumpulin data pribadi tanpa dasar yang sah, dan UU Nomor 27 Tahun 2022 tentang Pelindungan Data Pribadi ngatur ini lengkap sama sanksinya. Aturan praktis paling gampang: kalau datanya bisa dipakai buat ngenalin satu orang tertentu, jangan diambil.
Scraping data publik kayak harga produk atau judul artikel umumnya aman. Yang bikin masalah itu ngambil data pribadi, nembus halaman berpassword, atau ngirim request sebanyak itu sampai servernya terganggu.
Aku bukan pengacara, dan tulisan ini bukan nasihat hukum. Ini rangkuman rambu praktis yang aku pakai sendiri sebelum jalanin scraper, plus poin dari aturan yang berlaku di Indonesia.
Kalau proyek kamu menyentuh data orang, konsultasi ke ahli hukum tetap langkah yang bener.
Apakah web scraping legal di Indonesia?
Nggak ada satu pasal pun yang bilang scraping itu dilarang atau diperbolehkan secara umum. Yang dinilai bukan teknik ngambilnya, tapi tiga hal: data apa yang kamu ambil, gimana cara kamu masuk ke datanya, dan buat apa data itu dipakai. Tiga pertanyaan itu yang nentuin aman atau nggaknya.
Empat aturan yang paling sering nyentuh proyek scraping di Indonesia:
- UU Nomor 27 Tahun 2022 tentang Pelindungan Data Pribadi, buat semua data yang bisa ngenalin seseorang.
- UU ITE, khususnya larangan mengakses sistem elektronik milik orang lain tanpa hak.
- UU Hak Cipta, buat konten seperti artikel, foto, dan susunan basis data.
- Syarat layanan situsnya sendiri, yang secara perdata mengikat kamu sebagai pengguna.
Teks lengkap peraturannya bisa kamu cek di JDIH, situs dokumentasi hukum resmi pemerintah.
Apa yang diatur UU PDP soal data hasil scraping?
UU PDP ngatur setiap kegiatan memperoleh, mengumpulkan, menyimpan, dan memakai data pribadi. Data pribadi dibagi dua: data umum kayak nama, alamat, dan nomor telepon, plus data spesifik kayak data kesehatan, biometrik, keuangan pribadi, dan data anak. Data spesifik dapat perlindungan lebih ketat.
Poin yang paling sering kelewat: pemrosesan data pribadi harus punya dasar yang sah. Persetujuan subjek data cuma salah satu dasar, dan itu yang paling susah dipenuhi kalau kamu ngambil data lewat scraping. Orang yang namanya kamu ambil dari halaman web nggak pernah ngasih persetujuan apa pun ke kamu.
Subjek data juga punya hak minta informasi, minta koreksi, minta penghapusan, dan menarik persetujuannya. Kalau kamu nyimpen data 40.000 orang hasil scraping, kamu harus siap ngelayani hak-hak itu satu per satu.
Sanksinya ada dua jalur. Jalur administratif mulai dari peringatan tertulis, penghentian sementara pemrosesan, penghapusan data, sampai denda administratif. Jalur pidana menyasar perbuatan mengumpulkan atau memakai data pribadi orang lain secara melawan hukum, dengan ancaman penjara bertahun-tahun dan denda miliaran rupiah.
Data apa yang aman diambil dan mana yang bahaya?
| Jenis data | Contoh | Risiko |
|---|---|---|
| Data produk dan harga | Nama barang, harga, stok, kategori | Rendah |
| Data agregat publik | Statistik BPS, data terbuka pemda | Rendah |
| Konten berhak cipta | Isi artikel penuh, foto produk | Sedang, boleh dianalisis tapi jangan diterbitkan ulang |
| Ulasan pembeli | Teks ulasan plus nama akun | Sedang, buang nama dan foto profilnya |
| Profil orang | Nama, email, nomor HP, alamat | Tinggi, masuk data pribadi |
| Data di balik login | Isi dashboard, data akun | Tinggi, bisa masuk akses tanpa hak |
Aturan praktis yang aku pakai: kalau satu baris data bisa dipakai buat nunjuk satu orang tertentu, jangan diambil. Kalau terpaksa perlu, buang kolom identitasnya sejak tahap penyimpanan, bukan nanti waktu mau publikasi.
Ulasan pembeli itu contoh yang sering bikin bingung. Teks ulasannya berguna buat analisis sentimen, tapi nama akun dan foto profilnya nggak kamu butuhin sama sekali. Buang di langkah pertama, sebelum masuk penyimpanan.
Apa peran robots.txt dan syarat layanan?
Robots.txt adalah file di akar situs yang ngasih tau program otomatis bagian mana yang boleh dan nggak boleh diambil. Isinya bukan pagar teknis, jadi secara teknis bisa saja diabaikan. Tapi mengabaikannya bikin posisi kamu lemah kalau nanti ada sengketa, karena kamu udah dikasih tau dan tetap jalan terus.
User-agent: *
Disallow: /akun/
Disallow: /checkout/
Crawl-delay: 2
Baca file itu sebelum nulis kode. Penjelasan format dan aturannya ada di dokumentasi robots.txt dari Google.
Syarat layanan lebih mengikat lagi. Banyak platform besar nulis larangan pengambilan data otomatis secara eksplisit di situ. Melanggarnya bukan pidana, tapi bisa jadi dasar gugatan perdata dan pemblokiran akun.
Berapa beban request yang masih wajar?
Nggak ada angka resmi, tapi standar yang dipakai banyak orang: satu request per satu sampai tiga detik, jalanin di jam sepi, dan ikuti nilai Crawl-delay kalau robots.txt nyebutin. Beban yang bikin situs kecil melambat bisa dianggap gangguan, dan itu urusan yang beda dari sekadar ambil data.
Empat kebiasaan yang bikin scraper kamu jadi tamu yang sopan:
- Pasang User-Agent yang jelas. Sebut nama proyek dan alamat kontak. Kalau ada masalah, mereka bisa ngehubungi kamu duluan sebelum ngeblokir.
- Simpan halaman yang udah diambil. Jangan ngunduh ulang halaman yang sama tiap kali kamu ngetes kode.
- Ambil seperlunya. Butuh 40 produk, jangan tarik 4.000.
- Berhenti waktu dikasih sinyal. Status 429 artinya kamu diminta pelan. Turutin.
Poin kedua paling sering dilanggar waktu masih tahap coba-coba. Simpan HTML-nya ke file lokal, lalu latihan parsing dari file itu. Ini juga bikin proses ETL kamu jauh lebih cepat diuji.
Contoh kasus: proyek harga toko_berkah yang aku rombak rancangannya
Rancangan awal proyek pembanding harga toko_berkah itu ngambil empat hal per produk: nama barang, harga, nama penjual, dan kota penjual. Total 118 halaman, sekitar 2.100 baris.
Waktu aku cek ulang, dua kolom terakhir bermasalah. Nama penjual di banyak lapak itu nama orang asli, dan digabung sama kota, itu udah cukup buat nunjuk orang tertentu.
Rancangannya aku ubah jadi begini:
- Nama penjual diganti kode hash yang stabil, jadi aku tetap bisa ngitung berapa produk per penjual tanpa nyimpen identitasnya.
- Kota diganti jadi tingkat provinsi, cukup buat analisis perbedaan harga antar wilayah.
- Teks ulasan tetap diambil, tapi nama akunnya nggak ikut disimpan.
Hasil analisisnya nggak berubah sama sekali. Temuan utamanya tetap sama: 9 dari 34 SKU toko_berkah dijual lebih dari 18 persen di atas median pasar.
Dua kolom yang aku buang itu ternyata nggak pernah kepakai di analisis mana pun. Ini yang sering kejadian: data pribadi diambil bukan karena dibutuhin, tapi karena kebetulan ada di halamannya.
Kebiasaan yang aku pakai sekarang: tulis dulu daftar pertanyaan yang mau dijawab, baru tentuin kolom apa yang diambil. Bukan kebalikannya.
Checklist sebelum jalanin scraper
- Cek apakah situsnya punya API resmi. Kalau ada, pakai itu.
- Baca robots.txt dan halaman syarat layanan.
- Tulis daftar pertanyaan riset, lalu tentuin kolom minimum yang dibutuhin.
- Pastiin nggak ada kolom yang bisa nunjuk satu orang tertentu.
- Pasang User-Agent yang nyebut nama dan kontak kamu.
- Kasih jeda minimal 1 sampai 2 detik per request.
- Jangan nembus login, captcha, atau pembatas lain.
- Simpan tanggal pengambilan di tiap baris data.
- Simpan data mentah di lokal, jangan di repo publik.
- Sebutkan sumber dan tanggal datanya waktu hasilnya dipublikasikan.
Nomor delapan kelihatan sepele, tapi itu yang bikin datamu bisa dipertanggungjawabkan. Tanpa tanggal, nggak ada yang bisa ngecek ulang angka kamu, dan kualitas datanya nggak bisa dinilai orang lain.
FAQ
Scraping data harga produk di marketplace boleh nggak?
Harga produk itu informasi bisnis, bukan data pribadi, jadi risikonya jauh lebih kecil. Yang tetap harus kamu jaga: patuhi robots.txt, kasih jeda antar request, jangan nembus login, dan jangan salin seluruh isi katalog buat dijual lagi. Cek juga syarat layanan situsnya, soalnya sebagian marketplace melarang pengambilan data otomatis.
Kalau datanya sudah publik, berarti bebas dipakai dong?
Nggak otomatis begitu. Nama dan nomor telepon yang dipajang di halaman publik tetap data pribadi menurut UU PDP, dan mengumpulkannya tetap butuh dasar pemrosesan yang sah. Publik cuma berarti bisa dilihat, bukan berarti bebas dikumpulkan, disimpan, dan dipakai buat tujuan lain.
Apa sanksi kalau melanggar UU PDP?
Ada dua jalur. Sanksi administratif mencakup peringatan tertulis, penghentian sementara pemrosesan, penghapusan data, sampai denda administratif dengan batas persentase dari pendapatan tahunan. Ada juga jalur pidana buat perbuatan yang mengumpulkan atau memakai data pribadi orang lain secara melawan hukum, dengan ancaman penjara dan denda miliaran rupiah.
Buat skripsi atau riset kampus, aturannya lebih longgar?
Beban teknisnya lebih ringan karena datanya kecil, tapi aturan soal data pribadi tetap berlaku sama. Praktik yang aman: anonimkan data sejak tahap penyimpanan, jangan pernah menampilkan identitas responden di lampiran, dan sebutkan sumber data serta tanggal pengambilannya. Kalau kampus kamu punya komite etik, ajukan dulu.
Boleh nggak nyimpen hasil scraping di GitHub publik?
Buat data harga atau data agregat, boleh. Buat data yang mengandung nama, email, nomor telepon, atau lokasi orang, jangan. Repo publik itu diarsipkan banyak pihak, jadi data yang sekali naik hampir mustahil ditarik total. Simpan data mentahnya di lokal, dan yang di-push cukup kode plus hasil agregatnya.
Rancang dulu, baru jalanin
Dua pertanyaan yang perlu kamu jawab sebelum nulis kode: data ini bisa dipakai buat ngenalin satu orang atau nggak, dan beban request-nya bakal ngeganggu situsnya atau nggak.
Kalau dua-duanya aman, sisanya tinggal teknis.
Cara nulis scraper-nya ada di tutorial Requests dan BeautifulSoup. Kalau kamu juga ngolah data sensitif pakai bantuan AI, batas amannya aku bahas di panduan keamanan data waktu pakai AI.
Mau praktek langsung? Mulai latihan SQL gratis
Latihan interaktif, langsung di browser.
Artikel terkait
Pandas groupby: Agregasi Data ala Pivot di Python (2026)
groupby ngelompokin baris berdasarkan kolom, lalu ngitung ringkasan per grup kayak total atau rata-rata. Ini pivot-nya pandas.
Pandas to_excel: Ekspor DataFrame ke Excel (2026)
to_excel nyimpen DataFrame pandas jadi file Excel .xlsx. Ini cara pakainya, dari satu sheet sampai banyak sheet, plus setelan yang bikin hasilnya rapi.
Pandas read_excel: Baca File Excel di Python
pandas read_excel baca file Excel jadi DataFrame, bisa pilih sheet tertentu dan lompatin baris judul yang berantakan. Ini cara pakai plus parameter penting dengan contoh data toko.