Documentation API

Accédez à vos données de monitoring PageRadar par programmation. Créez des tableaux de bord personnalisés, intégrez vos outils et automatisez vos workflows de veille de marque.

Base URL https://pageradar.io/api

6

Points d'accès

100/min

Limite

REST

JSON API

Authentification

Toutes les requêtes API nécessitent un token Bearer dans l'en-tête Authorization.

Abonnement requis. Un abonnement PageRadar actif est nécessaire pour utiliser l'API. Voir les tarifs

Comment s'authentifier

  1. Créez un compte et souscrivez à un plan
  2. Allez sur Accès API et créez un token
  3. Incluez le token dans chaque requête :
curl -H "Authorization: Bearer YOUR_API_TOKEN" \
     -H "Accept: application/json" \
     https://pageradar.io/api/reddit/monitors

Limite de requêtes

L'API autorise 100 requêtes par minute par utilisateur authentifié. Les informations de limite sont incluses dans les en-têtes de réponse :

En-tête Description
X-RateLimit-Limit Nombre maximum de requêtes par minute (100)
X-RateLimit-Remaining Requêtes restantes dans la fenêtre actuelle
Retry-After Secondes à attendre (uniquement sur les réponses 429)
HTTP/1.1 429 Too Many Requests
Retry-After: 42

{
  "message": "Too Many Attempts."
}

Pagination

Les endpoints de liste renvoient des résultats paginés avec des objets meta et links pour la navigation.

Paramètre Type Default Description
page integer 1 Numéro de page
per_page integer 50 Éléments par page (max 100)
{
  "data": [ ... ],
  "links": {
    "first": "https://pageradar.io/api/reddit/mentions?page=1",
    "last": "https://pageradar.io/api/reddit/mentions?page=5",
    "prev": null,
    "next": "https://pageradar.io/api/reddit/mentions?page=2"
  },
  "meta": {
    "current_page": 1,
    "from": 1,
    "last_page": 5,
    "per_page": 50,
    "to": 50,
    "total": 237
  }
}

Codes d'erreur

Code Signification Description
200 OK Requête réussie
401 Non autorisé Token API manquant ou invalide
403 Interdit Pas d'abonnement actif — mettre à niveau
404 Non trouvé La ressource n'existe pas ou ne vous appartient pas
422 Erreur de validation Paramètres invalides — vérifiez l'objet errors dans la réponse
429 Trop de requêtes Limite dépassée — attendez puis réessayez
500 Erreur serveur Un problème est survenu de notre côté

Exemples de réponses d'erreur

401 Unauthorized

{
  "message": "Unauthenticated."
}

403 Forbidden

{
  "error": "subscription_required",
  "message": "An active subscription is required.",
  "upgrade_url": "https://pageradar.io/pricing"
}

Points d'accès

GET /api/reddit/monitors

Lister les monitors

Renvoie tous les monitors de mots-clés Reddit de l'utilisateur authentifié, avec le nombre de mentions et d'alertes non lues.

Réponse

{
  "data": [
    {
      "id": 1,
      "keyword": "pageradar",
      "subreddits": ["seo", "webdev"],
      "check_frequency": "hourly",
      "is_active": true,
      "last_checked_at": "2026-03-19T08:00:00+00:00",
      "mentions_count": 42,
      "unread_alerts_count": 3,
      "created_at": "2026-01-15T10:30:00+00:00",
      "updated_at": "2026-03-19T08:00:00+00:00"
    }
  ]
}
GET /api/reddit/monitors/{id}

Détail d'un monitor

Renvoie les détails d'un monitor. Renvoie 404 si non trouvé ou s'il ne vous appartient pas.

Path Paramètres

ParamètreTypeDescription
idintegerID du monitor requis

Exemple

curl -H "Authorization: Bearer YOUR_TOKEN" \
     https://pageradar.io/api/reddit/monitors/1
GET /api/reddit/monitors/{id}/mentions

Mentions d'un monitor

Renvoie les mentions paginées d'un monitor spécifique. Supporte les mêmes filtres que Toutes les mentions.

Exemple

curl -H "Authorization: Bearer YOUR_TOKEN" \
     "https://pageradar.io/api/reddit/monitors/1/mentions?subreddit=seo&per_page=20"
GET /api/reddit/mentions

Toutes les mentions

Renvoie toutes les mentions Reddit de tous vos monitors, avec filtrage, tri et pagination.

Query Paramètres

