SEObserver API v1

API SEO complète couvrant les backlinks (propulsé par Majestic), le suivi SERP, la vérification d'indexation et le monitoring de mots-clés organiques.

Authentification

Toutes les requêtes API nécessitent une clé API. Transmettez-la via le header HTTP X-SEObserver-key (recommandé) ou en paramètre api_key dans l'URL.

curl -H "X-SEObserver-key: YOUR_API_KEY" "https://api1.seobserver.com/backlinks/metrics.json"

Votre clé API est disponible dans votre tableau de bord SEObserver sous Paramètres > API.

URL de base

Tous les endpoints sont relatifs à : https://api1.seobserver.com/

Toutes les réponses sont en JSON. Ajoutez .json au chemin de l'endpoint.

Sandbox

Un environnement sandbox gratuit est disponible pour tester votre intégration sans consommer de crédits API ni utiliser de données réelles.

URL de base

https://api1-sandbox.seobserver.com

Clé API

Utilisez la clé publique du sandbox :

sandbox_test_key_2026

Exemple rapide

curl -X POST "https://api1-sandbox.seobserver.com/backlinks/metrics.json" \
  -H "X-SEObserver-key: sandbox_test_key_2026" \
  -H "Content-Type: application/json" \
  -d '[{"item_type":"domain","item_value":"example.com"}]'

Fonctionnement

FonctionnalitéDétails
EndpointsLes 29 endpoints de production sont disponibles avec les mêmes chemins et paramètres
Format de réponseStructure JSON identique à la production — mêmes champs, même imbrication
Injection de valeursLe domaine ou mot-clé que vous envoyez est injecté dans la réponse. Envoyez example.com et les données contiendront example.com
Pas de limitesRequêtes illimitées, aucun crédit consommé
Header sandboxToutes les réponses incluent X-Sandbox: true pour détecter le mode sandbox
CORS activéLes requêtes cross-origin sont autorisées depuis n'importe quelle origine

Limitations

Ce qui ne fonctionnera pasPourquoi
Métriques réellesTrustFlow, CitationFlow, nombre de backlinks etc. sont des valeurs statiques — elles ne reflètent pas les données réelles
Résultats différents par domaineLa même fixture est retournée pour chaque requête ; seul le domaine/mot-clé injecté change
PaginationLes fixtures contiennent un nombre fixe de lignes quel que soit le paramètre limit
Données temporellesToutes les dates sont figées (pas de dates de crawl ni d'historique en temps réel)
PersistanceRien n'est stocké entre les requêtes — serps/add n'apparaitra pas dans serps/index
Items multiplesSeul le premier item d'un batch est utilisé pour l'injection ; les réponses multi-items ne sont pas générées

Le sandbox est conçu pour valider votre code d'intégration (parsing des réponses, gestion des erreurs, flux d'authentification) avant de basculer sur l'API de production.

Limites & Facturation

Chaque appel API consomme des Unités SEObserver depuis le solde de votre compte. Le coût dépend de l'endpoint et de la quantité de données retournées.

Types de coût

TypeFormuleDescription
FlatMontant fixeCoût identique quel que soit le volume de données
Variablefacteur × lignesProportionnel au nombre de lignes retournées, avec minimum
Mixedbase + facteur × lignesCoût de base fixe plus composante variable, avec minimum
Free0Gratuit

Table complète des coûts

EndpointTypeBaseFacteurMin
backlinks/metricsVariable01
backlinks/metrics_archiveVariable05
backlinks/anchorsVariable0110
backlinks/topMixed40150
backlinks/refdomainsVariable0110
backlinks/pagesMixed40150
serps/addVariable02
indexeds/addVariable01
organic_keywords/metricsVariable01
organic_keywords/indexVariable01
organic_keywords/urlsVariable01
organic_keywords/visibility_historyMixed12

Vérifiez votre solde à tout moment via l'endpoint subscription.

Format d'entrée

La plupart des endpoints Backlinks acceptent les items sous forme de tableau JSON dans le corps de la requête, ou en paramètres d'URL.

Corps JSON (recommandé)

