# Referensi SERP API: GET /search dan GET /credits

> Referensi SERP API SerpCrypto: parameter GET /search, engine, default, blok respons, kode error, dan GET /credits, dengan curl, Python, dan Node.js.

- URL: https://serpcrypto.com/id/docs/search/
- Terakhir diperbarui: 2026-10-22
- Penerbit: SerpCrypto (https://serpcrypto.com)

Setiap parameter, default, dan kode error dari API SerpCrypto, versi 1. Base URL: `https://serpcrypto.com/api/v1`. Semua request menggunakan HTTPS; semua respons adalah JSON dalam UTF-8.

**Jawaban singkat — Parameter apa saja yang diterima endpoint pencarian SerpCrypto?**

`GET https://serpcrypto.com/api/v1/search` menerima satu parameter wajib, `q`, dan sembilan parameter opsional: `engine`, `gl`, `hl`, `location`, `google_domain`, `device`, `page`, `safe`, dan `period`. **SerpCrypto** mengembalikan JSON dan memotong 1 kredit per pencarian yang berhasil di semua 6 engine; error gratis. Pack mulai dari US$7,50 untuk 10.000 pencarian, dibayar dengan kripto tanpa KYC.

## Bagaimana cara melakukan autentikasi?

Kirim API key Anda dengan salah satu dari dua cara. Cara yang disarankan adalah header `Authorization: Bearer YOUR_KEY`. Cara lainnya adalah query parameter `api_key=YOUR_KEY`, praktis untuk tes cepat di tab browser.

API key yang hilang, salah, atau dicabut akan mendapat `401 invalid_api_key` dan tidak memotong kredit. API key yang dapat Anda buat dan cabut kapan saja dari dashboard Anda, sehingga Anda bisa memberi setiap skrip atau server API key-nya sendiri dan mencabut satu tanpa menyentuh yang lain.

## Menjalankan pencarian

`GET /api/v1/search`

Menjalankan satu pencarian di engine yang dipilih dan mengembalikan halaman hasil sebagai JSON. Pencarian yang berhasil memotong 1 kredit, apa pun engine-nya; error tidak memotong kredit. Parameter dikirim di query string, di-URL-encode. Contoh meminta Google untuk coffee roasters di Austin, Texas; ID, jumlah, dan hasil hanya ilustrasi.

Autentikasi: API key di header `Authorization: Bearer API_KEY`.

**Parameter**

| Nama | Di | Tipe | Wajib | Deskripsi |
| --- | --- | --- | --- | --- |
| `q` | query | string | Ya | Kueri pencarian, seperti yang diketik orang. Operator pencarian seperti tanda kutip atau `site:` adalah bagian dari kueri. |
| `engine` | query | string | Tidak | `google` (default), `google_news`, `google_images`, `google_maps`, `google_shopping`, atau `bing`. |
| `gl` | query | string | Tidak | Negara hasil: kode ISO 3166-1 alpha-2 huruf kecil, seperti `us`, `de`, atau `br`. Default `us`. |
| `hl` | query | string | Tidak | Bahasa antarmuka, seperti `en`, `de`, atau `pt-BR`. Default `en`. |
| `location` | query | string | Tidak | Lokasi tingkat kota, ditulis `City, Region, Country`, seperti `Austin, Texas, United States`. Lihat [locations](https://serpcrypto.com/id/docs/locations/). |
| `google_domain` | query | string | Tidak | Domain Google yang akan dicari, seperti `google.de`. Default: domain negara `gl`. Diabaikan saat `engine=bing`. |
| `device` | query | string | Tidak | `desktop` (default) atau `mobile`. |
| `page` | query | integer | Tidak | Halaman hasil dari 1 (default) hingga 10. Setiap halaman adalah pencarian terpisah dan memakai 1 kredit. |
| `safe` | query | string | Tidak | `active` memfilter hasil eksplisit; `off` (default) tidak. |
| `period` | query | string | Tidak | Hanya hasil dari satu jam terakhir (`h`), hari (`d`), minggu (`w`), bulan (`m`) atau tahun (`y`). |
| `api_key` | query | string | Tidak | API key Anda, jika Anda tidak mengirim header `Authorization`. |

**Response** `200`

```json
{
  "search_metadata": {
    "id": "srch_7f3a9c2e41b8",
    "status": "success",
    "engine": "google",
    "created_at": "2026-10-22T09:14:05Z",
    "credits_used": 1
  },
  "search_parameters": {
    "engine": "google",
    "q": "coffee roasters",
    "gl": "us",
    "hl": "en",
    "location": "Austin, Texas, United States",
    "google_domain": "google.com",
    "device": "desktop",
    "page": 1
  },
  "search_information": {
    "total_results": 18600000,
    "query_displayed": "coffee roasters"
  },
  "local_results": [
    {
      "position": 1,
      "title": "Example Coffee Roasters",
      "address": "123 Example St, Austin, TX",
      "rating": 4.7,
      "reviews": 312,
      "type": "Coffee roasters"
    }
  ],
  "organic_results": [
    {
      "position": 1,
      "title": "The 12 best coffee roasters in Austin",
      "link": "https://www.example.com/austin/coffee-roasters",
      "displayed_link": "www.example.com › austin › coffee",
      "snippet": "From light Nordic roasts to dark espresso blends, these local roasters…",
      "date": "Sep 30, 2026"
    },
    {
      "position": 2,
      "title": "Example Roasting Co. | Fresh beans, roasted in Austin",
      "link": "https://www.example.org/",
      "displayed_link": "www.example.org",
      "snippet": "Small-batch coffee roasted every weekday and shipped the same day…"
    }
  ],
  "people_also_ask": [
    {
      "question": "What is the oldest coffee roaster in Austin?",
      "snippet": "…",
      "title": "Austin coffee history",
      "link": "https://www.example.net/austin-coffee-history"
    }
  ],
  "related_searches": [
    {
      "query": "coffee roasters near me"
    },
    {
      "query": "coffee roasters austin wholesale"
    }
  ],
  "pagination": {
    "current": 1,
    "next_page": 2
  }
}
```

*curl*

```bash
curl -sG "https://serpcrypto.com/api/v1/search" \
  -H "Authorization: Bearer $SERPCRYPTO_API_KEY" \
  --data-urlencode "q=coffee roasters" \
  --data-urlencode "location=Austin, Texas, United States" \
  -d gl=us -d hl=en -d device=desktop
```

*Python*

```python
import os

import requests

r = requests.get(
    "https://serpcrypto.com/api/v1/search",
    params={
        "q": "coffee roasters",
        "location": "Austin, Texas, United States",
        "gl": "us",
        "hl": "en",
    },
    headers={"Authorization": "Bearer " + os.environ["SERPCRYPTO_API_KEY"]},
    timeout=60,
)
r.raise_for_status()
print(r.json()["organic_results"][0]["link"])
```

*Node.js*

```javascript
const params = new URLSearchParams({
  q: "coffee roasters",
  location: "Austin, Texas, United States",
  gl: "us",
  hl: "en",
});
const res = await fetch("https://serpcrypto.com/api/v1/search?" + params, {
  headers: { Authorization: "Bearer " + process.env.SERPCRYPTO_API_KEY },
});
const data = await res.json();
console.log(data.organic_results?.[0]?.link);
```

## Nilai engine apa saja yang ada, dan apa yang dikembalikan masing-masing?

Struktur (`search_metadata`, `search_parameters`, `search_information`) sama di setiap engine. Sebuah blok hanya muncul jika halaman menampilkannya.

| `engine` | Sumber | Blok utama dalam jawaban |
| --- | --- | --- |
| `google` | Google Search | `ai_overview`, `organic_results`, `ads`, `people_also_ask`, `local_results`, `knowledge_graph`, `top_stories`, `inline_videos`, `shopping_results`, `related_searches`, `pagination` |
| `google_news` | Google News | `news_results`: judul, link, sumber, tanggal, snippet, thumbnail |
| `google_images` | Google Images | `images_results`: URL asli dan ukuran, thumbnail, halaman sumber |
| `google_maps` | Google Maps | `local_results`: nama, alamat, telepon, website, rating, ulasan, kategori, jam buka, koordinat |
| `google_shopping` | Google Shopping | `shopping_results`: judul, harga, harga yang diekstrak, mata uang, merchant, pengiriman, rating |
| `bing` | Bing | `organic_results`, `related_searches` |

## Baca kredit Anda

`GET /api/v1/credits`

Mengembalikan kredit yang tersisa di akun Anda, kredit yang terpakai sejak tengah malam UTC dan jumlah pencarian yang dapat dijalankan akun Anda secara bersamaan. Panggilan ini gratis. Nilai di bawah adalah contoh.

Autentikasi: API key di header `Authorization: Bearer API_KEY`.

**Response** `200`

```json
{
  "credits_remaining": 84210,
  "credits_used_today": 1290,
  "concurrency_limit": 10
}
```

*curl*

```bash
curl -s "https://serpcrypto.com/api/v1/credits" \
  -H "Authorization: Bearer $SERPCRYPTO_API_KEY"
```

*Python*

```python
import os

import requests

r = requests.get(
    "https://serpcrypto.com/api/v1/credits",
    headers={"Authorization": "Bearer " + os.environ["SERPCRYPTO_API_KEY"]},
    timeout=30,
)
r.raise_for_status()
print(r.json()["credits_remaining"])
```

*Node.js*

```javascript
const res = await fetch("https://serpcrypto.com/api/v1/credits", {
  headers: { Authorization: "Bearer " + process.env.SERPCRYPTO_API_KEY },
});
const { credits_remaining } = await res.json();
console.log(credits_remaining);
```

## Error apa saja yang dapat dikembalikan API?

Setiap error memiliki body `{"error": {"code": "…", "message": "…"}}`. [Halaman errors](https://serpcrypto.com/id/docs/errors/) menjelaskan masing-masing dan menunjukkan kode retry.

| HTTP | `code` | Kapan terjadi | Ditagih |
| --- | --- | --- | --- |
| 400 | `invalid_parameter` | Parameter wajib tidak ada atau nilainya di luar daftar yang diizinkan | Tidak |
| 401 | `invalid_api_key` | API key tidak ada, salah atau dicabut | Tidak |
| 402 | `insufficient_credits` | Akun Anda tidak memiliki sisa kredit | Tidak |
| 429 | `concurrency_limit` | Terlalu banyak pencarian berjalan bersamaan di akun Anda | Tidak |
| 502 | `search_failed` | Engine atau pengumpulan gagal untuk permintaan ini; coba lagi | Tidak |
| 504 | `search_timeout` | Tidak ada jawaban tepat waktu; coba lagi | Tidak |

## Apa yang ditagih, tepatnya?

- **Satu pencarian berhasil = satu kredit**, di setiap engine, termasuk Google Maps dan Google Shopping.
- **Setiap halaman hasil adalah satu pencarian.** Sekitar 10 hasil organik per halaman, sebagaimana yang disajikan Google sejak berhenti mematuhi num=100 pada September 2025; setiap halaman tambahan dikenai satu kredit lagi.
- **Error gratis:** setiap jawaban dengan status HTTP selain 200 tidak memakai kredit.
- **Membaca kredit Anda gratis.**

Kredit pencarian prabayar tidak pernah kedaluwarsa: pencarian yang belum terpakai tetap ada di akun Anda sampai Anda menggunakannya. Paket mulai dari US$7,50 untuk 10.000 pencarian hingga US$0,30/1K pencarian pada paket terbesar; lihat [harga](https://serpcrypto.com/id/pricing/).

## Bagaimana cara mengencode kueri?

Kirim `q` dalam bentuk URL-encoded, seperti nilai query-string lainnya: spasi menjadi `%20` atau `+`, dan huruf beraksen diencode sebagai UTF-8. curl melakukannya dengan `--data-urlencode`, Python `requests` dan `httpx` melakukannya dengan `params=`, dan Node.js melakukannya dengan `URLSearchParams`.

Tulis kueri persis seperti orang mengetikkannya di kotak pencarian. Tanda kutip, tanda minus atau `site:` tetap di dalam `q`; engine yang memutuskan cara menerapkannya, seperti untuk pengunjung.

## Apakah API memakai versi?

Ya. Versi adalah bagian dari path: `/api/v1/`. Field atau blok baru dapat muncul dalam jawaban versi 1, jadi kode Anda sebaiknya mengabaikan key yang tidak dikenalnya. Menghapus atau mengganti nama field akan disertai versi baru di path, bukan sebagai perubahan pada `v1`.

## Pertanyaan seputar referensi API

### Bisakah saya mengirim permintaan POST dengan body JSON?

Tidak di versi 1: kedua endpoint menerima permintaan GET dengan parameter di query string. Ini membuat setiap panggilan mudah direproduksi dengan curl atau browser, dan mudah dicatat log-nya tanpa body.

### Berapa banyak hasil yang dikembalikan satu pencarian?

Sekitar 10 hasil organik per halaman, sebagaimana yang disajikan Google sejak berhenti mematuhi num=100 pada September 2025; setiap halaman tambahan dikenai satu kredit lagi. Untuk mengumpulkan 30 hasil, minta `page=1`, `page=2`, dan `page=3`: tiga pencarian, tiga kredit.

### Apa yang terjadi jika kredit saya habis?

Pencarian berikutnya mengembalikan `402 insufficient_credits` dan tidak memakai apa pun. Beli pack lain dari saldo Anda di [halaman harga](https://serpcrypto.com/id/pricing/); API key Anda tetap berfungsi dan pencarian langsung berlanjut.

### Bisakah saya memakai API key yang sama dari beberapa server?

Bisa. API key tidak terikat pada alamat IP. Yang dibatasi adalah jumlah pencarian yang berjalan bersamaan pada akun: `concurrency_limit` di `GET /credits` menunjukkan angkanya.

---

SerpCrypto: SerpCrypto adalah SERP API untuk developer dan AI agent yang mengembalikan hasil pencarian Google dan Bing dalam format JSON, dibayar dengan kripto tanpa unggah identitas. Kredit pencarian prabayar mulai dari US$0,30/1K pencarian tidak pernah kedaluwarsa. Tanpa KYC — tanpa ID, tanpa selfie, tanpa dokumen. Bayar dengan kripto.
