# Référence SERP API : GET /search et GET /credits

> SERP API SerpCrypto : paramètres GET /search, moteurs, blocs de réponse, codes d'erreur et GET /credits avec curl, Python et Node.js.

- URL: https://serpcrypto.com/fr/docs/search/
- Dernière mise à jour: 2026-10-22
- Éditeur: SerpCrypto (https://serpcrypto.com)

Chaque paramètre, valeur par défaut et code d'erreur de l'API SerpCrypto, version 1. URL de base : `https://serpcrypto.com/api/v1`. Toutes les requêtes utilisent HTTPS ; toutes les réponses sont en JSON en UTF-8.

**Réponse rapide — Quels paramètres prend l'endpoint de recherche SerpCrypto ?**

`GET https://serpcrypto.com/api/v1/search` prend un paramètre obligatoire, `q`, et neuf facultatifs : `engine`, `gl`, `hl`, `location`, `google_domain`, `device`, `page`, `safe` et `period`. **SerpCrypto** renvoie du JSON et facture 1 crédit par requête réussie sur tous les 6 moteurs ; les erreurs sont gratuites. Les packs commencent à 7,50 $US pour 10 000 recherches, payables en crypto, sans KYC.

## Comment m'authentifier ?

Envoyez votre clé de deux façons. La méthode recommandée est l'en-tête `Authorization: Bearer YOUR_KEY`. L'autre est le paramètre de requête `api_key=YOUR_KEY`, pratique pour un test rapide dans un onglet de navigateur.

Une clé absente, erronée ou révoquée renvoie `401 invalid_api_key` et ne coûte rien. Des clés API que vous pouvez créer et révoquer à tout moment depuis votre tableau de bord, ainsi vous pouvez attribuer une clé à chaque script ou serveur et en révoquer une sans toucher aux autres.

## Lancer une recherche

`GET /api/v1/search`

Lance une recherche sur le moteur choisi et renvoie la page de résultats en JSON. Une recherche réussie utilise 1 crédit, quel que soit le moteur ; une erreur n'en utilise aucun. Les paramètres vont dans la query string, encodés en URL. L'exemple demande à Google les torréfacteurs de café à Austin, Texas ; les IDs, décomptes et résultats sont illustratifs.

Authentification : clé API dans l'en-tête `Authorization: Bearer API_KEY`.

**Paramètres**

| Nom | Emplacement | Type | Obligatoire | Description |
| --- | --- | --- | --- | --- |
| `q` | query | string | Oui | La requête de recherche, telle qu'une personne la taperait. Les opérateurs de recherche comme les guillemets ou `site:` font partie de la requête. |
| `engine` | query | string | Non | `google` (par défaut), `google_news`, `google_images`, `google_maps`, `google_shopping` ou `bing`. |
| `gl` | query | string | Non | Pays des résultats : code ISO 3166-1 alpha-2 en minuscules, tel que `us`, `de` ou `br`. Par défaut `us`. |
| `hl` | query | string | Non | Langue de l'interface, telle que `en`, `de` ou `pt-BR`. Par défaut `en`. |
| `location` | query | string | Non | Lieu au niveau de la ville, écrit `City, Region, Country`, tel que `Austin, Texas, United States`. Voir [locations](https://serpcrypto.com/fr/docs/locations/). |
| `google_domain` | query | string | Non | Domaine Google sur lequel chercher, tel que `google.de`. Par défaut : le domaine du pays `gl`. Ignoré lorsque `engine=bing`. |
| `device` | query | string | Non | `desktop` (par défaut) ou `mobile`. |
| `page` | query | integer | Non | Page de résultats de 1 (par défaut) à 10. Chaque page est une recherche distincte et utilise 1 crédit. |
| `safe` | query | string | Non | `active` filtre les résultats explicites ; `off` (par défaut) ne le fait pas. |
| `period` | query | string | Non | Uniquement les résultats de la dernière heure (`h`), du dernier jour (`d`), de la dernière semaine (`w`), du dernier mois (`m`) ou de la dernière année (`y`). |
| `api_key` | query | string | Non | Votre clé, si vous n'envoyez pas l'en-tête `Authorization`. |

**Réponse** `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);
```

## Quelles valeurs d'engine existent, et que renvoie chacune ?

La structure (`search_metadata`, `search_parameters`, `search_information`) est la même sur chaque engine. Un bloc n'apparaît que lorsque la page l'affiche.

| `engine` | Source | Blocs principaux de la réponse |
| --- | --- | --- |
| `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` : titre, lien, source, date, snippet, vignette |
| `google_images` | Google Images | `images_results` : URL d'origine et taille, vignette, page source |
| `google_maps` | Google Maps | `local_results` : nom, adresse, téléphone, site web, note, avis, catégorie, horaires, coordonnées |
| `google_shopping` | Google Shopping | `shopping_results` : titre, prix, prix extrait, devise, marchand, livraison, note |
| `bing` | Bing | `organic_results`, `related_searches` |

## Consulter vos crédits

`GET /api/v1/credits`

Renvoie les crédits restants sur votre compte, les crédits utilisés depuis minuit UTC et le nombre de recherches que votre compte peut lancer simultanément. Cet appel est gratuit. Les valeurs ci-dessous sont des exemples.

Authentification : clé API dans l'en-tête `Authorization: Bearer API_KEY`.

**Réponse** `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);
```

## Quelles erreurs l'API peut-elle renvoyer ?

Chaque erreur a pour corps `{"error": {"code": "…", "message": "…"}}`. La [page des erreurs](https://serpcrypto.com/fr/docs/errors/) explique chacune et indique le code de nouvelle tentative.

| HTTP | `code` | Quand cela se produit | Facturé |
| --- | --- | --- | --- |
| 400 | `invalid_parameter` | Un paramètre obligatoire manque ou une valeur sort de la liste autorisée | Non |
| 401 | `invalid_api_key` | La clé est absente, erronée ou révoquée | Non |
| 402 | `insufficient_credits` | Votre compte n'a plus de crédits | Non |
| 429 | `concurrency_limit` | Trop de recherches sont en cours simultanément sur votre compte | Non |
| 502 | `search_failed` | L'engine ou la collecte a échoué pour cette requête ; réessayez | Non |
| 504 | `search_timeout` | Aucune réponse dans les délais ; réessayez | Non |

## Qu'est-ce qui est facturé, exactement ?

- **Une recherche réussie = un crédit**, sur chaque engine, y compris Google Maps et Google Shopping.
- **Chaque page de résultats est une recherche.** Environ 10 résultats organiques par page, comme Google les sert depuis qu'il n'honore plus num=100 en septembre 2025 ; chaque page supplémentaire coûte un crédit de plus.
- **Les erreurs sont gratuites :** toute réponse avec un statut HTTP autre que 200 n'utilise aucun crédit.
- **Consulter vos crédits est gratuit.**

Les crédits de recherche prépayés n'expirent jamais : les requêtes inutilisées restent sur votre compte jusqu'à ce que vous les utilisiez. Les packs vont de 7,50 $US pour 10 000 recherches à 0,30 $US/1K requêtes sur le plus grand ; voir [la tarification](https://serpcrypto.com/fr/pricing/).

## Comment dois-je encoder la requête ?

Envoyez `q` encodé en URL, comme toute valeur de query string : un espace devient `%20` ou `+`, et les lettres accentuées sont encodées en UTF-8. curl le fait avec `--data-urlencode`, Python `requests` et `httpx` le font avec `params=`, et Node.js avec `URLSearchParams`.

Écrivez la requête exactement comme une personne la taperait dans le champ de recherche. Les guillemets, le signe moins ou `site:` restent dans `q` ; l'engine décide comment les appliquer, comme il le ferait pour un visiteur.

## L'API est-elle versionnée ?

Oui. La version fait partie du chemin : `/api/v1/`. De nouveaux champs ou blocs peuvent apparaître dans les réponses de la version 1, votre code doit donc ignorer les clés qu'il ne connaît pas. La suppression ou le renommage d'un champ s'accompagnerait d'une nouvelle version dans le chemin, pas d'une modification de `v1`.

## Questions sur la référence API

### Puis-je envoyer une requête POST avec un corps JSON ?

Pas en version 1 : les deux endpoints prennent des requêtes GET avec les paramètres dans la query string. Chaque appel reste ainsi facile à reproduire avec curl ou un navigateur, et facile à journaliser sans le corps.

### Combien de résultats renvoie une recherche ?

Environ 10 résultats organiques par page, comme Google les sert depuis qu'il n'honore plus num=100 en septembre 2025 ; chaque page supplémentaire coûte un crédit de plus. Pour collecter 30 résultats, demandez `page=1`, `page=2` et `page=3` : trois requêtes, trois crédits.

### Que se passe-t-il quand mes crédits sont épuisés ?

La recherche suivante renvoie `402 insufficient_credits` et ne consomme rien. Achetez un autre pack depuis votre solde sur la [page de tarifs](https://serpcrypto.com/fr/pricing/) ; votre clé continue de fonctionner et les recherches reprennent aussitôt.

### Puis-je utiliser la même clé depuis plusieurs serveurs ?

Oui. Une clé n'est pas liée à une adresse IP. Ce qui est limité, c'est le nombre de recherches simultanées sur le compte : `concurrency_limit` dans `GET /credits` donne le chiffre.

---

SerpCrypto: SerpCrypto est une API SERP pour les développeurs et les agents IA qui renvoie les résultats de recherche Google et Bing en JSON, payable en crypto sans envoi de pièce d'identité. Les crédits de recherche prépayés à partir de 0,30 $US/1K requêtes n'expirent jamais. Sans KYC — pas de pièce d'identité, pas de selfie, pas de documents. Payer en crypto.