Paramètre Type Default Description
monitor_id integer - Filtrer par ID de monitor
keyword string - Recherche dans keyword_found (correspondance partielle)
subreddit string - Filtrer par nom de subreddit (ex. seo)
found_in string - Où le mot-clé a été trouvé : title, body ou comment
date_from date - Date de début (YYYY-MM-DD)
date_to date - Date de fin (YYYY-MM-DD)
sort string date date, score, or comments
sort_dir string desc asc or desc
per_page integer 50 Résultats par page (max 100)

Exemple

curl -H "Authorization: Bearer YOUR_TOKEN" \
     "https://pageradar.io/api/reddit/mentions?subreddit=seo&date_from=2026-01-01&sort=score&per_page=20"

Réponse

{
  "data": [
    {
      "id": 123,
      "monitor_id": 1,
      "keyword_found": "pageradar",
      "reddit_id": "abc123",
      "post_title": "Best SEO monitoring tools in 2026?",
      "post_url": "https://reddit.com/r/seo/comments/abc123",
      "subreddit": "seo",
      "author": "seo_expert",
      "found_in": "body",
      "context_text": "I've been using pageradar for my clients...",
      "score": 42,
      "num_comments": 15,
      "comment_id": null,
      "comment_author": null,
      "created_at_reddit": "2026-03-18T14:30:00+00:00",
      "created_at": "2026-03-18T15:00:00+00:00"
    }
  ],
  "links": { "first": "...?page=1", "last": "...?page=3", "prev": null, "next": "...?page=2" },
  "meta": { "current_page": 1, "last_page": 3, "per_page": 50, "total": 142 }
}
GET /api/reddit/mentions/{id}

Détail d'une mention

Renvoie une mention avec tous ses détails. Renvoie 404 si non trouvée ou si elle ne vous appartient pas.

Exemple

curl -H "Authorization: Bearer YOUR_TOKEN" \
     https://pageradar.io/api/reddit/mentions/123
GET /api/user

Info utilisateur

Renvoie les informations de base de l'utilisateur authentifié. Utile pour vérifier que votre token fonctionne.

Réponse

{
  "id": 1,
  "name": "John Doe",
  "email": "[email protected]"
}

Champs de réponse

Objet Monitor

Champ Type Description
idintegerIdentifiant unique du monitor
keywordstringMot-clé surveillé
subredditsarray|nullListe de subreddits spécifiques, ou null pour tous
check_frequencystringhourly, daily, or weekly
is_activebooleanSi le monitor est actif
last_checked_atstring|nullDate/heure ISO 8601 du dernier check
mentions_countintegerNombre total de mentions trouvées
unread_alerts_countintegerNombre d'alertes non lues
created_atstringDate de création ISO 8601
updated_atstringDate de dernière mise à jour ISO 8601

Objet Mention

Champ Type Description
idintegerIdentifiant unique de la mention
monitor_idintegerID du monitor parent
keyword_foundstringLe mot-clé exact qui a matché
reddit_idstringID du post Reddit
post_titlestringTitre du post Reddit
post_urlstringURL directe vers le post Reddit
subredditstringNom du subreddit (sans le préfixe r/)
authorstring|nullNom d'utilisateur Reddit de l'auteur
found_instringtitle, body, or comment
context_textstring|nullExtrait de texte autour du mot-clé trouvé
scoreintegerScore de votes Reddit
num_commentsintegerNombre de commentaires sur le post
comment_idstring|nullID du commentaire (si trouvé dans un commentaire)
comment_authorstring|nullAuteur du commentaire (si trouvé dans un commentaire)
created_at_redditstring|nullDate de création du post sur Reddit (ISO 8601)
created_atstringDate de détection de la mention (ISO 8601)

Exemples de code

Lister tous les monitors

curl -H "Authorization: Bearer YOUR_TOKEN" \
     -H "Accept: application/json" \
     https://pageradar.io/api/reddit/monitors

Rechercher des mentions avec filtres

curl -H "Authorization: Bearer YOUR_TOKEN" \
     -H "Accept: application/json" \
     "https://pageradar.io/api/reddit/mentions?subreddit=seo&sort=score&date_from=2026-01-01&per_page=20"

Recherche en direct d'un mot-clé

curl -H "Authorization: Bearer YOUR_TOKEN" \
     -H "Accept: application/json" \
     "https://pageradar.io/api/reddit/search?keyword=your+brand&time=day&limit=50"

Lister tous les monitors

