DataForSEO vs API hanya-link: apa yang berubah dalam pipa R Anda
Uraian satu pipa imajiner, langkah demi langkah. Kami daftar apa yang bergerak, apa yang tetap, dan apa yang Anda kehilangan dengan mempersempit sumber hanya ke link.
Tim riset CranSEO ·

Pipa, tahap demi tahap
Autentikasi
Kunci kami berjalan sebagai parameter kueri atau header Authorization Bearer. Aksi gratis tidak memerlukan apa pun, sehingga sel-sel pertama notebook dapat dijalankan oleh siapa saja.
Permintaan
Satu GET per aksi, dengan q untuk domain. Paging menggunakan page dan per (10 hingga 5000), pengurutan menggunakan sort dan order.
Parsing
Setiap respons adalah JSON dengan bidang ok. Yang terautentikasi menambahkan _credits, menunjukkan biaya dan saldo yang tersisa.
Penyimpanan
Tulis tibble dan tanggal snapshot bersama-sama. Grafik diperbarui sekitar bulanan, sehingga tanggal adalah bagian dari data.
Laporan
Render dari file yang disimpan, bukan dari panggilan langsung, sehingga dokumen quarto memberikan grafik yang sama besok.
Apa yang Anda dapatkan dan apa yang Anda korbankan
| Kekhawatiran | API hanya-link | Penyedia yang lebih luas |
|---|---|---|
| Lingkup | Backlink, domain pengarah, anchor, halaman teratas, DR | Biasanya menambahkan data SERP dan kata kunci |
| Penagihan | Per panggilan, 1 kredit = $0.0001, tanpa langganan | Periksa daftar harganya sendiri |
| Kesegaran | Refresh sekitar bulanan | Periksa dokumentasinya sendiri |
| Baris per panggilan | Hingga 1.000, ditagih sekali | Bervariasi sesuai endpoint |
| Sinyal kegagalan | HTTP 401 kunci buruk, HTTP 402 tidak ada kredit | Bervariasi |

