Data
List pages
GET
/api/v1/projects/{id}/pages
Sorted by URL. Requires the view-pages permission.
- API key access
- Read only or read and write
- Project permission
- View pages
- Success
- 200 — OK
Parameters
Path
| Parameter | Type | Notes |
|---|---|---|
id required |
string | Project id |
Query string
| Parameter | Type | Notes |
|---|---|---|
page |
integer | default 1 · min 1 |
limit |
integer | default 50 · min 1 · max 100 |
q |
string | Case-insensitive URL substring (plain text) · max 200 chars |
Example request
Replace tk_live_YOUR_KEY with your API key and the ids with your own.
curl 'https://trackerv2.marketingplanet.global/api/v1/projects/6650a4c2e1b3d5f7a9c1e301/pages?q=acmeretail.com%2F&limit=50' \
-H 'Authorization: Bearer tk_live_YOUR_KEY'
const response = await fetch('https://trackerv2.marketingplanet.global/api/v1/projects/6650a4c2e1b3d5f7a9c1e301/pages?q=acmeretail.com%2F&limit=50', {
headers: {
Authorization: 'Bearer tk_live_YOUR_KEY',
},
});
const result = await response.json();
if (!response.ok) throw new Error(`${result.error.code}: ${result.error.message}`);
console.log(result.data);
import requests
response = requests.get(
"https://trackerv2.marketingplanet.global/api/v1/projects/6650a4c2e1b3d5f7a9c1e301/pages",
headers={"Authorization": "Bearer tk_live_YOUR_KEY"},
params={
"q": "acmeretail.com/",
"limit": 50,
},
)
result = response.json()
if not response.ok:
raise RuntimeError(f"{result['error']['code']}: {result['error']['message']}")
print(result["data"])
Example response
{
"data": [
{
"id": "6651b5d3f2c4e6a8b0d2f402",
"url": "https://acmeretail.com/about",
"trackingStatus": "active",
"isActive": true,
"source": {
"sitemap": true,
"manual": false,
"links": false
},
"statusCode": 200,
"title": "About us | Acme Retail",
"lastFetchedAt": "2026-10-06T03:04:02.000Z",
"openFindingCount": 0,
"createdAt": "2026-05-24T10:20:00.000Z",
"updatedAt": "2026-10-06T03:04:02.000Z"
},
{
"id": "6651b5d3f2c4e6a8b0d2f401",
"url": "https://acmeretail.com/products/trail-runner",
"trackingStatus": "active",
"isActive": true,
"source": {
"sitemap": true,
"manual": false,
"links": false
},
"statusCode": 200,
"title": "Trail Runner 2 — Lightweight Running Shoe | Acme Retail",
"lastFetchedAt": "2026-10-06T03:04:18.000Z",
"openFindingCount": 1,
"createdAt": "2026-05-24T10:20:00.000Z",
"updatedAt": "2026-10-06T03:04:18.000Z"
}
],
"meta": {
"page": 1,
"limit": 50,
"total": 2
}
}
Response fields
| Field | Type | Notes |
|---|---|---|
data |
array of PageSummary | |
data[].id |
string | |
data[].url |
string | |
data[].trackingStatus |
string | |
data[].isActive |
boolean | |
data[].source |
object | |
data[].source.sitemap |
boolean | |
data[].source.manual |
boolean | |
data[].source.links |
boolean | |
data[].statusCode |
integer or null | |
data[].title |
string or null | |
data[].lastFetchedAt |
string (date-time) or null | |
data[].openFindingCount |
integer | |
data[].createdAt |
string (date-time) | |
data[].updatedAt |
string (date-time) |
Errors
Besides the errors any request can return (bad or missing key, plan, scope, rate limit), this endpoint can return:
| Status | error.code | Meaning |
|---|---|---|
| 404 | not-found | The resource does not exist or you cannot open it. Tracker does not reveal which. |
| 403 | flag-viewPages | Your project membership does not include viewing pages. |
Errors always look like { "error": { "code": "…", "message": "…" } }. See Errors & limits.