Documentation

API InvestigUser

Lancez toutes les recherches disponibles sur le site depuis vos propres scripts. L'API repose sur deux appels : POST pour créer la recherche, GET pour récupérer le résultat quand il est prêt.

Authentification

Chaque requête doit transporter votre clé API dans l'en-tête HTTP suivant :

HTTP HEADER
Authorization: Bearer VOTRE_CLÉ_API

Alternative acceptée : X-API-Key: VOTRE_CLÉ_API

Connectez-vous pour afficher votre clé API directement ici. Connexion →

Quotas

Compte standard5 recherches / jour
GOV / Donateur (≥ 3 €/an)Illimité

Le quota est partagé entre le site web et l'API. Chaque recherche — quelle que soit son origine — est décomptée du même plafond journalier. La réponse de POST /search contient le champ quota_remaining (ou null si illimité).

GET Récupérer le résultat

GET https://investiguser.com/dashboard_web/investiguser_online/api/v1/result.php?request_id={id}&wait={0-25}
ParamètreTypeDescription
request_idintegerrequisL'identifiant retourné par POST /search
waitintegeroptionnelDurée de long-poll en secondes (0–25). Recommandé : 25. Le serveur maintient la connexion ouverte jusqu'à ce que le résultat soit prêt ou que le délai soit atteint. Évite de répéter les appels.

Statuts possibles

pending

La recherche est en file d'attente, le worker ne l'a pas encore traitée.

processing

Le worker traite activement la recherche.

completed

Résultats disponibles dans le champ results[].

error

La recherche a échoué côté backend. Réessayez ou signalez-le.

Réponse completed

JSON
{
  "success":      true,
  "request_id":  4821,
  "status":       "completed",
  "search_type": "username",
  "platforms": ["twitter", "instagram"],
  "created_at":  "2025-06-14 18:30:00",
  "results": [
    {
      "platform":   "twitter",
      "data":       { ... },  // objet JSON spécifique à chaque plateforme
      "created_at": "2025-06-14 18:31:12"
    }
  ]
}
Si le statut est encore pending ou processing, la réponse contient "retry_after": 5 — relancez l'appel après ce délai. Avec wait=25, vous n'aurez en général que 1–2 appels à faire.

Types de recherche

Valeur à passer dans searchType. La valeur passée dans searchValue doit correspondre au type choisi.

username Pseudo / Login

  • Nom d'utilisateur exact sur les réseaux
  • Exemple : "elonmusk"
Plateformes compatibles : twitter instagram tiktok snapchat telegram userscan marketplace userweb AllInOne_login

email Adresse email

Plateformes : emailscan googlescan linkedinscan waybackscan AllInOne_email

phone Téléphone

  • Format international recommandé
  • Exemple : "33612345678"
  • Optionnel : country_code = "FR"
Plateformes : telegram whatsapp AllInOne_phone

identity Nom & Prénom

  • Prénom Nom séparés par un espace
  • Exemple : "Jean Claude Dupont"
Plateformes : linkedin linkedin_people facebook identityscan AllInOne_identity

ip Adresse IP

  • IPv4 ou IPv6
  • Exemple : "90.84.12.34"
Plateformes : ipscan

domain Nom de domaine

  • Sans https:// ni slash final
  • Exemple : "exemple.com"
Plateformes : domainscan waybackscan

btc Adresse Bitcoin

  • Adresse wallet BTC
  • Exemple : "1A1zP1eP5QGefi2..."
Plateformes : btc

societe Société / Entreprise

  • Nom de l'entreprise (+ ville, département, pays en optionnel)
  • Passer un objet JSON dans searchValue
Plateformes : linkedin_societe linkedin_soc_ppl AllInOne_societe

Plateformes

Valeurs à passer dans le tableau platforms[]. Vous pouvez en passer plusieurs à la fois pour une même recherche.

Réseaux sociaux

twitterinstagramtiktok snapchatfacebooktelegram whatsapp

Moteurs de recherche & web

googlescanuserscanuserweb emailscanwaybackscanmarketplace

LinkedIn

linkedinlinkedin_people linkedin_societelinkedin_soc_ppl linkedinscan

Technique

ipscandomainscanbtc identityscan

X.com avancé

tweets_screenshotsx_friends twitter_multitelegram_channel

All in One GOV / Donateur uniquement

AllInOne_loginAllInOne_phone AllInOne_emailAllInOne_identity AllInOne_societe
Les plateformes telegram et whatsapp utilisent leurs API officielles. Toutes les autres fonctionnent par scripts directs — sans API tierce.