[
  {"item_type": "domain", "item_value": "example.com"},
  {"item_type": "url", "item_value": "https://example.com/page"}
]

Paramètres d'URL

?item_type=domain&item_value=example.com

Valeurs item_type valides

item_typeDescription
domainDomaine racine (ex. example.com)
subdomainSous-domaine (ex. blog.example.com)
siteRequête au niveau du site
urlURL exacte
pathChemin d'URL avec correspondance wildcard

Cas d'usage

Workflows courants combinant plusieurs endpoints pour résoudre des problèmes SEO concrets.

Analyse de backlinks

Auditer la qualité de votre profil de liens

Évaluez la santé de vos backlinks en combinant les métriques générales et l'analyse des ancres.

Vérification en masse de l'autorité de domaines

Vérifiez le TrustFlow et CitationFlow de jusqu'à 100 domaines en une seule requête.

Détecter les attaques de SEO négatif

Repérez les pics soudains de nouveaux backlinks pouvant indiquer une attaque de SEO négatif.

top
Recherche de mots-clés

Audit de contenu

Analysez quels mots-clés et URLs génèrent de la visibilité organique pour votre domaine.

Suivi SERP

Suivre les positions sur des termes clés

Soumettez des mots-clés pour le suivi SERP et récupérez les résultats une fois traités.

Surveiller les SERP locaux

Suivez les positions pour des localisations spécifiques en utilisant les paramètres custom base et UULE.

Monitoring d'indexation

Vérifier que les nouvelles pages sont indexées

Soumettez les URLs récemment publiées et vérifiez leur statut d'indexation dans Google.

Audit d'indexation globale du site

Soumettez des URLs par lot pour auditer la couverture d'indexation sur l'ensemble de votre site.

Endpoints Abonnement

GET /api_users/subscription.json Free

Obtenez le statut actuel de votre abonnement API, y compris les unités restantes.

Exemple de requête
curl https://api1.seobserver.com/api_users/subscription.json \
  -H "X-SEObserver-key: YOUR_API_KEY"
Exemple de réponse
{
  "status": "ok",
  "data": {
    "enabled": true,
    "TotalUnits": 485000,
    "MaxUnits": 500000
  }
}
GET /api_users/costs.json Free

Obtenez la table complète des coûts pour tous les endpoints API. Utile pour construire des estimations de coût dans votre intégration.

ParamètreTypeRequisDéfautDescription
outputstringNonstandardstandard (imbriqué) ou absolute (clé-valeur à plat)
Exemple de requête
curl https://api1.seobserver.com/api_users/costs.json \
  -H "X-SEObserver-key: YOUR_API_KEY"

Endpoints SERP

Soumettez des mots-clés pour le suivi SERP (Search Engine Results Page). Les résultats sont traités de manière asynchrone.

POST /serps/add.json Variable : 2/mot-clé (low), 4/mot-clé (high)

Soumettez des mots-clés pour la vérification SERP. Chaque paire mot-clé+base crée un job SERP traité de manière asynchrone. Les plans Studio & Agency bénéficient de -50% (1/mot-clé low, 2/mot-clé high).

ParamètreTypeRequisDéfautDescription
keywordstringOuiMot-clé de recherche
basestringOuiBase du moteur de recherche (ex. google.fr)
prioritystringNonlowlow (2 unités) ou high (4 unités)
typestringNonType de SERP (+4 unités si défini)
batchstringNonIdentifiant de batch pour le regroupement
postback_urlstringNonURL où POST les résultats quand prêts
filtersobjectNonFiltres de résultats
Exemple de requête
curl -X POST "https://api1.seobserver.com/serps/add.json" \
  -H "X-SEObserver-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '[{"keyword":"seo tools","base":"google.fr","priority":"low"}]'
Exemple de réponse (201)
{
  "status": "ok",
  "data": [
    {
      "id": "64a1b2c3d4e5f6a7b8c9d0e1",
      "keyword": "seo tools",
      "base": "google.fr",
      "status": -1,
      "created": "2025-01-15T10:30:00+00:00"
    }
  ]
}
GET /serps/view/{id}.json Free

Obtenez le statut et les résultats d'un job SERP spécifique par son ID.

