GET/properties/{id}/reports/pages
Pages
Pages with clicks, impressions, CTR and position, and the change against the previous period.
Parameters of GET /properties/{id}/reports/pages| Name | In | Type | Required |
|---|
| id | path | string | yes |
| limit | query | integer 1-1000 | no |
| cursor | query | string | no |
| start_date | query | string (date) | yes |
| end_date | query | string (date) | yes |
| compare | query | none | previous_period | previous_year | no |
| filter | query | string | array of string | no |
| sort | query | string | no |
curl
curl -H "Authorization: Bearer $RANKPILOT_API_KEY" \
"https://rank.hanzla.com/api/v1/properties/<property-id>/reports/pages?start_date=<start_date>&end_date=<end_date>"
Node
const res = await fetch("https://rank.hanzla.com/api/v1/properties/<property-id>/reports/pages?start_date=<start_date>&end_date=<end_date>", {
headers: {
Authorization: `Bearer ${process.env.RANKPILOT_API_KEY}`,
},
});
console.log(await res.json());
GET/properties/{id}/reports/competitor-comparison
Competitor Comparison
Compares your crawled pages with one competitor sample: click depth, internal links, structured data and title terms. Figures describe the pages crawled, never the whole site, and carry no rankings, traffic, backlinks or keyword volumes.
Parameters of GET /properties/{id}/reports/competitor-comparison| Name | In | Type | Required |
|---|
| id | path | string | yes |
| limit | query | integer 1-1000 | no |
| cursor | query | string | no |
| start_date | query | string (date) | yes |
| end_date | query | string (date) | yes |
| compare | query | none | previous_period | previous_year | no |
| filter | query | string | array of string | no |
| sort | query | string | no |
curl
curl -H "Authorization: Bearer $RANKPILOT_API_KEY" \
"https://rank.hanzla.com/api/v1/properties/<property-id>/reports/competitor-comparison?start_date=<start_date>&end_date=<end_date>"
Node
const res = await fetch("https://rank.hanzla.com/api/v1/properties/<property-id>/reports/competitor-comparison?start_date=<start_date>&end_date=<end_date>", {
headers: {
Authorization: `Bearer ${process.env.RANKPILOT_API_KEY}`,
},
});
console.log(await res.json());
Parameters of GET /properties/{id}/reports/ga-pages| Name | In | Type | Required |
|---|
| id | path | string | yes |
| limit | query | integer 1-1000 | no |
| cursor | query | string | no |
| start_date | query | string (date) | yes |
| end_date | query | string (date) | yes |
| compare | query | none | previous_period | previous_year | no |
| filter | query | string | array of string | no |
| sort | query | string | no |
curl
curl -H "Authorization: Bearer $RANKPILOT_API_KEY" \
"https://rank.hanzla.com/api/v1/properties/<property-id>/reports/ga-pages?start_date=<start_date>&end_date=<end_date>"
Node
const res = await fetch("https://rank.hanzla.com/api/v1/properties/<property-id>/reports/ga-pages?start_date=<start_date>&end_date=<end_date>", {
headers: {
Authorization: `Bearer ${process.env.RANKPILOT_API_KEY}`,
},
});
console.log(await res.json());
GET/properties/{id}/reports/ga-landing-pages
GA4 landing pages
GA4 landing sessions, engagement, organic sessions, key events and revenue per landing page (read only).
Parameters of GET /properties/{id}/reports/ga-landing-pages| Name | In | Type | Required |
|---|
| id | path | string | yes |
| limit | query | integer 1-1000 | no |
| cursor | query | string | no |
| start_date | query | string (date) | yes |
| end_date | query | string (date) | yes |
| compare | query | none | previous_period | previous_year | no |
| filter | query | string | array of string | no |
| sort | query | string | no |
curl
curl -H "Authorization: Bearer $RANKPILOT_API_KEY" \
"https://rank.hanzla.com/api/v1/properties/<property-id>/reports/ga-landing-pages?start_date=<start_date>&end_date=<end_date>"
Node
const res = await fetch("https://rank.hanzla.com/api/v1/properties/<property-id>/reports/ga-landing-pages?start_date=<start_date>&end_date=<end_date>", {
headers: {
Authorization: `Bearer ${process.env.RANKPILOT_API_KEY}`,
},
});
console.log(await res.json());
GET/properties/{id}/reports/ga-error-pages
GA4 error pages
Pages whose title or path looks like a 404, with views, previous period and Search Console clicks (read only). Detected from titles and paths: GA4 records no HTTP status.
Parameters of GET /properties/{id}/reports/ga-error-pages| Name | In | Type | Required |
|---|
| id | path | string | yes |
| limit | query | integer 1-1000 | no |
| cursor | query | string | no |
| start_date | query | string (date) | yes |
| end_date | query | string (date) | yes |
| compare | query | none | previous_period | previous_year | no |
| filter | query | string | array of string | no |
| sort | query | string | no |
curl
curl -H "Authorization: Bearer $RANKPILOT_API_KEY" \
"https://rank.hanzla.com/api/v1/properties/<property-id>/reports/ga-error-pages?start_date=<start_date>&end_date=<end_date>"
Node
const res = await fetch("https://rank.hanzla.com/api/v1/properties/<property-id>/reports/ga-error-pages?start_date=<start_date>&end_date=<end_date>", {
headers: {
Authorization: `Bearer ${process.env.RANKPILOT_API_KEY}`,
},
});
console.log(await res.json());
GET/properties/{id}/reports/title-hygiene
Title Hygiene
How many synced Merchant products break each title rule: short, long, capitals, promotion, symbols, missing brand, odd spaces, repeated word, duplicate title, no colour or size (read only).
Parameters of GET /properties/{id}/reports/title-hygiene| Name | In | Type | Required |
|---|
| id | path | string | yes |
| limit | query | integer 1-1000 | no |
| cursor | query | string | no |
| start_date | query | string (date) | yes |
| end_date | query | string (date) | yes |
| compare | query | none | previous_period | previous_year | no |
| filter | query | string | array of string | no |
| sort | query | string | no |
curl
curl -H "Authorization: Bearer $RANKPILOT_API_KEY" \
"https://rank.hanzla.com/api/v1/properties/<property-id>/reports/title-hygiene?start_date=<start_date>&end_date=<end_date>"
Node
const res = await fetch("https://rank.hanzla.com/api/v1/properties/<property-id>/reports/title-hygiene?start_date=<start_date>&end_date=<end_date>", {
headers: {
Authorization: `Bearer ${process.env.RANKPILOT_API_KEY}`,
},
});
console.log(await res.json());
GET/properties/{id}/reports/affiliate-links
Affiliate links
Affiliate links detected on the property pages: network, rel attributes (sponsored or nofollow only), whether a disclosure phrase was found in the page text RankPilot stored (a text heuristic, not legal advice), and destination health (a blocked or rate-limited destination is unknown, never dead). Page revenue appears only where a page-level source reports it, labelled with that source; otherwise clicks to affiliate links or nothing (read only).
Parameters of GET /properties/{id}/reports/affiliate-links| Name | In | Type | Required |
|---|
| id | path | string | yes |
| limit | query | integer 1-1000 | no |
| cursor | query | string | no |
| start_date | query | string (date) | yes |
| end_date | query | string (date) | yes |
| compare | query | none | previous_period | previous_year | no |
| filter | query | string | array of string | no |
| sort | query | string | no |
curl
curl -H "Authorization: Bearer $RANKPILOT_API_KEY" \
"https://rank.hanzla.com/api/v1/properties/<property-id>/reports/affiliate-links?start_date=<start_date>&end_date=<end_date>"
Node
const res = await fetch("https://rank.hanzla.com/api/v1/properties/<property-id>/reports/affiliate-links?start_date=<start_date>&end_date=<end_date>", {
headers: {
Authorization: `Bearer ${process.env.RANKPILOT_API_KEY}`,
},
});
console.log(await res.json());
GET/properties/{id}/reports/trust-checklist
Trust checklist
Trust checklist from stored page snapshots: for each site policy page and each page element (byline, author link, reviewer credit for YMYL pages, visible and machine-readable dates, sources, disclosure, first-hand cue) the status present, missing, unknown or not applicable, with the matched or looked-for evidence. Observable on-page facts, not a score, and not a claim about rankings (read only).
Parameters of GET /properties/{id}/reports/trust-checklist| Name | In | Type | Required |
|---|
| id | path | string | yes |
| limit | query | integer 1-1000 | no |
| cursor | query | string | no |
| start_date | query | string (date) | yes |
| end_date | query | string (date) | yes |
| compare | query | none | previous_period | previous_year | no |
| filter | query | string | array of string | no |
| sort | query | string | no |
curl
curl -H "Authorization: Bearer $RANKPILOT_API_KEY" \
"https://rank.hanzla.com/api/v1/properties/<property-id>/reports/trust-checklist?start_date=<start_date>&end_date=<end_date>"
Node
const res = await fetch("https://rank.hanzla.com/api/v1/properties/<property-id>/reports/trust-checklist?start_date=<start_date>&end_date=<end_date>", {
headers: {
Authorization: `Bearer ${process.env.RANKPILOT_API_KEY}`,
},
});
console.log(await res.json());
GET/properties/{id}/reports/backlinks
Backlinks
Referring domains per backlink source (Bing Webmaster Tools, a Search Console Links import, each vendor you connected): newest snapshot against the one before, as new, lost and changed domains. Every row names its source and whether it is first-party data or a third-party estimate; sources are never summed or merged, and a capped snapshot makes "lost" unreliable (read only).
Parameters of GET /properties/{id}/reports/backlinks| Name | In | Type | Required |
|---|
| id | path | string | yes |
| limit | query | integer 1-1000 | no |
| cursor | query | string | no |
| start_date | query | string (date) | yes |
| end_date | query | string (date) | yes |
| compare | query | none | previous_period | previous_year | no |
| filter | query | string | array of string | no |
| sort | query | string | no |
curl
curl -H "Authorization: Bearer $RANKPILOT_API_KEY" \
"https://rank.hanzla.com/api/v1/properties/<property-id>/reports/backlinks?start_date=<start_date>&end_date=<end_date>"
Node
const res = await fetch("https://rank.hanzla.com/api/v1/properties/<property-id>/reports/backlinks?start_date=<start_date>&end_date=<end_date>", {
headers: {
Authorization: `Bearer ${process.env.RANKPILOT_API_KEY}`,
},
});
console.log(await res.json());
GET/properties/{id}/reports/adsense-readiness
AdSense readiness
The AdSense readiness checklist of the newest run: blocking and advisory checks with their status (ok, fail or unknown with the missing input), pages affected, and whether each check comes from a program policy, Google guidance or a RankPilot heuristic. A list of observable facts to fix before applying; it never predicts approval, which Google decides (read only).
Parameters of GET /properties/{id}/reports/adsense-readiness| Name | In | Type | Required |
|---|
| id | path | string | yes |
| limit | query | integer 1-1000 | no |
| cursor | query | string | no |
| start_date | query | string (date) | yes |
| end_date | query | string (date) | yes |
| compare | query | none | previous_period | previous_year | no |
| filter | query | string | array of string | no |
| sort | query | string | no |
curl
curl -H "Authorization: Bearer $RANKPILOT_API_KEY" \
"https://rank.hanzla.com/api/v1/properties/<property-id>/reports/adsense-readiness?start_date=<start_date>&end_date=<end_date>"
Node
const res = await fetch("https://rank.hanzla.com/api/v1/properties/<property-id>/reports/adsense-readiness?start_date=<start_date>&end_date=<end_date>", {
headers: {
Authorization: `Bearer ${process.env.RANKPILOT_API_KEY}`,
},
});
console.log(await res.json());
GET/properties/{id}/reports/crawl-logs
Crawl logs
Crawler hits read from the property's server logs: per day, crawler family (Googlebot, Bingbot, GPTBot, ClaudeBot and the other registry families) and trust level, with status classes. Verified means the request came from an address the vendor publishes; claimed means only the user agent says so. Families are never summed. Fewer than 14 days of logs (see Days of logs) means crawl conclusions are likely, not measured (read only).
Parameters of GET /properties/{id}/reports/crawl-logs| Name | In | Type | Required |
|---|
| id | path | string | yes |
| limit | query | integer 1-1000 | no |
| cursor | query | string | no |
| start_date | query | string (date) | yes |
| end_date | query | string (date) | yes |
| compare | query | none | previous_period | previous_year | no |
| filter | query | string | array of string | no |
| sort | query | string | no |
curl
curl -H "Authorization: Bearer $RANKPILOT_API_KEY" \
"https://rank.hanzla.com/api/v1/properties/<property-id>/reports/crawl-logs?start_date=<start_date>&end_date=<end_date>"
Node
const res = await fetch("https://rank.hanzla.com/api/v1/properties/<property-id>/reports/crawl-logs?start_date=<start_date>&end_date=<end_date>", {
headers: {
Authorization: `Bearer ${process.env.RANKPILOT_API_KEY}`,
},
});
console.log(await res.json());