Issues and indexing
The problems RankParse found on your websites, the same list as the dashboard's Issues tab, and the stored Google index status of your tracked pages.
/v1/issuesFreeAPI keyReturns the problems RankParse has found on your websites, worst first. It is the same list the Issues tab shows in the dashboard, built from the same stored data with the same rules, so an agent sees what you see.
Both endpoints read stored data that RankParse syncs in the background. Neither runs a live crawl or calls Google while you wait. For a live check of one URL, use GET /v1/gsc/url-inspection.
Issue types
| Type | What it means | Source |
|---|---|---|
not-indexed | Tracked pages older than two days that Google has not indexed (inspected, verdict not PASS) or has not confirmed yet. Pages not checked yet count only when the website has an active Google property | Stored Google URL Inspection results |
click-drop | Tracked queries with at least 20 clicks in the earlier 4 weeks that either lost at least 30% of those clicks or moved off the first page. Each compares the last 4 weeks with the 4 before. Properties not synced in the last 3 days are skipped | Stored Search Console, Bing and Yandex metrics |
low-ctr | Google queries at positions 1 to 10 with at least 500 impressions in the last 4 weeks whose click-through rate is under half of what their position normally earns | Stored Search Console metrics |
connection | A Search Console, Bing or Yandex source that needs reconnecting, is switched off, or failed to sync | Sync status |
ai-visibility | A failing check from the daily AI visibility scan, for example robots.txt blocking AI search agents | Site scan |
site-health | A failing site health check from the same scan, for example a noindex on the home page | Site scan |
ai-visibility and site-health issues appear only for verified websites in workspaces on a paid plan.
Request
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
site_id | string | No | A website id from /v1/websites. Omit it to list issues across the workspace. | |
type | string | No | all | Comma-separated issue types, for example not-indexed,click-drop. |
limit | integer | No | 50 | Issues to return, 1 to 100. Out-of-range values are clamped. There is no offset: issues come worst first, and total gives the full count. |
Example
curl "https://api.rankparse.com/v1/issues?site_id=site_abc123" \
-H "X-API-Key: rp_your_key"import requests
res = requests.get(
"https://api.rankparse.com/v1/issues",
params={"site_id": "site_abc123"},
headers={"X-API-Key": "rp_your_key"},
)
for issue in res.json()["issues"]:
print(issue["severity"], issue["title"])const res = await fetch("https://api.rankparse.com/v1/issues?site_id=site_abc123", {
headers: { "X-API-Key": "rp_your_key" },
});
const { issues } = await res.json();
for (const issue of issues) console.log(issue.severity, issue.title);Response
{
"site_id": "site_abc123",
"checked_at": "2026-10-27T12:00:00.000Z",
"total": 1,
"issues": [
{
"id": "not-indexed:site_abc123",
"site_id": "site_abc123",
"host": "example.com",
"type": "not-indexed",
"severity": "bad",
"title": "2 pages are not in Google's index",
"detail": "2 were checked and Google did not index them. Pages that are not in Google's index cannot appear in search results.",
"source": "google",
"detected_at": "2026-10-19T09:30:00.000Z",
"pages": ["https://example.com/pricing", "https://example.com/blog/launch"],
"evidence": null,
"fix": null,
"suggested_task": "find out why 2 pages are not in Google's index, fix what you can, and tell me what I need to do myself",
"indexnow_urls": ["https://example.com/pricing", "https://example.com/blog/launch"],
"connection": null,
"links": [{ "label": "See pages", "url": "https://rankparse.com/dashboard/sites/site_abc123/indexing" }]
}
],
"skipped": [],
"truncated": false
}Response fields
| Field | Type | Description |
|---|---|---|
site_id | string or null | The website asked for, or null for a workspace-wide list. |
checked_at | string | When the list was computed (ISO 8601). |
total | integer | Issues matching the filter, before limit. |
issues[].id | string | Stable for the same problem on the same website. |
issues[].type | string | One of the issue types above. |
issues[].severity | string | bad or warn. |
issues[].title / detail | string | Plain-English summary and explanation, as the dashboard shows them. |
issues[].source | string | google, bing, yandex or rankparse (the site scan). |
issues[].detected_at | string | When the problem became detectable, from the data where possible. |
issues[].pages | array or null | Affected pages (not-indexed, up to 50). |
issues[].evidence | array or null | One short line per affected query, page or scan finding. |
issues[].fix | string or null | The concrete fix (ai-visibility and site-health). |
issues[].suggested_task | string | One sentence an agent can act on. |
issues[].indexnow_urls | array or null | not-indexed only: pages not submitted to IndexNow in the last 24 hours (up to 85). |
issues[].connection | object or null | connection only: provider, error_code of the last failed sync, last_synced_at. |
issues[].links | array | Dashboard pages where the issue is reviewed or fixed. |
skipped | array | Checks that could not run: "<type>" for every website, or "<type>:<site_id>" for one. |
truncated | boolean | Workspace-wide only: true when not-indexed, click-drop, low-ctr and connection issues covered only the 25 most recently synced websites. ai-visibility and site-health issues cover up to 500 websites. |
/v1/indexingFreeAPI keyReturns the pages tracked on a website's Indexing page with the last stored Google URL Inspection result for each. RankParse re-inspects tracked pages in the background about once a day.
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
site_id | string | Yes | A website id from /v1/websites. | |
status | string | No | all | not_indexed (inspected, verdict not PASS), unchecked (no verdict yet), indexed (PASS), error (the last inspection failed) or all. |
limit | integer | No | 100 | Pages to return, 1 to 500. |
offset | integer | No | 0 | Pages to skip, for paging. |
Pages come back not indexed first, then unchecked, then indexed, newest first within each group.
Response
{
"site_id": "site_abc123",
"host": "example.com",
"google_inspection_available": true,
"summary": { "total": 42, "indexed": 38, "not_indexed": 2, "unchecked": 2, "inspection_errors": 0 },
"status": "all",
"limit": 100,
"offset": 0,
"urls": [
{
"url": "https://example.com/pricing",
"added_at": "2026-10-10T08:00:00.000Z",
"google": {
"verdict": "NEUTRAL",
"coverage_state": "Crawled - currently not indexed",
"robots_txt_state": "ALLOWED",
"indexing_state": "INDEXING_ALLOWED",
"page_fetch_state": "SUCCESSFUL",
"last_crawl_time": "2026-10-25T03:12:44Z",
"google_canonical": "https://example.com/pricing",
"inspected_at": "2026-10-27T06:00:00.000Z",
"error": null
},
"indexnow": { "submitted_at": null, "error": null }
}
]
}google_inspection_available is false when no verified Google property covers the website. Its pages are then never inspected and stay unchecked.
Behavior and limits
- Cost: 0 credits for both endpoints.
- Stored data: metrics sync daily and pages are re-inspected about once a day, so a fix shows up after the next sync, not immediately.
- Rate limit: 60 requests per minute per key.
- Scope: your own workspace only. A website id from another workspace returns
404.
Errors
| HTTP | Code | When |
|---|---|---|
| 400 | invalid_issue_type | type names an unknown issue type. |
| 400 | invalid_indexing_status | status is not one of the allowed values. |
| 401 | invalid_api_key | Missing, invalid or revoked API key. |
| 404 | issues_site_not_found | site_id is not a website in your workspace (/v1/issues). |
| 404 | indexing_site_not_found | site_id is missing or not a website in your workspace (/v1/indexing). |
| 429 | rate_limited | More than 60 requests in a minute. |
See Error codes.
Related
Google Search Console
Live search analytics, sitemaps and URL inspection.
IndexNow
Submit not-indexed pages for recrawling.
Rank tracking
Stored keyword rankings behind the click-drop issues.
MCP tools: list_site_issues and get_indexing_status (API-key endpoint only).
Google Search Console
Query your own live Google Search Console data (queries, pages, countries, devices, sitemaps, URL inspection) through the RankParse API.
Google Ads keyword research
Search volume, competition and bid ranges from Google's Keyword Planner, for keyword ideas or a list you already have.