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 |
|---|---|
| Endpoints | Les 29 endpoints de production sont disponibles avec les mêmes chemins et paramètres |
| Format de réponse | Structure JSON identique à la production — mêmes champs, même imbrication |
| Injection de valeurs | Le 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 limites | Requêtes illimitées, aucun crédit consommé |
| Header sandbox | Toutes 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 pas | Pourquoi |
|---|---|
| Métriques réelles | TrustFlow, CitationFlow, nombre de backlinks etc. sont des valeurs statiques — elles ne reflètent pas les données réelles |
| Résultats différents par domaine | La même fixture est retournée pour chaque requête ; seul le domaine/mot-clé injecté change |
| Pagination | Les fixtures contiennent un nombre fixe de lignes quel que soit le paramètre limit |
| Données temporelles | Toutes les dates sont figées (pas de dates de crawl ni d'historique en temps réel) |
| Persistance | Rien n'est stocké entre les requêtes — serps/add n'apparaitra pas dans serps/index |
| Items multiples | Seul 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
| Type | Formule | Description |
|---|---|---|
| Flat | Montant fixe | Coût identique quel que soit le volume de données |
| Variable | facteur × lignes | Proportionnel au nombre de lignes retournées, avec minimum |
| Mixed | base + facteur × lignes | Coût de base fixe plus composante variable, avec minimum |
| Free | 0 | Gratuit |
Table complète des coûts
| Endpoint | Type | Base | Facteur | Min |
|---|---|---|---|---|
backlinks/metrics | Variable | 0 | 1 | — |
backlinks/metrics_archive | Variable | 0 | 5 | — |
backlinks/anchors | Variable | 0 | 1 | 10 |
backlinks/top | Mixed | 40 | 1 | 50 |
backlinks/refdomains | Variable | 0 | 1 | 10 |
backlinks/pages | Mixed | 40 | 1 | 50 |
serps/add | Variable | 0 | 2 | — |
indexeds/add | Variable | 0 | 1 | — |
organic_keywords/metrics | Variable | 0 | 1 | — |
organic_keywords/index | Variable | 0 | 1 | — |
organic_keywords/urls | Variable | 0 | 1 | — |
organic_keywords/visibility_history | Mixed | 1 | 2 | — |
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_type | Description |
|---|---|
domain | Domaine racine (ex. example.com) |
subdomain | Sous-domaine (ex. blog.example.com) |
site | Requête au niveau du site |
url | URL exacte |
path | Chemin d'URL avec correspondance wildcard |
Cas d'usage
Workflows courants combinant plusieurs endpoints pour résoudre des problèmes SEO concrets.
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.
Audit de contenu
Analysez quels mots-clés et URLs génèrent de la visibilité organique pour votre domaine.
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.
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 Backlinks
Obtenez les métriques de liens (TrustFlow, CitationFlow, nombre de backlinks, domaines référents, etc.) pour jusqu'à 100 items en une seule requête. Propulsé par Majestic GetIndexItemInfo.
| Paramètre | Type | Requis | Défaut | Description |
|---|---|---|---|---|
items | Corps JSON | Oui | — | Tableau d'items (max 100) |
datasource | string | Non | fresh | fresh ou historic |
curl -X POST "https://api1.seobserver.com/backlinks/metrics.json" \
-H "X-SEObserver-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '[{"item_type":"domain","item_value":"example.com"}]'$ch = curl_init('https://api1.seobserver.com/backlinks/metrics.json');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
'X-SEObserver-key: YOUR_API_KEY',
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode([
['item_type' => 'domain', 'item_value' => 'example.com']
]),
]);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);import requests
response = requests.post(
"https://api1.seobserver.com/backlinks/metrics.json",
headers={"X-SEObserver-key": "YOUR_API_KEY"},
json=[{"item_type": "domain", "item_value": "example.com"}],
)
data = response.json()const response = await fetch("https://api1.seobserver.com/backlinks/metrics.json", {
method: "POST",
headers: {
"X-SEObserver-key": "YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify([{ item_type: "domain", item_value: "example.com" }]),
});
const data = await response.json();body, _ := json.Marshal([]map[string]string{
{"item_type": "domain", "item_value": "example.com"},
})
req, _ := http.NewRequest("POST",
"https://api1.seobserver.com/backlinks/metrics.json",
bytes.NewBuffer(body))
req.Header.Set("X-SEObserver-key", "YOUR_API_KEY")
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)Exemple de réponse
{
"status": "ok",
"message": "",
"data": [
{
"ItemNum": 0,
"Item": "seobserver.com",
"ResultCode": "OK",
"Status": "Found",
"ExtBackLinks": 39293,
"RefDomains": 485,
"ACRank": -1,
"ItemType": 1,
"IndexedURLs": 40000,
"RefIPs": 297,
"RefSubNets": 223,
"RefDomainsEDU": 0,
"ExtBackLinksEDU": 0,
"RefDomainsGOV": 0,
"ExtBackLinksGOV": 0,
"RefDomainsEDU_Exact": 0,
"ExtBackLinksEDU_Exact": 0,
"RefDomainsGOV_Exact": 0,
"ExtBackLinksGOV_Exact": 0,
"CrawledFlag": "False",
"LastCrawlDate": "",
"LastCrawlResult": "",
"RedirectFlag": "True",
"FinalRedirectResult": "",
"OutDomainsExternal": "0",
"OutLinksExternal": "3",
"OutLinksInternal": "6",
"OutLinksPages": "259",
"LastSeen": "",
"AffectedByAntiSpamAlgo": 0,
"Title": "Outil référencement SEO, SEObserver surveille le positionnement",
"RedirectTo": "https://www.seobserver.com/",
"Language": "fr,en",
"LanguageDesc": "French,English",
"LanguageConfidence": "94,98",
"LanguagePageRatios": "56.4,43.5",
"LanguageTotalPages": 156,
"RefLanguage": "fr,en",
"RefLanguageDesc": "French,English",
"RefLanguageConfidence": "81,96",
"RefLanguagePageRatios": "69.8,29.8",
"RefLanguageTotalPages": 36408,
"CrawledURLs": 29447,
"RootDomainIPAddress": "188.114.96.2",
"TotalNonUniqueLinks": "39669",
"NonUniqueLinkTypeHomepages": "793",
"NonUniqueLinkTypeIndirect": "19482",
"NonUniqueLinkTypeDeleted": "9157",
"NonUniqueLinkTypeNoFollow": "7653",
"NonUniqueLinkTypeProtocolHTTPS": "38403",
"NonUniqueLinkTypeFrame": "0",
"NonUniqueLinkTypeImageLink": "24150",
"NonUniqueLinkTypeRedirect": "30",
"NonUniqueLinkTypeTextLink": "15489",
"RefDomainTypeLive": "445",
"RefDomainTypeFollow": "292",
"RefDomainTypeHomepageLink": "24",
"RefDomainTypeDirect": "483",
"RefDomainTypeProtocolHTTPS": "468",
"CanonicalURL": "https://www.seobserver.com/",
"CitationFlow": 41,
"TrustFlow": 24,
"TrustMetric": 24,
"TrustCategories": "Business/Financial Services=83.51%=24,Business=7.24%=19,...",
"TopicalTrustFlow_Topic_0": "Business/Financial Services",
"TopicalTrustFlow_Value_0": 24,
"TopicalTrustFlow_Topic_1": "Business",
"TopicalTrustFlow_Value_1": 19,
"TopicalTrustFlow_Topic_2": "Regional/Europe",
"TopicalTrustFlow_Value_2": 18,
"DL_DuplicationCode_CannotBeClassified_NonUnique": 5,
"DL_DuplicationCode_NonNotableDuplicate_NonUnique": 6343,
"DL_DuplicationCode_NotableDuplicate_NonUnique": 1383,
"DL_DuplicationCode_Redirect_NonUnique": 30,
"DL_DuplicationCode_Distinct_NonUnique": 31908,
"DL_DuplicationCode_PendingClassification_NonUnique": 0
}
],
"number_of_rows": 1
}
Obtenez les snapshots historiques des métriques pour un item, stockés mensuellement dans les archives SEObserver. Jusqu'à 12 mois de données.
| Paramètre | Type | Requis | Défaut | Description |
|---|---|---|---|---|
item | Corps JSON | Oui | — | Item unique |
count | integer | Non | 12 | Nombre de mois (max 12) |
curl -X POST "https://api1.seobserver.com/backlinks/metrics_archive.json?count=6" \
-H "X-SEObserver-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '[{"item_type":"domain","item_value":"example.com"}]'
Exemple de réponse
{
"status": "ok",
"data": [
{
"date": "2025-01-15",
"TrustFlow": 72,
"CitationFlow": 65,
"ExtBackLinks": 285432
}
],
"number_of_rows": 6
}
Obtenez les meilleurs backlinks pointant vers un item, classés par force du lien. Propulsé par Majestic GetBackLinkData.
| Paramètre | Type | Requis | Défaut | Description |
|---|---|---|---|---|
item | Corps JSON | Oui | — | Item unique |
datasource | string | Non | fresh | fresh ou historic |
limit | integer | Non | 10 | Nombre de résultats (max 50 000) |
curl "https://api1.seobserver.com/backlinks/top.json?datasource=fresh&limit=20&item_type=domain&item_value=example.com" \ -H "X-SEObserver-key: YOUR_API_KEY"
$url = 'https://api1.seobserver.com/backlinks/top.json?' . http_build_query([
'datasource' => 'fresh', 'limit' => 20,
'item_type' => 'domain', 'item_value' => 'example.com',
]);
$ch = curl_init($url);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['X-SEObserver-key: YOUR_API_KEY'],
]);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);import requests
response = requests.get(
"https://api1.seobserver.com/backlinks/top.json",
headers={"X-SEObserver-key": "YOUR_API_KEY"},
params={"datasource": "fresh", "limit": 20,
"item_type": "domain", "item_value": "example.com"},
)
data = response.json()const params = new URLSearchParams({
datasource: "fresh", limit: 20,
item_type: "domain", item_value: "example.com",
});
const response = await fetch(
`https://api1.seobserver.com/backlinks/top.json?${params}`,
{ headers: { "X-SEObserver-key": "YOUR_API_KEY" } }
);
const data = await response.json();req, _ := http.NewRequest("GET",
"https://api1.seobserver.com/backlinks/top.json?datasource=fresh&limit=20&item_type=domain&item_value=example.com",
nil)
req.Header.Set("X-SEObserver-key", "YOUR_API_KEY")
resp, _ := http.DefaultClient.Do(req)Exemple de réponse
{
"status": "ok",
"data": [
{
"SourceURL": "https://referrer.com/page",
"SourceTrustFlow": 85,
"SourceCitationFlow": 71,
"AnchorText": "example link",
"TargetURL": "https://example.com",
"FlagRedirect": 0
}
],
"number_of_rows": 20
}
Obtenez la distribution des textes d'ancre pour un item. Propulsé par Majestic GetAnchorText.
| Paramètre | Type | Requis | Défaut | Description |
|---|---|---|---|---|
item | Corps JSON | Oui | — | Item unique |
datasource | string | Non | fresh | fresh ou historic |
limit | integer | Non | 10 | Nombre de résultats (max 1 000) |
curl -X POST "https://api1.seobserver.com/backlinks/anchors.json?limit=50" \
-H "X-SEObserver-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '[{"item_type":"domain","item_value":"example.com"}]'
Exemple de réponse
{
"status": "ok",
"meta": {
"countAll": 5432,
"totalRefDomains": 892
},
"data": [
{
"AnchorText": "example",
"TotalLinks": 1234,
"DeletedLinks": 56,
"RefDomains": 320
}
],
"number_of_rows": 50
}
Obtenez la liste des domaines référents pointant vers un item. Propulsé par Majestic GetRefDomains.
| Paramètre | Type | Requis | Défaut | Description |
|---|---|---|---|---|
item | Corps JSON | Oui | — | Item unique |
datasource | string | Non | fresh | fresh ou historic |
limit | integer | Non | 10 | Nombre de résultats |
curl -X POST "https://api1.seobserver.com/backlinks/refdomains.json?limit=20" \
-H "X-SEObserver-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '[{"item_type":"domain","item_value":"example.com"}]'
Obtenez les pages les plus populaires d'un domaine par nombre de backlinks. Propulsé par Majestic GetTopPages.
| Paramètre | Type | Requis | Défaut | Description |
|---|---|---|---|---|
item | Corps JSON | Oui | — | Item unique |
datasource | string | Non | fresh | fresh ou historic |
limit | integer | Non | 10 | Nombre de résultats (max 10 000) |
curl -X POST "https://api1.seobserver.com/backlinks/pages.json?limit=100" \
-H "X-SEObserver-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '[{"item_type":"domain","item_value":"example.com"}]'
Endpoints Abonnement
Obtenez le statut actuel de votre abonnement API, y compris les unités restantes.
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
}
}
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ètre | Type | Requis | Défaut | Description |
|---|---|---|---|---|
output | string | Non | standard | standard (imbriqué) ou absolute (clé-valeur à plat) |
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.
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ètre | Type | Requis | Défaut | Description |
|---|---|---|---|---|
keyword | string | Oui | — | Mot-clé de recherche |
base | string | Oui | — | Base du moteur de recherche (ex. google.fr) |
priority | string | Non | low | low (2 unités) ou high (4 unités) |
type | string | Non | — | Type de SERP (+4 unités si défini) |
batch | string | Non | — | Identifiant de batch pour le regroupement |
postback_url | string | Non | — | URL où POST les résultats quand prêts |
filters | object | Non | — | Filtres de résultats |
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"
}
]
}
Obtenez le statut et les résultats d'un job SERP spécifique par son ID.
| Paramètre | Type | Requis | Défaut | Description |
|---|---|---|---|---|
id | string | Oui | — | ID MongoDB du job SERP (dans le chemin URL) |
curl https://api1.seobserver.com/serps/view/64a1b2c3d4e5f6a7b8c9d0e1.json \ -H "X-SEObserver-key: YOUR_API_KEY"
Listez tous vos jobs SERP avec pagination et filtrage.
| Paramètre | Type | Requis | Défaut | Description |
|---|---|---|---|---|
limit | integer | Non | 100 | Résultats par page (max 10 000) |
page | integer | Non | 1 | Numéro de page |
keyword | string | Non | — | Filtrer par mot-clé |
batch | string | Non | — | Filtrer par batch |
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.
Soumettez des URLs pour la vérification d'indexation. Chaque URL crée un job asynchrone.
| Paramètre | Type | Requis | Défaut | Description |
|---|---|---|---|---|
url | string | Oui | — | URL à vérifier |
priority | string | Non | low | low ou high (high coûte 2x) |
level | string | Non | exact | Correspondance exact ou plus large |
batch | string | Non | — | Identifiant de batch |
postback_url | string | Non | — | URL où POST les résultats |
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"}]'
Obtenez le statut et le résultat d'un job de vérification d'indexation spécifique.
| Paramètre | Type | Requis | Défaut | Description |
|---|---|---|---|---|
id | string | Oui | — | ID MongoDB du job (dans le chemin URL) |
curl https://api1.seobserver.com/indexeds/view/64a1b2c3d4e5f6a7b8c9d0e1.json \ -H "X-SEObserver-key: YOUR_API_KEY"
Listez tous vos jobs de vérification d'indexation avec pagination et filtrage.
| Paramètre | Type | Requis | Défaut | Description |
|---|---|---|---|---|
limit | integer | Non | 100 | Résultats par page (max 10 000) |
page | integer | Non | 1 | Numéro de page |
url | string | Non | — | Filtrer par URL |
batch | string | Non | — | Filtrer par batch |
code | integer | Non | — | Filtrer par code HTTP |
curl "https://api1.seobserver.com/indexeds/index.json?limit=50&batch=batch1" \ -H "X-SEObserver-key: YOUR_API_KEY"
Supprimez un job de vérification d'indexation.
| Paramètre | Type | Requis | Défaut | Description |
|---|---|---|---|---|
id | string | Oui | — | ID MongoDB du job (dans le chemin URL) |
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.
Obtenez les métriques de visibilité organique pour jusqu'à 100 domaines. Retourne des scores de visibilité SEO agrégés.
| Paramètre | Type | Requis | Défaut | Description |
|---|---|---|---|---|
items | Corps JSON | Oui | — | Tableau d'items (max 100) |
base | string | Non | fr_fr | Code marché/locale |
date | string | Non | latest | Date spécifique |
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"}]'
Listez les classements de mots-clés organiques pour un domaine avec filtrage et tri avancés.
| Paramètre | Type | Requis | Défaut | Description |
|---|---|---|---|---|
domain | string | Oui | — | Domaine à interroger (paramètre d'URL) |
base | string | Non | fr_fr | Code marché/locale |
limit | integer | Non | 100 | Résultats par page (max 10 000) |
offset | integer | Non | 0 | Décalage pour la pagination |
date | string | Non | latest | Date spécifique |
conditions | object | Non | — | Conditions de filtre (p, url, keyword_title, search_volume, visibility, branded, tags) |
order | object | Non | — | Ordre de tri (p, url, keyword_title, search_volume, cpc, competition, visibility, branded, tags) |
curl "https://api1.seobserver.com/organic_keywords/index.json?domain=example.com&base=fr_fr&limit=50" \ -H "X-SEObserver-key: YOUR_API_KEY"
Obtenez les URLs d'un domaine regroupées par visibilité agrégée et nombre de mots-clés.
| Paramètre | Type | Requis | Défaut | Description |
|---|---|---|---|---|
domain | string | Oui | — | Domaine à interroger |
base | string | Non | fr_fr | Code marché/locale |
limit | integer | Non | 100 | Résultats par page (max 10 000) |
offset | integer | Non | 0 | Décalage pour la pagination |
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"}]'
Obtenez l'historique de visibilité mois par mois pour des domaines.
| Paramètre | Type | Requis | Défaut | Description |
|---|---|---|---|---|
items | Corps JSON | Oui | — | Tableau d'items ou paramètre domain |
base | string | Non | fr_fr | Code marché/locale |
months | integer | Non | 12 | Nombre de mois |
start_date | string | Non | — | Date de début (AAAA-MM-JJ) |
end_date | string | Non | — | Date de fin (AAAA-MM-JJ) |
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"}]'
Listez toutes les dates de données disponibles pour un marché donné. Utile pour savoir quelles dates interroger dans l'endpoint index.
| Paramètre | Type | Requis | Défaut | Description |
|---|---|---|---|---|
base | string | Non | — | Code marché/locale |
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.
Demander un screenshot. Retourne immédiatement un job_id à interroger.
| Paramètre | Type | Requis | Défaut | Description |
|---|---|---|---|---|
type | string | Oui | — | Type de screenshot. Voir endpoint types. |
item | string | Oui | — | Domaine ou mot-clé selon le type |
highlight | string | Non | — | Domaine à mettre en surbrillance (types serpmachine et competition) |
options.width | integer | Non | 1920 | Largeur du viewport en pixels |
options.language | string | Non | fr_fr | Locale SEObserver (ex : fr_fr, en_gb) |
Types disponibles
| Type | Type d'item | Highlight | Description | |
|---|---|---|---|---|
identity_offsite | domaine | — | Profil backlinks : TF, CF, TTF, RefDomains, graphique des ancres | |
identity_onsite | domaine | — | Identité onsite : titre, pages indexées, trafic, technologies | |
identity_history | domaine | — | Graphique et tableau historique TF/CF | |
identity_full | domaine | — | Page d'identité complète (toutes les sections) | |
serpmachine | mot-clé | optionnel | Comparaison SERP avec highlight d'un domaine | |
competition | mot-clé | optionnel | Competition checker avec TF, RD, KWs, Traffic | |
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"}}'
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"
}
}
Vérifier le statut d'un job screenshot. Interrogez cet endpoint jusqu'à ce que status soit completed ou failed.
| Paramètre | Type | Requis | Défaut | Description |
|---|---|---|---|---|
job_id | string | Oui | — | ID MongoDB du job screenshot (dans le chemin URL) |
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"
}
}
Lister vos jobs screenshot avec des filtres optionnels.
| Paramètre | Type | Requis | Défaut | Description |
|---|---|---|---|---|
status | string | Non | — | Filtrer : queued, processing, completed, failed |
type | string | Non | — | Filtrer par type de screenshot |
limit | integer | Non | 50 | Résultats par page (max 200) |
page | integer | Non | 1 | Numéro de page |
curl "https://api1.seobserver.com/screenshots.json?status=completed&limit=10" \ -H "X-SEObserver-key: YOUR_API_KEY"
Lister tous les types de screenshots disponibles avec leurs descriptions et paramètres.
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"]}
]
}
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ètre | Type | Requis | Défaut | Description |
|---|---|---|---|---|
job_id | string | Oui | — | ID du job screenshot (dans le chemin URL, avec extension .png) |
curl -L -o screenshot.png "https://api1.seobserver.com/screenshots/download/550e8400e29b41d4a716446655440000.png" \ -H "X-SEObserver-key: YOUR_API_KEY"