search & detail sekolah (lebih sigma)
by RFour · Jul 30, 2026 ·javascript
Basically uhh search and detail Indonesian school info's, and uhh, that's it, pretty cool, this one data is more accurate I think.
TeacherSekolahSearchSchool
dapo.jsjavascript
1const axios = require('axios');
2
3const client = axios.create({
4 baseURL: 'https://dapo.kemendikdasmen.go.id',
5 headers: {
6 'User-Agent': 'Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 Chrome/137.0.0.0 Mobile Safari/537.36',
7 'Accept': '*/*'
8 }
9});
10
11async function getToken() {
12 await client.get('/');
13 const res = await client.get('/env.js');
14 const raw = res.data;
15 const token = raw.match(/VITE_API_TOKEN["']?\s*:\s*["']([^"']+)["']/)?.[1];
16 const url = raw.match(/VITE_STRAPI_URL["']?\s*:\s*["']([^"']+)["']/)?.[1];
17 return { token, url };
18}
19
20function carisekolah(q, cb) {
21 getToken().then(({ token, url }) => {
22 client.get(url + '/api/detail-sekolah/search?q=' + encodeURIComponent(q), {
23 headers: { 'Authorization': 'Bearer ' + token }
24 }).then(r => {
25 const data = r.data.data || [];
26 cb(JSON.stringify(data, null, 2));
27 }).catch(() => cb(null));
28 }).catch(() => cb(null));
29}
30
31function infosekolah(npsn, cb) {
32 getToken().then(({ token, url }) => {
33 client.get(url + '/api/detail-sekolah?npsn=' + npsn, {
34 headers: { 'Authorization': 'Bearer ' + token }
35 }).then(r => {
36 const data = r.data.data || [];
37 cb(JSON.stringify(data, null, 2));
38 }).catch(() => cb(null));
39 }).catch(() => cb(null));
40}
41
42carisekolah('sman 72 jakarta', console.log);
43infosekolah('20100796', console.log);