Access your PageRadar monitoring data programmatically. Build custom dashboards, integrate with your tools, and automate your brand monitoring workflows.
https://pageradar.io/api
6
Endpoints
100/min
Rate Limit
REST
JSON API
All API requests require a Bearer token in the Authorization header.
Subscription required. An active PageRadar subscription is needed to use the API. View pricing
curl -H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Accept: application/json" \
https://pageradar.io/api/reddit/monitors
The API allows 100 requests per minute per authenticated user. Rate limit information is included in response headers:
| Header | Description |
|---|---|
X-RateLimit-Limit |
Maximum requests per minute (100) |
X-RateLimit-Remaining |
Requests remaining in current window |
Retry-After |
Seconds to wait (only on 429 responses) |
HTTP/1.1 429 Too Many Requests
Retry-After: 42
{
"message": "Too Many Attempts."
}
List endpoints return paginated results with meta and links objects for navigation.
| Parameter | Type | Default | Description |
|---|---|---|---|
page |
integer | 1 | Page number |
per_page |
integer | 50 | Items per 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
}
}
| Code | Meaning | Description |
|---|---|---|
| 200 | OK | Request was successful |
| 401 | Unauthorized | Missing or invalid API token |
| 403 | Forbidden | No active subscription — upgrade your plan |
| 404 | Not Found | Resource doesn't exist or doesn't belong to you |
| 422 | Validation Error | Invalid parameters — check the errors object in the response |
| 429 | Too Many Requests | Rate limit exceeded — wait and retry |
| 500 | Server Error | Something went wrong on our end |
401 Unauthorized
{
"message": "Unauthenticated."
}
403 Forbidden
{
"error": "subscription_required",
"message": "An active subscription is required.",
"upgrade_url": "https://pageradar.io/pricing"
}
Endpoints
/api/reddit/monitors
Returns all Reddit keyword monitors for the authenticated user, including mention counts and unread alert counts.
{
"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"
}
]
}
/api/reddit/monitors/{id}
Returns details for a single monitor. Returns 404 if not found or not owned by you.
| Parameter | Type | Description |
|---|---|---|
id | integer | Monitor ID required |
curl -H "Authorization: Bearer YOUR_TOKEN" \
https://pageradar.io/api/reddit/monitors/1
/api/reddit/monitors/{id}/mentions
Returns paginated mentions for a specific monitor. Supports the same query filters as List All Mentions.
curl -H "Authorization: Bearer YOUR_TOKEN" \
"https://pageradar.io/api/reddit/monitors/1/mentions?subreddit=seo&per_page=20"
/api/reddit/mentions
Returns all Reddit mentions across all your monitors, with powerful filtering, sorting, and pagination.
| Parameter | Type | Default | Description |
|---|---|---|---|
monitor_id |
integer | - | Filter by monitor ID |
keyword |
string | - | Search within keyword_found (partial match) |
subreddit |
string | - | Filter by subreddit name (e.g. seo) |
found_in |
string | - | Where keyword was found: title, body, or comment |
date_from |
date | - | Start date (YYYY-MM-DD) |
date_to |
date | - | End date (YYYY-MM-DD) |
sort |
string | date | date, score, or comments |
sort_dir |
string | desc | asc or desc |
per_page |
integer | 50 | Results per page (max 100) |
curl -H "Authorization: Bearer YOUR_TOKEN" \
"https://pageradar.io/api/reddit/mentions?subreddit=seo&date_from=2026-01-01&sort=score&per_page=20"
{
"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 }
}
/api/reddit/mentions/{id}
Returns a single mention with full details. Returns 404 if not found or not owned by you.
curl -H "Authorization: Bearer YOUR_TOKEN" \
https://pageradar.io/api/reddit/mentions/123
/api/reddit/search
Live
Search Reddit in real-time for any keyword. This endpoint queries the Reddit API directly and returns matching posts — no monitor needed.
Perfect for one-off brand checks, prospecting, or building custom monitoring dashboards.
| Parameter | Type | Default | Description |
|---|---|---|---|
keyword |
string | - | Keyword to search for required |
subreddits[] |
array | all | Limit to specific subreddits (e.g. subreddits[]=seo&subreddits[]=webdev) |
sort |
string | new | new, relevance, hot, top, or comments |
time |
string | week | hour, day, week, month, year, or all |
limit |
integer | 25 | Number of Reddit posts to scan (max 100) |
curl -H "Authorization: Bearer YOUR_TOKEN" \
"https://pageradar.io/api/reddit/search?keyword=elon+musk&time=day&limit=25"
{
"data": [
{
"reddit_id": "1ry61df",
"post_title": "what's the cringiest fact about elon musk?",
"post_url": "https://reddit.com/r/AskReddit/comments/1ry61df",
"subreddit": "AskReddit",
"author": "Thick-Topic-521",
"found_in": "title",
"context_text": "what's the cringiest fact about elon musk?",
"keyword_found": "elon musk",
"score": 2,
"num_comments": 4,
"created_at_reddit": "2026-03-19T17:01:26+00:00"
}
],
"keyword": "elon musk",
"subreddits": "all",
"sort": "new",
"time": "day",
"total": 8
}
/api/user
Returns basic information about the authenticated user. Useful for verifying your token works.
{
"id": 1,
"name": "John Doe",
"email": "[email protected]"
}
| Field | Type | Description |
|---|---|---|
id | integer | Unique monitor ID |
keyword | string | Keyword being tracked |
subreddits | array|null | List of specific subreddits, or null for all |
check_frequency | string | hourly, daily, or weekly |
is_active | boolean | Whether the monitor is actively checking |
last_checked_at | string|null | ISO 8601 timestamp of last check |
mentions_count | integer | Total number of mentions found |
unread_alerts_count | integer | Number of unread alerts |
created_at | string | ISO 8601 creation timestamp |
updated_at | string | ISO 8601 last update timestamp |
| Field | Type | Description |
|---|---|---|
id | integer | Unique mention ID |
monitor_id | integer | Parent monitor ID |
keyword_found | string | The exact keyword that was matched |
reddit_id | string | Reddit post ID |
post_title | string | Reddit post title |
post_url | string | Direct URL to the Reddit post |
subreddit | string | Subreddit name (without r/ prefix) |
author | string|null | Reddit username of the author |
found_in | string | title, body, or comment |
context_text | string|null | Text excerpt around the keyword match |
score | integer | Reddit upvote score |
num_comments | integer | Number of comments on the post |
comment_id | string|null | Comment ID (if found in a comment) |
comment_author | string|null | Comment author (if found in a comment) |
created_at_reddit | string|null | When the post was created on Reddit (ISO 8601) |
created_at | string | When we detected this mention (ISO 8601) |
List all monitors
curl -H "Authorization: Bearer YOUR_TOKEN" \
-H "Accept: application/json" \
https://pageradar.io/api/reddit/monitors
Search mentions with filters
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"
Live search for a keyword
curl -H "Authorization: Bearer YOUR_TOKEN" \
-H "Accept: application/json" \
"https://pageradar.io/api/reddit/search?keyword=your+brand&time=day&limit=50"
List all 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`);
});
Search mentions with filters
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})`);
Live search for a keyword
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})`);
});
List all 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")
Search mentions with filters
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")
Live search for a keyword
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']}")
List all 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";
}
Search mentions with filters
$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";
Live search for a keyword
$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";
}