Codes d'erreur

HTTPerrorCause & solution
200Succès.
202Recherche acceptée, résultat à venir.
401missing_api_key / invalid_api_keyClé absente ou incorrecte. Vérifiez l'en-tête Authorization: Bearer …
403api_disabledL'API n'est pas activée sur votre compte → MonCompte.
403premium_requiredVous avez demandé une plateforme All in One réservée aux GOV/Donateurs.
403forbiddenLe request_id ne vous appartient pas.
404not_foundrequest_id inexistant (ou purgé après 8 h).
405method_not_allowedMauvaise méthode HTTP.
422invalid_params / unknown_platformParamètre manquant ou plateforme inconnue.
429quota_exceededLimite de 5 recherches/jour atteinte. Revient à minuit (heure serveur).
500db_unavailableErreur interne. Réessayez dans quelques secondes.

Format de toutes les erreurs

JSON
{ "success": false, "error": "quota_exceeded", "message": "Limite de 5 recherches…" }

Exemples complets

Python — recherche pseudo multi-plateformes

Python
import time, requests

BASE    = "https://investiguser.com/dashboard_web/investiguser_online/api/v1"
API_KEY = "VOTRE_CLÉ_API"
H       = {"Authorization": f"Bearer {API_KEY}"}

# 1. Lancer la recherche
r = requests.post(f"{BASE}/search.php", json={
    "searchType":  "username",
    "searchValue": "elonmusk",
    "platforms":   ["twitter", "instagram", "tiktok"],
}, headers=H, timeout=30)
r.raise_for_status()
data       = r.json()
request_id = data["request_id"]
print(f"Recherche lancée — id={request_id}, quota restant={data['quota_remaining']}")

# 2. Attendre le résultat (long-poll 25 s)
while True:
    r    = requests.get(f"{BASE}/result.php",
                         params={"request_id": request_id, "wait": 25},
                         headers=H, timeout=40)
    data = r.json()
    if   data["status"] == "completed": break
    elif data["status"] == "error":     raise RuntimeError("Erreur backend")

# 3. Traiter les résultats
for res in data["results"]:
    print(res["platform"], "→", res["data"])

Python — recherche email

Python
requests.post(f"{BASE}/search.php", json={
    "searchType":  "email",
    "searchValue": "[email protected]",
    "platforms":   ["emailscan", "googlescan", "linkedinscan"],
}, headers=H)

Python — recherche société

Python
requests.post(f"{BASE}/search.php", json={
    "searchType":  "societe",
    "searchValue": {
        "name":       "Acme Corp",
        "city":       "Paris",
        "department": "75",
        "country":    "FR",
    },
    "platforms":   ["linkedin_societe", "linkedin_soc_ppl"],
}, headers=H)

curl — recherche IP

bash / curl
# Lancer
curl -s -X POST "https://investiguser.com/dashboard_web/investiguser_online/api/v1/search.php" \
  -H "Authorization: Bearer VOTRE_CLÉ_API" \
  -H "Content-Type: application/json" \
  -d '{"searchType":"ip","searchValue":"90.84.12.34","platforms":["ipscan"]}'

# Récupérer (remplacer 4821 par votre request_id)
curl -s "https://investiguser.com/dashboard_web/investiguser_online/api/v1/result.php?request_id=4821&wait=25" \
  -H "Authorization: Bearer VOTRE_CLÉ_API"

JavaScript (fetch)

JavaScript
const BASE    = "https://investiguser.com/dashboard_web/investiguser_online/api/v1";
const API_KEY = "VOTRE_CLÉ_API";
const H       = { Authorization: `Bearer ${API_KEY}` };

// 1. Lancer
const res = await fetch(`${BASE}/search.php`, {
  method: "POST",
  headers: { ...H, "Content-Type": "application/json" },
  body: JSON.stringify({
    searchType:  "phone",
    searchValue: "33612345678",
    platforms:   ["telegram", "whatsapp"],
    country_code: "FR",
  }),
});
const { request_id } = await res.json();

// 2. Attendre (long-poll)
let done = false;
while (!done) {
  const r    = await fetch(`${BASE}/result.php?request_id=${request_id}&wait=25`, { headers: H });
  const data = await r.json();
  if (data.status === "completed") { console.log(data.results); done = true; }
  else if (data.status === "error") throw new Error("Backend error");
}