تاریخچه صفحه با آدرس
GET
/sites/{siteId}/pages/history- Scope
pages:read- ابزار MCP
page_history
What changed on a page, by URL.
توضیح ها از سند OpenAPI می آیند و انگلیسی اند.
پارامترها
| نام | محل | توضیح |
|---|---|---|
siteIdاجباری | path | stringWebsite id, from GET /sites. |
urlاجباری | query | stringThe page address, exactly as crawled. |
limit | query | integerdefault 30, min 1, max 100Entries to return, 1 to 100. |
پاسخ
200 · application/json
| فیلد | توضیح |
|---|---|
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 |
نکته ها
GET /sites/{siteId}/pages/{pageId}/history (یا GET /sites/{siteId}/pages/history?url=) می گوید در یک صفحه از یک بررسی یا بررسی دوباره تا بعدی چه چیزی عوض شده، از جدیدترین به قدیمی ترین. از چیزی استفاده می کند که MonoRanks موقع خواندن صفحه ذخیره کرده؛ برای این کار چیزی کراول نمی شود. اپ همین خط زمانی را در صفحه جزئیات هر صفحه نشان می دهد.
{
"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"
}
| مورد | توضیح |
|---|---|
| چه چیزهایی مقایسه می شوند | field یکی از این هاست: status، redirect، title، description، h1، headings (تعداد تیترهای H2)، canonical، noindex، robots، wordCount، schemaTypes، internalLinks، pageScore و aeoScore. اگر لیست changes خالی باشد یعنی چیزی عوض نشده. |
| تغییرهای کوچک حساب نمی شوند | تعداد کلمات باید دست کم 10 کلمه و 5% تغییر کند. فاصله ها در عنوان و ترتیب نوع های اسکیما نادیده گرفته می شوند. |
| قطعی سایت | وقتی در یک بار خواندن HTML قابل خواندنی نبوده، noSnapshot برابر true است. آن مورد فقط تغییر کد وضعیت را نشان می دهد و خواندن بعدی با آخرین خواندنی مقایسه می شود که HTML قابل خواندن داشته. |
| تا چه زمانی عقب | خواندن ها 12 ماه نگه داشته می شوند؛ first قدیمی ترین مورد نگه داشته شده را نشان می دهد. بررسی های دوباره و امتیاز صفحه ها از نسخه 1.0.92 به بعد ذخیره می شوند، پس در موردهای قدیمی تر pageScore و aeoScore برابر null است. |
خطاها
| کد | معنی |
|---|---|
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. |
نمونه درخواست
curl \
-H "Authorization: Bearer mr_ws_…" \
"https://app.monoranks.com/api/v1/sites/SITE_ID/pages/history?url=https%3A%2F%2Fexample.com%2Fpricing%2F"const res = await fetch("https://app.monoranks.com/api/v1/sites/SITE_ID/pages/history?url=https%3A%2F%2Fexample.com%2Fpricing%2F", {
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/history?url=https%3A%2F%2Fexample.com%2Fpricing%2F",
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/history?url=https%3A%2F%2Fexample.com%2Fpricing%2F");
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/history?url=https%3A%2F%2Fexample.com%2Fpricing%2F", { headers: { Authorization: "Bearer mr_ws_…" } });نمونه پاسخ
{
"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."
}
}سرور MCP همین کار را با ابزار page_history انجام می دهد.