ParamètreTypeRequisDéfautDescription
idstringOuiID MongoDB du job SERP (dans le chemin URL)
Exemple de requête
curl https://api1.seobserver.com/serps/view/64a1b2c3d4e5f6a7b8c9d0e1.json \
  -H "X-SEObserver-key: YOUR_API_KEY"
GET /serps/index.json Free

Listez tous vos jobs SERP avec pagination et filtrage.

ParamètreTypeRequisDéfautDescription
limitintegerNon100Résultats par page (max 10 000)
pageintegerNon1Numéro de page
keywordstringNonFiltrer par mot-clé
batchstringNonFiltrer par batch
Exemple de requête
curl "https://api1.seobserver.com/serps/index.json?limit=50&batch=campaign1" \
  -H "X-SEObserver-key: YOUR_API_KEY"

Endpoints Indexation

Vérifiez si des URLs sont indexées dans Google. Les jobs sont traités de manière asynchrone.

POST /indexeds/add.json Variable : 1/URL

Soumettez des URLs pour la vérification d'indexation. Chaque URL crée un job asynchrone.

ParamètreTypeRequisDéfautDescription
urlstringOuiURL à vérifier
prioritystringNonlowlow ou high (high coûte 2x)
levelstringNonexactCorrespondance exact ou plus large
batchstringNonIdentifiant de batch
postback_urlstringNonURL où POST les résultats
Exemple de requête
curl -X POST "https://api1.seobserver.com/indexeds/add.json" \
  -H "X-SEObserver-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '[{"url":"https://example.com/page","priority":"low"}]'
GET /indexeds/view/{id}.json Free

Obtenez le statut et le résultat d'un job de vérification d'indexation spécifique.

ParamètreTypeRequisDéfautDescription
idstringOuiID MongoDB du job (dans le chemin URL)
Exemple de requête
curl https://api1.seobserver.com/indexeds/view/64a1b2c3d4e5f6a7b8c9d0e1.json \
  -H "X-SEObserver-key: YOUR_API_KEY"
GET /indexeds/index.json Free

Listez tous vos jobs de vérification d'indexation avec pagination et filtrage.

ParamètreTypeRequisDéfautDescription
limitintegerNon100Résultats par page (max 10 000)
pageintegerNon1Numéro de page
urlstringNonFiltrer par URL
batchstringNonFiltrer par batch
codeintegerNonFiltrer par code HTTP
Exemple de requête
curl "https://api1.seobserver.com/indexeds/index.json?limit=50&batch=batch1" \
  -H "X-SEObserver-key: YOUR_API_KEY"
DELETE /indexeds/delete/{id}.json Free

Supprimez un job de vérification d'indexation.

ParamètreTypeRequisDéfautDescription
idstringOuiID MongoDB du job (dans le chemin URL)
Exemple de requête
curl https://api1.seobserver.com/indexeds/delete/64a1b2c3d4e5f6a7b8c9d0e1.json \
  -H "X-SEObserver-key: YOUR_API_KEY"

Endpoints Mots-clés Organiques

Accédez aux données de suivi de mots-clés organiques de SEObserver. Couvre les métriques de visibilité, les classements de mots-clés et les tendances historiques.

GET /organic_keywords/metrics.json Variable : 1/item

Obtenez les métriques de visibilité organique pour jusqu'à 100 domaines. Retourne des scores de visibilité SEO agrégés.

ParamètreTypeRequisDéfautDescription
itemsCorps JSONOuiTableau d'items (max 100)
basestringNonfr_frCode marché/locale
datestringNonlatestDate spécifique
Exemple de requête
curl -X POST "https://api1.seobserver.com/organic_keywords/metrics.json?base=fr_fr" \
  -H "X-SEObserver-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '[{"item_type":"domain","item_value":"example.com"}]'
GET /organic_keywords/index.json Variable : 1/ligne

Listez les classements de mots-clés organiques pour un domaine avec filtrage et tri avancés.

