Seitenverlauf abrufen
GET
/sites/{siteId}/pages/{pageId}/history- Berechtigung
pages:read- MCP-Tool
page_history
What changed on a page, audit by audit From stored readings (nothing is crawled), newest first; kept for 12 months. wordCount changes count from 10 words and 5 percent; robots is reported only when noindex stayed the same.
Die Beschreibungen kommen aus dem OpenAPI-Dokument und sind auf Englisch.
Parameter
| Name | Ort | Details |
|---|---|---|
siteIdPflicht | Pfad | stringWebsite id, from GET /sites. |
pageIdPflicht | Pfad | stringPage id, from GET /sites/{siteId}/pages. |
limit | Query | integerdefault 30, min 1, max 100Entries to return, 1 to 100. |
Antwort
200 · application/json
| Feld | Details |
|---|---|
page | object · required |
page.id | string · required; Page id |
page.url | string · required; Page address |
entries | list of values · required; Newest first |
entries[].crawlId | string |
entries[].at | string |
entries[].kind | string |
entries[].status | number |
entries[].redirectHops | number |
entries[].pageScore | number |
entries[].aeoScore | number |
entries[].wordCount | number |
entries[].title | string |
entries[].first | true or false |
entries[].noSnapshot | true or false |
entries[].changes | list of objects |
entries[].changes[].field | string |
entries[].changes[].before | string |
entries[].changes[].after | string |
more | true or false · required; Older entries exist |
note | string · required; How the entries are compared |
link | string · required; The page history in the app |
Hinweise
GET /sites/{siteId}/pages/{pageId}/history (oder GET /sites/{siteId}/pages/history?url=) sagt, was sich an einer Seite von einer Prüfung oder Nachprüfung zur nächsten geändert hat, das Neueste zuerst. Der Endpunkt nutzt, was MonoRanks beim Lesen der Seite gespeichert hat; dafür wird nichts gecrawlt. Die App zeigt dieselbe Zeitleiste auf der Detailseite der Seite.
{
"page": { "id": "…", "url": "https://example.com/pricing/" },
"entries": [
{ "crawlId": "…", "at": "2026-10-01T09:12:00Z", "kind": "recheck", "status": 200, "redirectHops": 0, "pageScore": 86, "aeoScore": 71,
"wordCount": 912, "title": "Pricing – Example", "first": false, "noSnapshot": false,
"changes": [ { "field": "title", "before": "Pricing", "after": "Pricing – Example" }, { "field": "pageScore", "before": 78, "after": 86 } ] }
],
"more": true, "note": "…", "link": "https://app.monoranks.com/sites/SITE_ID/pages/PAGE_ID#history"
}
| Was | Details |
|---|---|
| Was verglichen wird | field ist eines von status, redirect, title, description, h1, headings (Anzahl der H2-Überschriften), canonical, noindex, robots, wordCount, schemaTypes, internalLinks, pageScore und aeoScore. Eine leere changes-Liste heißt, dass sich nichts geändert hat. |
| Kleine Bewegungen zählen nicht | Die Wortzahl muss sich um mindestens 10 Wörter und 5 % ändern. Leerzeichen in Titeln und die Reihenfolge der Schema-Typen werden ignoriert. |
| Ausfälle | noSnapshot ist true, wenn die Lesung kein lesbares HTML hatte. Dieser Eintrag zeigt nur die Statusänderung, und die nächste Lesung wird mit der letzten verglichen, die lesbares HTML hatte. |
| Wie weit zurück | Lesungen werden 12 Monate aufbewahrt; first markiert die älteste aufbewahrte. Nachprüfungen und Seitenwerte werden ab Version 1.0.92 gespeichert, daher haben ältere Einträge pageScore und aeoScore auf null. |
Fehler
| Status | Bedeutung |
|---|---|
400 | Bad request. Codes: bad_limit, missing_page. |
401 | Missing, unknown or revoked key. Codes: missing_key, invalid_key. |
403 | The key lacks the scope, covers another website, or its owner lost access. Codes: missing_scope, other_site, owner_left, no_owner, forbidden. |
404 | Not found. Codes: not_found. |
429 | Too many requests this hour for this key. Codes: rate_limited. |
Beispielanfrage
curl \
-H "Authorization: Bearer mr_ws_…" \
"https://app.monoranks.com/api/v1/sites/SITE_ID/pages/PAGE_ID/history"const res = await fetch("https://app.monoranks.com/api/v1/sites/SITE_ID/pages/PAGE_ID/history", {
headers: { Authorization: "Bearer mr_ws_…" },
});
if (!res.ok) throw new Error((await res.json()).error.message);
const data = await res.json();import requests
res = requests.get(
"https://app.monoranks.com/api/v1/sites/SITE_ID/pages/PAGE_ID/history",
headers={"Authorization": "Bearer mr_ws_…"},
)
res.raise_for_status()
data = res.json()<?php
$ch = curl_init("https://app.monoranks.com/api/v1/sites/SITE_ID/pages/PAGE_ID/history");
curl_setopt_array($ch, [
CURLOPT_HTTPHEADER => ["Authorization: Bearer mr_ws_…"],
CURLOPT_RETURNTRANSFER => true,
]);
$data = json_decode(curl_exec($ch), true);import axios from "axios";
const { data } = await axios.get("https://app.monoranks.com/api/v1/sites/SITE_ID/pages/PAGE_ID/history", { headers: { Authorization: "Bearer mr_ws_…" } });Beispielantwort
{
"page": {
"id": "c7a9e1b3-5d7f-4b9c-8e1a-3c5e7a9b1d2f",
"url": "https://acmebikes.com/products/trail-pro-29"
},
"entries": [
{
"crawlId": "d4f6a8c0-2e4a-4c6e-8a0c-4e6a8c0e2a4b",
"at": "2026-10-04T02:41:12.000Z",
"kind": "audit",
"status": 200,
"redirectHops": 0,
"pageScore": 86,
"aeoScore": 71,
"wordCount": 842,
"title": "Trail Pro 29 Mountain Bike | Acme Bikes",
"first": false,
"noSnapshot": false,
"changes": [
{
"field": "title",
"before": "Trail Pro 29 | Acme Bikes",
"after": "Trail Pro 29 Mountain Bike | Acme Bikes"
},
{
"field": "pageScore",
"before": 79,
"after": 86
}
]
},
{
"crawlId": "e5a7c9e1-3f5b-4d7f-9b1d-5f7b9d1f3b5c",
"at": "2026-09-27T02:38:51.000Z",
"kind": "audit",
"status": 200,
"redirectHops": 0,
"pageScore": 79,
"aeoScore": 71,
"wordCount": 836,
"title": "Trail Pro 29 | Acme Bikes",
"first": true,
"noSnapshot": false,
"changes": []
}
],
"more": false,
"note": "One entry per audit or recheck that read this page, newest first.",
"link": "https://app.monoranks.com/sites/3f6c2a1e-8b4d-4c7a-9e21-5d0b7a6f4c13/pages/c7a9e1b3-5d7f-4b9c-8e1a-3c5e7a9b1d2f#history"
}{
"error": {
"code": "bad_limit",
"message": "limit must be a whole number from 1 to 100."
}
}{
"error": {
"code": "missing_key",
"message": "Send the key as Authorization: Bearer mr_site_…"
}
}{
"error": {
"code": "missing_scope",
"message": "This key does not have the scope this call needs."
}
}{
"error": {
"code": "not_found",
"message": "Page not found."
}
}{
"error": {
"code": "rate_limited",
"message": "More than 1200 requests this hour for this key."
}
}Der MCP-Server macht dasselbe mit dem Tool page_history.