Kesalahan yang paling mahal dalam jenis pipa ini
Sebagian besar pipa gagal karena uang, bukan kode. Loop yang memanggil endpoint satu per baris mengubah tugas murah menjadi mahal.
Dengan kami, satu panggilan memiliki biaya yang sama untuk 10 baris atau 1.000, sehingga aturannya berbalik: minta halaman terbesar yang bisa Anda gunakan. Atur per menjadi 1000, urutkan berdasarkan kebutuhan Anda, dan hentikan paging ketika pertanyaan terjawab.
Paging dalam dibatasi hingga 50.000 baris, yang merupakan fitur bagi analis yang tergoda untuk menarik semuanya. Jika sebuah domain memiliki lebih banyak link daripada itu, Anda mungkin lebih menginginkan toppages atau anchors.
Bandingkan pengeluaran loop lama Anda dengan versi panggilan tunggal sebelum Anda merayakan. Terkadang penghematannya nol karena penyedia lama sudah menagih per permintaan.
Putusan tentang uraian ini
Persempit sumber hanya jika laporannya sempit
Jika sebagian besar kolom di tibble Anda adalah link, API hanya-link menghapus kode parsing dan biaya. Jika setengah kolom adalah data SERP, pertahankan penyedia Anda saat ini dan tambahkan kami untuk sisanya.
- Pertahankan sel demo pada aksi gratis
- Tetapkan tanggal snapshot dalam output
- Harapkan irama bulanan, bukan harian
Pertanyaan dari uraian
Apakah saya perlu menulis ulang seluruh pipa saya?
Tidak. Ganti hanya tahap link. Pertahankan tahap SERP dan kata kunci Anda di tempatnya, tulis tibble link ke file tersendiri, dan gabungkan keduanya di hilir pada kolom domain.
Apakah CORS terbuka untuk notebook browser?
Ya. CORS terbuka, sehingga aplikasi Shiny atau sel Observable dapat memanggil aksi gratis secara langsung. Simpan kunci berbayar di sisi server, karena apa pun dalam kode browser dapat dibaca oleh pengunjung.
Bagaimana saya menguji penanganan kegagalan dengan murah?
Kirim kunci yang salah secara disengaja untuk melihat HTTP 401 tanpa mengeluarkan biaya apa pun. Kasus HTTP 402 hanya muncul ketika saldo kosong, jadi mock itu dalam pengujian Anda daripada menguras kredit.
Apakah total akan cocok dengan penyedia lain secara tepat?
Tidak. Setiap penyedia merayap secara berbeda dan menyegarkan sesuai jadwalnya sendiri. Bandingkan orde magnitudo dan tren, dan perlakukan DR di sini sebagai metrik skala log terpisah yang dibuat internal.
Error, retry, dan kegagalan yang dapat Anda rencanakan
Kegagalan adalah tempat pipa hanya-link dan pipa yang lebih luas terlihat paling mirip. Kode sering tertinggal di sana. Masukkan jalur kegagalan ke dalam perbandingan, karena keputusan dataforseo vs link-only terlihat berbeda ketika error sudah masuk.
HTTP 401 dan HTTP 402 adalah dua yang harus ditangani
Dua kode status paling penting. HTTP 401 berarti kunci hilang atau salah, dan perbaikannya ada di konfigurasi Anda, bukan di data Anda. HTTP 402 berarti saldo kredit telah habis, dan perbaikannya adalah pengisian ulang dari halaman akun, bukan perubahan kode.
Tulis keduanya sebagai cabang eksplisit. Tangkapan umum yang menelan status dan menulis tabel kosong adalah bagaimana penarikan parsial diam terjadi.
Timeout dan file parsial
Timeout bukan kode status, sehingga kode Anda sendiri harus menganggapnya sebagai kegagalan. Bungkus panggilan sehingga timeout menghentikan run sebelum output apa pun ditulis.
Tulis ke file sementara dan ganti nama saat berhasil. File yang setengah ditulis yang terlihat lengkap adalah hasil terburuk dari run yang terganggu, karena tidak ada yang berpikir untuk mempertanyakannya.
Retry dan pengatur waktu
Halaman ini tidak mengutip angka permintaan per detik, sehingga ukur pipa berdasarkan panggilan per siklus. Itulah angka yang mendorong biaya, dan itulah yang Anda kendalikan.
Retry hanya kesalahan jaringan, dengan jeda antara upaya. Jangan pernah retry 401 atau 402, karena masing-masing akan gagal dengan cara yang sama pada upaya berikutnya.
Di mana kunci berada selama pengujian
Simpan kunci dalam variabel lingkungan di mesin Anda dan di toko rahasia CI, jangan dalam file yang dibaca oleh pengujian. Aksi gratis tidak memerlukan kunci, sehingga run pengujian pertama aman bagi siapa saja yang mengkloning proyek.
Tanyakan pertanyaan yang sama kepada setiap pipa yang Anda sentuh: siapa yang dapat membaca kunci, dan di mana tertulis? Kunci yang muncul di file log adalah kebocoran, bahkan ketika notebook itu sendiri bersifat pribadi.
Mencatat biaya setiap panggilan
Setiap respons dari panggilan terautentikasi membawa bidang kredit, yang menunjukkan biaya dan saldo yang tersisa. Salin ke log Anda di sebelah timestamp dan nama aksi, sehingga pertanyaan biaya dapat dijawab dari file, bukan dari memori.
Baca log sekali sebulan, bukan setahun sekali. Kenaikan lambat dalam biaya per siklus mudah terlewatkan dalam grafik dan jelas dalam kolom angka.
Run yang gagal juga harus meninggalkan log, dengan kode status dan langkah tempat itu berhenti. Log yang hanya mencatat keberhasilan menyembunyikan baris yang Anda butuhkan.

