API pencarian makna kata dan peribahasa KBBI berbasis penapisan HTML menggunakan CodeIgniter 4 dan PHP 8.
Berikut adalah beberapa tampilan dasbor dari API KBBI 2026:
Klik untuk melihat tangkapan layar
Halaman utama yang menampilkan status server, spesifikasi sistem, data penulis, dan daftar endpoint yang tersedia.
Tampilan data visualisasi spesifikasi sistem dan konfigurasi API dalam representasi JSON interaktif.
Fitur sandbox untuk menguji pencarian kata secara langsung dari halaman utama.
Notifikasi yang otomatis muncul jika berkas konfigurasi .env atau GeoNode API Key belum dikonfigurasi dengan benar di server.
Untuk menjaga performa dan efisiensi kuota, API ini menggunakan alur kerja multi-lapis saat mencari sebuah kata:
graph TD
Start([Mulai Pencarian Kata]) --> Lapis1[Lapis 1: Scraping Langsung cURL ke KBBI Resmi]
Lapis1 --> CheckSuccess1{Apakah Scraping Langsung Sukses?}
CheckSuccess1 -- Ya --> ParseHTML[Ubah Struktur HTML ke JSON] --> ReturnData([Kembalikan Hasil Pencarian])
CheckSuccess1 -- Tidak/WAF Block/Timeout --> Lapis2[Lapis 2: Fallback ke GeoNode Scraper API]
Lapis2 --> CheckConfig{Apakah GeoNode API Key Terkonfigurasi?}
CheckConfig -- Tidak --> ShowErrorConfig[Tolak & Kembalikan Error Konfigurasi]
CheckConfig -- Ya --> CheckLimit{Apakah Total Limit Bulanan Lokal Tercapai?}
CheckLimit -- Ya --> ShowErrorLimit[Tolak & Kembalikan Error Jatah Limit]
CheckLimit -- Tidak --> ExecGeoNode[Kirim Request via Proxy Residential GeoNode]
ExecGeoNode --> RotateKey[Rotasi API Key secara Round-Robin]
RotateKey --> SaveLimit[Catat Penggunaan Kuota lokal di geonode_limit.json]
SaveLimit --> ParseHTML
- Lapis 1 - Scraping Langsung (Direct Request): Sistem mencoba melakukan koneksi cURL langsung ke situs resmi KBBI. Proses ini bersifat gratis dan tanpa batasan (sangat cocok untuk localhost).
- Lapis 2 - Fallback GeoNode Scraper API (Automated): Jika koneksi langsung di atas gagal atau mengalami waktu habis (terutama saat dideploy di server VPS yang diblokir oleh WAF KBBI), sistem akan otomatis mengalihkan permintaan menggunakan GeoNode Scraper API melalui Proxy Residensial.
- Rotasi Multi-Akun dan Jatah Kuota Lokal: Mendukung penggunaan lebih dari 1 GeoNode API Key secara bergantian (round-robin) dan dilengkapi dengan pencatat batas kuota bulanan lokal otomatis (
writable/geonode_limit.json) berdasarkan tanggal pembaruan masing-masing akun agar kuota gratis Anda tidak terlampaui.
Ikuti langkah-langkah di bawah ini untuk memasang dan menjalankan API KBBI ini pada mesin lokal Anda:
- PHP versi 8.1 atau yang lebih baru (Disarankan PHP 8.2 / 8.3 / 8.4 / 8.5)
- Ekstensi PHP diaktifkan:
curl,dom,xml - Composer terinstal pada komputer Anda
- Server Lokal (Disarankan menggunakan Laragon, XAMPP, atau WAMP untuk mempermudah pengaturan lingkungan lokal PHP)
Unduh kode sumber proyek ini ke komputer lokal Anda:
git clone https://github.com/dyazincahya/API-KBBI-PHP-Codeigniter-4.git
cd API-KBBI-PHP-Codeigniter-4Jalankan perintah berikut untuk mengunduh semua pustaka dependensi framework CodeIgniter 4:
composer installSalin berkas konfigurasi bawaan env menjadi .env:
cp env .env(Di Windows PowerShell, gunakan perintah: copy env .env)
Jika Anda menerapkan API ini ke hosting/VPS, IP server Anda kemungkinan besar akan diblokir oleh WAF resmi KBBI. Anda wajib menyiapkannya dengan cara:
- Daftar akun gratis di GeoNode Scraper API.
- Selesaikan verifikasi email dan salin API Key dari dasbor Anda.
- Buka berkas
.envhasil salinan tadi menggunakan penyunting teks, lalu konfigurasikan kunci Anda di bagian bawah:Anda dapat memasukkan lebih dari satu akun/kunci untuk dirotasi secara bergantian oleh sistem. Catatan: Setiap akun GeoNode Scraper API memiliki batasan (limit) gratis sebesar 1.500 permintaan per bulan, yang akan diperbarui secara otomatis (reset) setiap bulannya berdasarkan tanggal pendaftaran masing-masing akun.geonode.apiKeys.0.name = 'Akun Utama Anda' geonode.apiKeys.0.apikey = 'MASUKKAN_API_KEY_ANDA_DI_SINI' geonode.apiKeys.0.limit = 1499 geonode.apiKeys.0.reset_day = 10
Nyalakan server pengembangan CodeIgniter menggunakan Spark:
php spark serveSetelah aktif, buka peramban Anda dan akses halaman utama di: http://localhost:8080/
API ini menyediakan beberapa endpoint fleksibel untuk mencari definisi kata atau frasa:
Mengembalikan deskripsi metadata dasar sistem.
- URL:
/kbbi - Metode:
GET - Contoh Respons:
{ "api": { "name": "API KBBI 2026", "source": "https://kbbi.kemendikdasmen.go.id", "method": "HTML Parsing" }, "technology": { "lang": "PHP 8.4.12", "framework": "CodeIgniter 4.7.4" } }
Mencari definisi kata spesifik berdasarkan segmentasi URI.
- URL:
/kbbi/search/{kata_kunci}(Contoh:/kbbi/search/demokrasi) - Metode:
GET
Mencari definisi kata spesifik menggunakan parameter query string.
- URL:
/kbbi?search={kata_kunci}(Contoh:/kbbi?search=demokrasi) - Metode:
GET
{
"success": true,
"status": 200,
"message": "Hasil ditemukan.",
"data": [
{
"word": "demokrasi",
"lema": "de.mo.kra.si",
"arti": [
{
"deskripsi": "n Pol (bentuk atau sistem) pemerintahan yang seluruh rakyatnya turut serta memerintah dengan perantaraan wakilnya; pemerintahan rakyat"
},
{
"deskripsi": "n Pol gagasan atau pandangan hidup yang mengutamakan persamaan hak dan kewajiban serta perlakuan yang sama bagi semua warga negara"
}
],
"tesaurusLink": "https://tesaurus.kemendikdasmen.go.id/tematis/lema/demokrasi"
}
]
}Agar performa scraping dan request fallback berjalan lancar di server hosting/cPanel Anda, silakan terapkan penyesuaian parameter PHP berikut:
memory_limit: Ubah ke nilai yang lebih besar (minimal256Matau512M).max_execution_time: Atur ke nilai yang lebih tinggi (minimal120detik) untuk menangani waktu tunggu fallback scraper.- OPcache: Aktifkan OPcache di menu PHP Selector hosting Anda untuk mempercepat eksekusi framework CI4.
- Ekstensi PHP: Pastikan ekstensi
dom,xml, dancurltelah diaktifkan.
- KBBI-Go (Versi Bahasa GO) - API KBBI dengan performa tinggi yang ditulis menggunakan bahasa Go.
- kbbi-api (Versi Bahasa Go oleh raf555) - API KBBI alternatif siap pakai yang dibangun menggunakan bahasa Go.
- KBBI-SQL-Database - Jika Anda tidak ingin menggunakan API, Anda dapat mengunduh basis data SQL KBBI lengkap dalam format MySQL, SQLite, PostgreSQL, CSV, JSON, atau XML.
- MyKBBI Android App - Aplikasi Kamus Bahasa Indonesia buatan Kang Cahya di Google Play Store.
- Proyek ini dilisensikan di bawah lisensi MIT License.
- Dibuat dan dikembangkan oleh Kang Cahya.