ParamètreTypeRequisDéfautDescription
domainstringOuiDomaine à interroger (paramètre d'URL)
basestringNonfr_frCode marché/locale
limitintegerNon100Résultats par page (max 10 000)
offsetintegerNon0Décalage pour la pagination
datestringNonlatestDate spécifique
conditionsobjectNonConditions de filtre (p, url, keyword_title, search_volume, visibility, branded, tags)
orderobjectNonOrdre de tri (p, url, keyword_title, search_volume, cpc, competition, visibility, branded, tags)
Exemple de requête
curl "https://api1.seobserver.com/organic_keywords/index.json?domain=example.com&base=fr_fr&limit=50" \
  -H "X-SEObserver-key: YOUR_API_KEY"
GET /organic_keywords/urls.json Variable : 1/ligne

Obtenez les URLs d'un domaine regroupées par visibilité agrégée et nombre de mots-clés.

ParamètreTypeRequisDéfautDescription
domainstringOuiDomaine à interroger
basestringNonfr_frCode marché/locale
limitintegerNon100Résultats par page (max 10 000)
offsetintegerNon0Décalage pour la pagination
Exemple de requête
curl -X POST "https://api1.seobserver.com/organic_keywords/urls.json?base=fr_fr&limit=100" \
  -H "X-SEObserver-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '[{"item_type":"domain","item_value":"example.com"}]'
GET /organic_keywords/visibility_history.json Mixed : 1 + 2/mois

Obtenez l'historique de visibilité mois par mois pour des domaines.

ParamètreTypeRequisDéfautDescription
itemsCorps JSONOuiTableau d'items ou paramètre domain
basestringNonfr_frCode marché/locale
monthsintegerNon12Nombre de mois
start_datestringNonDate de début (AAAA-MM-JJ)
end_datestringNonDate de fin (AAAA-MM-JJ)
Exemple de requête
curl -X POST "https://api1.seobserver.com/organic_keywords/visibility_history.json?base=fr_fr&months=6" \
  -H "X-SEObserver-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '[{"item_type":"domain","item_value":"example.com"}]'
GET /organic_keywords/list_dates.json Free

Listez toutes les dates de données disponibles pour un marché donné. Utile pour savoir quelles dates interroger dans l'endpoint index.

ParamètreTypeRequisDéfautDescription
basestringNonCode marché/locale
Exemple de requête
curl "https://api1.seobserver.com/organic_keywords/list_dates.json?base=fr_fr" \
  -H "X-SEObserver-key: YOUR_API_KEY"

Endpoints Screenshots

Générez des screenshots des vues SEObserver (profils backlinks, comparaisons SERP, analyse de la concurrence) via une API asynchrone. Les screenshots sont pris par un navigateur headless et uploadés sur un stockage cloud. Idéal pour la génération automatique de rapports (PPT, PDF).

Workflow : POST une demande de screenshot → récupérer un job_id → interroger le statut jusqu'à completed → télécharger le PNG.

POST /screenshots.json Fixe : 100 unités

Demander un screenshot. Retourne immédiatement un job_id à interroger.

ParamètreTypeRequisDéfautDescription
typestringOuiType de screenshot. Voir endpoint types.
itemstringOuiDomaine ou mot-clé selon le type
highlightstringNonDomaine à mettre en surbrillance (types serpmachine et competition)
options.widthintegerNon1920Largeur du viewport en pixels
options.languagestringNonfr_frLocale SEObserver (ex : fr_fr, en_gb)

Types disponibles

TypeType d'itemHighlightDescription
identity_offsitedomaineProfil backlinks : TF, CF, TTF, RefDomains, graphique des ancres
identity_onsitedomaineIdentité onsite : titre, pages indexées, trafic, technologies
identity_historydomaineGraphique et tableau historique TF/CF
identity_fulldomainePage d'identité complète (toutes les sections)
serpmachinemot-cléoptionnelComparaison SERP avec highlight d'un domaine
competitionmot-cléoptionnelCompetition checker avec TF, RD, KWs, Traffic
Exemple — Identité Offsite
curl -X POST "https://api1.seobserver.com/screenshots.json" \
  -H "X-SEObserver-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"type":"identity_offsite","item":"seobserver.com","options":{"width":1920,"language":"fr_fr"}}'
Exemple — SERPMachine avec Highlight
curl -X POST "https://api1.seobserver.com/screenshots.json" \
  -H "X-SEObserver-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"type":"serpmachine","item":"outil seo","highlight":"seobserver.com"}'
Réponse (201)
{
  "status": "ok",
  "data": {
    "job_id": "550e8400e29b41d4a716446655440000",
    "type": "identity_offsite",
    "item": "seobserver.com",
    "status": "queued",
    "created": "2026-02-22T14:30:00+00:00"
  }
}
GET /screenshots/view/{job_id}.json Gratuit

Vérifier le statut d'un job screenshot. Interrogez cet endpoint jusqu'à ce que status soit completed ou failed.

ParamètreTypeRequisDéfautDescription
job_idstringOuiID MongoDB du job screenshot (dans le chemin URL)
Exemple de requête
curl "https://api1.seobserver.com/screenshots/view/550e8400e29b41d4a716446655440000.json" \
  -H "X-SEObserver-key: YOUR_API_KEY"
Réponse — En cours
{
  "status": "ok",
  "data": {
    "job_id": "550e8400e29b41d4a716446655440000",
    "type": "identity_offsite",
    "item": "seobserver.com",
    "status": "processing",
    "created": "2026-02-22T14:30:00+00:00"
  }
}
Réponse — Terminé
{
  "status": "ok",
  "data": {
    "job_id": "550e8400e29b41d4a716446655440000",
    "type": "identity_offsite",
    "item": "seobserver.com",
    "status": "completed",
    "download_url": "https://api1.seobserver.com/screenshots/download/550e8400e29b41d4a716446655440000.png",
    "width": 1920,
    "height": 2340,
    "file_size": 482000,
    "created": "2026-02-22T14:30:00+00:00",
    "completed": "2026-02-22T14:30:12+00:00"
  }
}
GET /screenshots.json Gratuit

Lister vos jobs screenshot avec des filtres optionnels.

ParamètreTypeRequisDéfautDescription
statusstringNonFiltrer : queued, processing, completed, failed
typestringNonFiltrer par type de screenshot
limitintegerNon50Résultats par page (max 200)
pageintegerNon1Numéro de page
Exemple de requête
curl "https://api1.seobserver.com/screenshots.json?status=completed&limit=10" \
  -H "X-SEObserver-key: YOUR_API_KEY"
GET /screenshots/types.json Gratuit

Lister tous les types de screenshots disponibles avec leurs descriptions et paramètres.

Exemple de requête
curl "https://api1.seobserver.com/screenshots/types.json" \
  -H "X-SEObserver-key: YOUR_API_KEY"
Réponse
{
  "status": "ok",
  "data": [
    {"type": "identity_offsite", "description": "Profil backlinks : TF, CF, TTF, RefDomains, backlinks, IPs, EDU/GOV", "item_type": "domain", "optional_params": []},
    {"type": "identity_onsite", "description": "Identité onsite : titre, pages indexées, trafic, technologies", "item_type": "domain", "optional_params": []},
    {"type": "identity_history", "description": "Graphique et tableau historique TF/CF", "item_type": "domain", "optional_params": []},
    {"type": "identity_full", "description": "Page d'identité complète (toutes les sections)", "item_type": "domain", "optional_params": []},
    {"type": "serpmachine", "description": "Comparaison SERP avec highlight optionnel", "item_type": "keyword", "optional_params": ["highlight"]},
    {"type": "competition", "description": "Competition checker avec TF, RD, KWs, Traffic", "item_type": "keyword", "optional_params": ["highlight"]}
  ]
}
GET /screenshots/download/{job_id}.png Gratuit

Télécharger le fichier PNG du screenshot. Nécessite l'authentification par clé API. Redirige (302) vers l'URL de l'image.

Le download_url retourné dans la réponse view pointe ici.

ParamètreTypeRequisDéfautDescription
job_idstringOuiID du job screenshot (dans le chemin URL, avec extension .png)
Exemple de requête
curl -L -o screenshot.png "https://api1.seobserver.com/screenshots/download/550e8400e29b41d4a716446655440000.png" \
  -H "X-SEObserver-key: YOUR_API_KEY"