Menghitung baris di seluruh tahap
Banyak bug pipa yang mahal adalah bug hitungan. Tabel kehilangan baris dalam join, filter, atau deduplikasi, dan grafik masih terlihat masuk akal setelahnya.
Tulis hitungan di setiap penyerahan
Pikirkan pipa sebagai rantai tabel: respons API, tibble yang diparsing, file yang disimpan, dan laporan. Hitungan baris di setiap penyerahan menunjukkan tahap mana yang kehilangan baris, jika ada.
Analis sering menghitung hanya di akhir. Pada saat itu, penyebabnya ada tiga tahap sebelumnya, dan tibble telah diubah bentuknya dua kali sejak itu.
Satu baris per domain, satu baris per link
Grain tergantung pada aksi. Penarikan domain pengarah memiliki satu baris per situs penghubung, sedangkan penarikan backlink memiliki satu baris per link, dan satu situs dapat mengirim banyak dari mereka. Hitung pada grain yang salah dan dua angka yang benar akan tampak tidak setuju.
Masukkan grain ke nama file yang disimpan atau ke komentar header, sehingga orang berikutnya tidak perlu menebak. Glosari aksi mencantumkan grain setiap aksi.
Paging dan batas 50.000 baris
Paging dengan page dan per bekerja hingga 5000 baris per halaman, tetapi pagination dalam berhenti di 50.000 baris. Penarikan yang mengharapkan lebih dari itu akan kembali dibatasi, dan hitungannya mungkin terlihat terlalu bulat.
Bandingkan jumlah yang Anda terima dengan total yang Anda harapkan. Ketika mereka berbeda, periksa aksi, urutannya, dan ukuran halaman sebelum Anda menyalahkan sumber.
Hitungan contoh, secara hipotetis
Katakanlah penarikan hipotetis meminta situs penghubung untuk 30 domain target dan mengembalikan 30 baris hitungan. Bergabung dengan skor, tabel mempertahankan 27 baris. Tiga baris yang hilang perlu dilihat sebelum grafik apa pun digambar, dimulai dengan kunci mereka.
Tulis ketiga itu dengan nama, bukan hanya sebagai hitungan. Hitungan memberi tahu Anda bahwa baris hilang, sedangkan nama memberi tahu Anda kunci mana yang harus dibersihkan.
Join yang diam-diam menghilangkan baris
Join kiri mempertahankan setiap baris tabel kiri, sehingga skor yang hilang muncul sebagai NA, bukan sebagai baris yang hilang. Join dalam menyembunyikan masalah yang sama dengan menghapus baris tersebut sama sekali.
Pilih jenis join dengan sengaja, dan hitung skor NA setelah join. Hitungan itu milik log di sebelah bidang kredit.
Rencana pengujian singkat sebelum Anda beralih
Jalankan kedua sumber selama satu siklus. Domain yang sama, hari yang sama.
Ambil 30 domain yang Anda kenal baik, tarik hitungan domain pengarah dari penyedia Anda saat ini dan dari CranSEO, dan plot terhadap satu sama lain pada sumbu log. Anda harus melihat diagonal kasar, bukan yang tepat, karena rayapan berbeda dan kami menyegarkan sekitar bulanan; DataForSEO, Ahrefs, dan Semrush masing-masing melihat web yang sedikit berbeda.
Baca pencilan, bukan rata-rata. Di mana hitungan kami jauh di bawah, periksa apakah domainnya baru atau baru saja pindah. Di mana jauh di atas, periksa subdomain. Glosarium mendefinisikan apa yang kami hitung sebagai domain pengarah, dan runbook menunjukkan cara menyimpan kedua penarikan di samping satu sama lain.
Sebelum run produksi pertama
- Kunci dibaca dari lingkungan, dan pengujian mencakup kunci yang hilang
- Satu panggilan pengujian pada satu domain, dicatat dengan bidang kreditnya
- Cabang eksplisit untuk HTTP 401 dan HTTP 402
- Hitungan baris ditulis di setiap tahap
- Tanggal snapshot ditulis di sebelah setiap file yang disimpan