const API_TOKEN = 'YOUR_TOKEN';
const BASE_URL = 'https://pageradar.io/api';

const response = await fetch(`${BASE_URL}/reddit/monitors`, {
  headers: {
    'Authorization': `Bearer ${API_TOKEN}`,
    'Accept': 'application/json',
  },
});

const { data } = await response.json();

data.forEach(monitor => {
  console.log(`${monitor.keyword}: ${monitor.mentions_count} mentions`);
});

Rechercher des mentions avec filtres

const params = new URLSearchParams({
  subreddit: 'seo',
  sort: 'score',
  date_from: '2026-01-01',
  per_page: '20',
});

const response = await fetch(`${BASE_URL}/reddit/mentions?${params}`, {
  headers: {
    'Authorization': `Bearer ${API_TOKEN}`,
    'Accept': 'application/json',
  },
});

const { data, meta } = await response.json();
console.log(`Found ${meta.total} mentions (page ${meta.current_page}/${meta.last_page})`);

Recherche en direct d'un mot-clé

const params = new URLSearchParams({
  keyword: 'your brand',
  time: 'day',
  limit: '50',
});

const response = await fetch(`${BASE_URL}/reddit/search?${params}`, {
  headers: {
    'Authorization': `Bearer ${API_TOKEN}`,
    'Accept': 'application/json',
  },
});

const { data, total } = await response.json();
console.log(`Found ${total} live mentions`);

data.forEach(mention => {
  console.log(`[r/${mention.subreddit}] ${mention.post_title} (score: ${mention.score})`);
});

Lister tous les monitors

import requests

API_TOKEN = "YOUR_TOKEN"
BASE_URL = "https://pageradar.io/api"
headers = {"Authorization": f"Bearer {API_TOKEN}", "Accept": "application/json"}

response = requests.get(f"{BASE_URL}/reddit/monitors", headers=headers)
monitors = response.json()["data"]

for m in monitors:
    print(f"{m['keyword']}: {m['mentions_count']} mentions, {m['unread_alerts_count']} unread")

Rechercher des mentions avec filtres

params = {
    "subreddit": "seo",
    "sort": "score",
    "date_from": "2026-01-01",
    "per_page": 100,
}

response = requests.get(f"{BASE_URL}/reddit/mentions", headers=headers, params=params)
data = response.json()

for mention in data["data"]:
    print(f"r/{mention['subreddit']}: {mention['post_title']} (score: {mention['score']})")

print(f"\nTotal: {data['meta']['total']} mentions across {data['meta']['last_page']} pages")

Recherche en direct d'un mot-clé

params = {
    "keyword": "your brand",
    "time": "day",
    "limit": 50,
}

response = requests.get(f"{BASE_URL}/reddit/search", headers=headers, params=params)
result = response.json()

print(f"Found {result['total']} live mentions for '{result['keyword']}'")

for mention in result["data"]:
    print(f"  [{mention['found_in']}] r/{mention['subreddit']}: {mention['post_title']}")

Lister les monitors (Guzzle)

$client = new \GuzzleHttp\Client([
    'base_uri' => 'https://pageradar.io/api/',
    'headers' => [
        'Authorization' => 'Bearer YOUR_TOKEN',
        'Accept' => 'application/json',
    ],
]);

$response = $client->get('reddit/monitors');
$monitors = json_decode($response->getBody(), true)['data'];

foreach ($monitors as $monitor) {
    echo "{$monitor['keyword']}: {$monitor['mentions_count']} mentions\n";
}

Rechercher des mentions avec filtres

$response = $client->get('reddit/mentions', [
    'query' => [
        'subreddit' => 'seo',
        'sort' => 'score',
        'date_from' => '2026-01-01',
        'per_page' => 100,
    ],
]);

$data = json_decode($response->getBody(), true);

foreach ($data['data'] as $mention) {
    echo "r/{$mention['subreddit']}: {$mention['post_title']} (score: {$mention['score']})\n";
}

echo "Total: {$data['meta']['total']} mentions\n";

Recherche en direct d'un mot-clé

$response = $client->get('reddit/search', [
    'query' => [
        'keyword' => 'your brand',
        'time' => 'day',
        'limit' => 50,
    ],
]);

$result = json_decode($response->getBody(), true);
echo "Found {$result['total']} live mentions for '{$result['keyword']}'\n";

foreach ($result['data'] as $mention) {
    echo "  [{$mention['found_in']}] r/{$mention['subreddit']}: {$mention['post_title']}\n";
}