Skip to content

Crawler APIs

Dashboard-aligned crawler APIs for Overview, Live, Pages, Access, and the same safe actions shown in the crawler dashboard.

Code example

Overview Example
curl -X GET 'https://api.trakkr.ai/crawler/overview?brand_id=00000000-0000-4000-8000-81f286d10c3c&range_preset=30d&compare_to=previous_period' \
  -H "Authorization: Bearer $TRAKKR_API_KEY"
Overview Response · 200 OK
{
  "brand_id": "00000000-0000-4000-8000-81f286d10c3c",
  "range": {
    "range_preset": "30d",
    "start": "2026-03-18",
    "end": "2026-04-17",
    "days": 30,
    "compare_to": "previous_period"
  },
  "state": {
    "has_tracking_id": true,
    "has_historical_data": true,
    "tracking_id": "00000000-0000-4000-8000-81f286d10c3c"
  },
  "hero": {
    "total_visits": 1842,
    "total_visits_change": 23.5,
    "unique_pages": 47,
    "unique_pages_change": 12.0,
    "avg_daily_visits": 61.4,
    "top_crawler": "ChatGPT"
  },
  "chart": {
    "series": [
      { "date": "2026-04-10", "count": 72, "by_crawler": { "ChatGPT": 38, "Perplexity": 21 } }
    ],
    "distribution": [
      { "crawler": "ChatGPT", "count": 892, "percentage": 48.4 }
    ],
    "bot_type_summary": { "training": 621, "search": 504, "interaction": 717, "agent": 0, "other": 0 }
  },
  "breakdown": {
    "distribution": [
      { "crawler": "ChatGPT", "count": 892, "percentage": 48.4 }
    ],
    "top_crawler": "ChatGPT",
    "search_bot_visits": 821,
    "crawl_efficiency_pct": 71.3
  },
  "top_pages": [
    { "url": "https://example.com/pricing", "count": 312, "crawlers": ["ChatGPT", "Perplexity"] }
  ],
  "recent_preview": [
    {
      "id": "0",
      "url": "https://example.com/pricing",
      "platform": "ChatGPT",
      "intent": "interaction",
      "visited_at": "2026-04-17T13:11:00Z",
      "status_code": 200
    }
  ]
}

Synthetic example. Values are made up.

API key required

60 req/min reads30 req/min actions

Overview

The crawler API now follows the same mental model as the crawler dashboard: Overview, Live, Pages, Access, and the same safe actions already visible in-product.

The legacy /get-crawler endpoint still exists as a compatibility route. New integrations should use the endpoints below.

Primary Endpoint

GET/crawler/overview

Authenticate with Authorization: Bearer $TRAKKR_API_KEY. Key and access guide

Request parameters

brand_idstringqueryRequired

Brand UUID

Format: uuid

range_presetstringqueryOptional

Default: "30d" · Options: "24h", "7d", "30d", "90d", "custom"

start_datestring | nullqueryOptional

end_datestring | nullqueryOptional

compare_tostringqueryOptional

Default: "none" · Options: "none", "previous_period"

Responses and errors
200Successful Response

application/json

brand_idstringRequired

rangeobjectRequired

Fields in range

range_presetstringRequired

startstringRequired

endstringRequired

daysintegerRequired

compare_tostringOptional

Default: "none"

stateobjectRequired

heroobjectRequired

chartobjectRequired

breakdownobjectRequired

top_pagesobject[]Required

Fields in top_pages

Array of object.

object. Additional keys are allowed.

recent_previewobject[]Required

Fields in recent_preview

Array of object.

object. Additional keys are allowed.

sessions_previewobject[]Optional

Default: []

Fields in sessions_preview

Array of object. Default: []

object. Additional keys are allowed.

compareobject | nullOptional

connectionsobject | nullOptional

401Missing, malformed, or expired credentials

application/json

detailstring | object | nullOptional

errorstring | nullOptional

402The current plan does not fund this operation

application/json

detailstring | object | nullOptional

errorstring | nullOptional

403Invalid credentials, missing brand access, or insufficient role

application/json

detailstring | object | nullOptional

errorstring | nullOptional

422Validation Error

application/json

detailobject[]Optional

Fields in detail

Array of object.

locstring | integer[]Required

Fields in loc

Array of string | integer.

string

string.

integer

integer.

msgstringRequired

typestringRequired

429Rate limit exceeded

application/json

detailstring | object | nullOptional

errorstring | nullOptional

500The operation failed

application/json

detailstring | object | nullOptional

errorstring | nullOptional

503Authentication, entitlement, or a required dependency is temporarily unavailable

application/json

detailstring | object | nullOptional

errorstring | nullOptional

OpenAPI source

Returns the top-level crawler dashboard state: hero metrics, chart series, platform breakdown, top pages, and recent preview rows.

Endpoint Suite

Use the crawler suite the same way you use the dashboard: fetch an overview, drill into Live or Pages, open a page/path/bot drawer, inspect Access, then use the safe actions if needed.

GET/crawler/overview

Hero stats, chart, setup state, top pages, and recent preview.

Authenticate with Authorization: Bearer $TRAKKR_API_KEY. Key and access guide

Request parameters

brand_idstringqueryRequired

Brand UUID

Format: uuid

range_presetstringqueryOptional

Default: "30d" · Options: "24h", "7d", "30d", "90d", "custom"

start_datestring | nullqueryOptional

end_datestring | nullqueryOptional

compare_tostringqueryOptional

Default: "none" · Options: "none", "previous_period"

Responses and errors
200Successful Response

application/json

brand_idstringRequired

rangeobjectRequired

Fields in range

range_presetstringRequired

startstringRequired

endstringRequired

daysintegerRequired

compare_tostringOptional

Default: "none"

stateobjectRequired

heroobjectRequired

chartobjectRequired

breakdownobjectRequired

top_pagesobject[]Required

Fields in top_pages

Array of object.

object. Additional keys are allowed.

recent_previewobject[]Required

Fields in recent_preview

Array of object.

object. Additional keys are allowed.

sessions_previewobject[]Optional

Default: []

Fields in sessions_preview

Array of object. Default: []

object. Additional keys are allowed.

compareobject | nullOptional

connectionsobject | nullOptional

401Missing, malformed, or expired credentials

application/json

detailstring | object | nullOptional

errorstring | nullOptional

402The current plan does not fund this operation

application/json

detailstring | object | nullOptional

errorstring | nullOptional

403Invalid credentials, missing brand access, or insufficient role

application/json

detailstring | object | nullOptional

errorstring | nullOptional

422Validation Error

application/json

detailobject[]Optional

Fields in detail

Array of object.

locstring | integer[]Required

Fields in loc

Array of string | integer.

string

string.

integer

integer.

msgstringRequired

typestringRequired

429Rate limit exceeded

application/json

detailstring | object | nullOptional

errorstring | nullOptional

500The operation failed

application/json

detailstring | object | nullOptional

errorstring | nullOptional

503Authentication, entitlement, or a required dependency is temporarily unavailable

application/json

detailstring | object | nullOptional

errorstring | nullOptional

OpenAPI source
GET/crawler/live

Live tab views: activity, pages, and sessions with dashboard filters.

Authenticate with Authorization: Bearer $TRAKKR_API_KEY. Key and access guide

Request parameters

brand_idstringqueryRequired

Brand UUID

Format: uuid

viewstringqueryOptional

Default: "activity" · Options: "activity", "pages", "sessions"

range_presetstringqueryOptional

Default: "30d" · Options: "24h", "7d", "30d", "90d", "custom"

start_datestring | nullqueryOptional

end_datestring | nullqueryOptional

intentstringqueryOptional

Default: "all" · Options: "all", "interaction", "search", "training"

platformstring | nullqueryOptional

Comma-separated platform names

http_statusstring | nullqueryOptional

Comma-separated status groups: 2xx,3xx,4xx,5xx

searchstring | nullqueryOptional

sort_bystring | nullqueryOptional

sort_dirstringqueryOptional

Default: "desc" · Options: "asc", "desc"

cursorstring | nullqueryOptional

limitintegerqueryOptional

Default: 25 · Minimum: 1 · Maximum: 100

Responses and errors
200Successful Response

application/json

brand_idstringRequired

rangeobjectRequired

Fields in range

range_presetstringRequired

startstringRequired

endstringRequired

daysintegerRequired

compare_tostringOptional

Default: "none"

viewstringRequired

filtersobjectRequired

itemsobject[]Required

Fields in items

Array of object.

object. Additional keys are allowed.

paginationobjectRequired

Fields in pagination

totalintegerRequired

limitintegerRequired

next_cursorstring | nullOptional

401Missing, malformed, or expired credentials

application/json

detailstring | object | nullOptional

errorstring | nullOptional

402The current plan does not fund this operation

application/json

detailstring | object | nullOptional

errorstring | nullOptional

403Invalid credentials, missing brand access, or insufficient role

application/json

detailstring | object | nullOptional

errorstring | nullOptional

422Validation Error

application/json

detailobject[]Optional

Fields in detail

Array of object.

locstring | integer[]Required

Fields in loc

Array of string | integer.

string

string.

integer

integer.

msgstringRequired

typestringRequired

429Rate limit exceeded

application/json

detailstring | object | nullOptional

errorstring | nullOptional

500The operation failed

application/json

detailstring | object | nullOptional

errorstring | nullOptional

503Authentication, entitlement, or a required dependency is temporarily unavailable

application/json

detailstring | object | nullOptional

errorstring | nullOptional

OpenAPI source
GET/crawler/pages

Pages tab lenses: pages, paths, and bots with dashboard sorting and pagination.

Authenticate with Authorization: Bearer $TRAKKR_API_KEY. Key and access guide

Request parameters

brand_idstringqueryRequired

Brand UUID

Format: uuid

lensstringqueryOptional

Default: "pages" · Options: "pages", "paths", "bots"

range_presetstringqueryOptional

Default: "30d" · Options: "24h", "7d", "30d", "90d", "custom"

start_datestring | nullqueryOptional

end_datestring | nullqueryOptional

intentstringqueryOptional

Default: "all" · Options: "all", "interaction", "search", "training"

platformstring | nullqueryOptional

Comma-separated platform names

searchstring | nullqueryOptional

statusstringqueryOptional

Default: "all" · Options: "all", "converting", "cited", "crawled", "healthy", "cold"

sort_bystring | nullqueryOptional

sort_dirstringqueryOptional

Default: "desc" · Options: "asc", "desc"

cursorstring | nullqueryOptional

limitintegerqueryOptional

Default: 25 · Minimum: 1 · Maximum: 100

Responses and errors
200Successful Response

application/json

brand_idstringRequired

rangeobjectRequired

Fields in range

range_presetstringRequired

startstringRequired

endstringRequired

daysintegerRequired

compare_tostringOptional

Default: "none"

lensstringRequired

filtersobjectRequired

itemsobject[]Required

Fields in items

Array of object.

object. Additional keys are allowed.

paginationobjectRequired

Fields in pagination

totalintegerRequired

limitintegerRequired

next_cursorstring | nullOptional

401Missing, malformed, or expired credentials

application/json

detailstring | object | nullOptional

errorstring | nullOptional

402The current plan does not fund this operation

application/json

detailstring | object | nullOptional

errorstring | nullOptional

403Invalid credentials, missing brand access, or insufficient role

application/json

detailstring | object | nullOptional

errorstring | nullOptional

422Validation Error

application/json

detailobject[]Optional

Fields in detail

Array of object.

locstring | integer[]Required

Fields in loc

Array of string | integer.

string

string.

integer

integer.

msgstringRequired

typestringRequired

429Rate limit exceeded

application/json

detailstring | object | nullOptional

errorstring | nullOptional

500The operation failed

application/json

detailstring | object | nullOptional

errorstring | nullOptional

503Authentication, entitlement, or a required dependency is temporarily unavailable

application/json

detailstring | object | nullOptional

errorstring | nullOptional

OpenAPI source
GET/crawler/page-details

Page drawer sections: verdict, pipeline, health, traffic, diagnostics.

Authenticate with Authorization: Bearer $TRAKKR_API_KEY. Key and access guide

Request parameters

brand_idstringqueryRequired

Brand UUID

Format: uuid

page_urlstringqueryRequired

range_presetstringqueryOptional

Default: "30d" · Options: "24h", "7d", "30d", "90d", "custom"

start_datestring | nullqueryOptional

end_datestring | nullqueryOptional

Responses and errors
200Successful Response

application/json

brand_idstringRequired

rangeobjectRequired

Fields in range

range_presetstringRequired

startstringRequired

endstringRequired

daysintegerRequired

compare_tostringOptional

Default: "none"

kindstringRequired

entityobjectRequired

sectionsobjectRequired

401Missing, malformed, or expired credentials

application/json

detailstring | object | nullOptional

errorstring | nullOptional

402The current plan does not fund this operation

application/json

detailstring | object | nullOptional

errorstring | nullOptional

403Invalid credentials, missing brand access, or insufficient role

application/json

detailstring | object | nullOptional

errorstring | nullOptional

422Validation Error

application/json

detailobject[]Optional

Fields in detail

Array of object.

locstring | integer[]Required

Fields in loc

Array of string | integer.

string

string.

integer

integer.

msgstringRequired

typestringRequired

429Rate limit exceeded

application/json

detailstring | object | nullOptional

errorstring | nullOptional

500The operation failed

application/json

detailstring | object | nullOptional

errorstring | nullOptional

503Authentication, entitlement, or a required dependency is temporarily unavailable

application/json

detailstring | object | nullOptional

errorstring | nullOptional

OpenAPI source
GET/crawler/path-details

Path drawer sections: verdict, pipeline, top pages, top bots, diagnostics.

Authenticate with Authorization: Bearer $TRAKKR_API_KEY. Key and access guide

Request parameters

brand_idstringqueryRequired

Brand UUID

Format: uuid

path_idstringqueryRequired

range_presetstringqueryOptional

Default: "30d" · Options: "24h", "7d", "30d", "90d", "custom"

start_datestring | nullqueryOptional

end_datestring | nullqueryOptional

intentstringqueryOptional

Default: "all" · Options: "all", "interaction", "search", "training"

platformstring | nullqueryOptional

searchstring | nullqueryOptional

statusstringqueryOptional

Default: "all" · Options: "all", "converting", "cited", "crawled", "healthy", "cold"

Responses and errors
200Successful Response

application/json

brand_idstringRequired

rangeobjectRequired

Fields in range

range_presetstringRequired

startstringRequired

endstringRequired

daysintegerRequired

compare_tostringOptional

Default: "none"

kindstringRequired

entityobjectRequired

sectionsobjectRequired

401Missing, malformed, or expired credentials

application/json

detailstring | object | nullOptional

errorstring | nullOptional

402The current plan does not fund this operation

application/json

detailstring | object | nullOptional

errorstring | nullOptional

403Invalid credentials, missing brand access, or insufficient role

application/json

detailstring | object | nullOptional

errorstring | nullOptional

422Validation Error

application/json

detailobject[]Optional

Fields in detail

Array of object.

locstring | integer[]Required

Fields in loc

Array of string | integer.

string

string.

integer

integer.

msgstringRequired

typestringRequired

429Rate limit exceeded

application/json

detailstring | object | nullOptional

errorstring | nullOptional

500The operation failed

application/json

detailstring | object | nullOptional

errorstring | nullOptional

503Authentication, entitlement, or a required dependency is temporarily unavailable

application/json

detailstring | object | nullOptional

errorstring | nullOptional

OpenAPI source
GET/crawler/bot-details

Bot drawer sections: verdict, pipeline, top pages, top paths, diagnostics.

Authenticate with Authorization: Bearer $TRAKKR_API_KEY. Key and access guide

Request parameters

brand_idstringqueryRequired

Brand UUID

Format: uuid

bot_namestringqueryRequired

Normalized bot display name

range_presetstringqueryOptional

Default: "30d" · Options: "24h", "7d", "30d", "90d", "custom"

start_datestring | nullqueryOptional

end_datestring | nullqueryOptional

intentstringqueryOptional

Default: "all" · Options: "all", "interaction", "search", "training"

platformstring | nullqueryOptional

searchstring | nullqueryOptional

statusstringqueryOptional

Default: "all" · Options: "all", "converting", "cited", "crawled", "healthy", "cold"

Responses and errors
200Successful Response

application/json

brand_idstringRequired

rangeobjectRequired

Fields in range

range_presetstringRequired

startstringRequired

endstringRequired

daysintegerRequired

compare_tostringOptional

Default: "none"

kindstringRequired

entityobjectRequired

sectionsobjectRequired

401Missing, malformed, or expired credentials

application/json

detailstring | object | nullOptional

errorstring | nullOptional

402The current plan does not fund this operation

application/json

detailstring | object | nullOptional

errorstring | nullOptional

403Invalid credentials, missing brand access, or insufficient role

application/json

detailstring | object | nullOptional

errorstring | nullOptional

422Validation Error

application/json

detailobject[]Optional

Fields in detail

Array of object.

locstring | integer[]Required

Fields in loc

Array of string | integer.

string

string.

integer

integer.

msgstringRequired

typestringRequired

429Rate limit exceeded

application/json

detailstring | object | nullOptional

errorstring | nullOptional

500The operation failed

application/json

detailstring | object | nullOptional

errorstring | nullOptional

503Authentication, entitlement, or a required dependency is temporarily unavailable

application/json

detailstring | object | nullOptional

errorstring | nullOptional

OpenAPI source
GET/crawler/access

Access tab data: findings, bot access matrix, robots.txt, llms.txt, submit-to-search.

Authenticate with Authorization: Bearer $TRAKKR_API_KEY. Key and access guide

Request parameters

brand_idstringqueryRequired

Brand UUID

Format: uuid

range_presetstringqueryOptional

Default: "30d" · Options: "24h", "7d", "30d", "90d", "custom"

start_datestring | nullqueryOptional

end_datestring | nullqueryOptional

Responses and errors
200Successful Response

application/json

object. Additional keys are allowed.

401Missing, malformed, or expired credentials

application/json

detailstring | object | nullOptional

errorstring | nullOptional

402The current plan does not fund this operation

application/json

detailstring | object | nullOptional

errorstring | nullOptional

403Invalid credentials, missing brand access, or insufficient role

application/json

detailstring | object | nullOptional

errorstring | nullOptional

422Validation Error

application/json

detailobject[]Optional

Fields in detail

Array of object.

locstring | integer[]Required

Fields in loc

Array of string | integer.

string

string.

integer

integer.

msgstringRequired

typestringRequired

429Rate limit exceeded

application/json

detailstring | object | nullOptional

errorstring | nullOptional

500The operation failed

application/json

detailstring | object | nullOptional

errorstring | nullOptional

503Authentication, entitlement, or a required dependency is temporarily unavailable

application/json

detailstring | object | nullOptional

errorstring | nullOptional

OpenAPI source
POST/crawler/access/preview-fix

Preview an access fix without applying it.

Authenticate with Authorization: Bearer $TRAKKR_API_KEY. Key and access guide

JSON request body (required)

brand_idstringRequired

Format: uuid

finding_idstringRequired

range_presetstringOptional

Default: "30d" · Options: "24h", "7d", "30d", "90d", "custom"

start_datestring | nullOptional

end_datestring | nullOptional

Responses and errors
200Successful Response

application/json

object. Additional keys are allowed.

401Missing, malformed, or expired credentials

application/json

detailstring | object | nullOptional

errorstring | nullOptional

402The current plan does not fund this operation

application/json

detailstring | object | nullOptional

errorstring | nullOptional

403Invalid credentials, missing brand access, or insufficient role

application/json

detailstring | object | nullOptional

errorstring | nullOptional

422Validation Error

application/json

detailobject[]Optional

Fields in detail

Array of object.

locstring | integer[]Required

Fields in loc

Array of string | integer.

string

string.

integer

integer.

msgstringRequired

typestringRequired

429Rate limit exceeded

application/json

detailstring | object | nullOptional

errorstring | nullOptional

500The operation failed

application/json

detailstring | object | nullOptional

errorstring | nullOptional

503Authentication, entitlement, or a required dependency is temporarily unavailable

application/json

detailstring | object | nullOptional

errorstring | nullOptional

OpenAPI source
POST/crawler/verification-ping

Send the synthetic verification ping shown in the dashboard.

Authenticate with Authorization: Bearer $TRAKKR_API_KEY. Key and access guide

JSON request body (required)

brand_idstringRequired

Format: uuid

Responses and errors
200Successful Response

application/json

object. Additional keys are allowed.

401Missing, malformed, or expired credentials

application/json

detailstring | object | nullOptional

errorstring | nullOptional

402The current plan does not fund this operation

application/json

detailstring | object | nullOptional

errorstring | nullOptional

403Invalid credentials, missing brand access, or insufficient role

application/json

detailstring | object | nullOptional

errorstring | nullOptional

422Validation Error

application/json

detailobject[]Optional

Fields in detail

Array of object.

locstring | integer[]Required

Fields in loc

Array of string | integer.

string

string.

integer

integer.

msgstringRequired

typestringRequired

429Rate limit exceeded

application/json

detailstring | object | nullOptional

errorstring | nullOptional

500The operation failed

application/json

detailstring | object | nullOptional

errorstring | nullOptional

503Authentication, entitlement, or a required dependency is temporarily unavailable

application/json

detailstring | object | nullOptional

errorstring | nullOptional

OpenAPI source
POST/crawler/submit-to-search

Submit URLs to AI search via Bing IndexNow.

Authenticate with Authorization: Bearer $TRAKKR_API_KEY. Key and access guide

JSON request body (required)

brand_idstringRequired

Format: uuid

urlsstring[]Required

Fields in urls

Array of string.

string.

Responses and errors
200Successful Response

application/json

object. Additional keys are allowed.

401Missing, malformed, or expired credentials

application/json

detailstring | object | nullOptional

errorstring | nullOptional

402The current plan does not fund this operation

application/json

detailstring | object | nullOptional

errorstring | nullOptional

403Invalid credentials, missing brand access, or insufficient role

application/json

detailstring | object | nullOptional

errorstring | nullOptional

422Validation Error

application/json

detailobject[]Optional

Fields in detail

Array of object.

locstring | integer[]Required

Fields in loc

Array of string | integer.

string

string.

integer

integer.

msgstringRequired

typestringRequired

429Rate limit exceeded

application/json

detailstring | object | nullOptional

errorstring | nullOptional

500The operation failed

application/json

detailstring | object | nullOptional

errorstring | nullOptional

503Authentication, entitlement, or a required dependency is temporarily unavailable

application/json

detailstring | object | nullOptional

errorstring | nullOptional

OpenAPI source
GET/crawler/submit-to-search/status

Read submit-to-search status and the current summary.

Authenticate with Authorization: Bearer $TRAKKR_API_KEY. Key and access guide

Request parameters

brand_idstringqueryRequired

Brand UUID

Format: uuid

range_presetstringqueryOptional

Default: "30d" · Options: "24h", "7d", "30d", "90d", "custom"

start_datestring | nullqueryOptional

end_datestring | nullqueryOptional

urlsstring | nullqueryOptional

Comma-separated URLs to check

statusstring | nullqueryOptional

Options: "pending", "success", "failed"

Responses and errors
200Successful Response

application/json

object. Additional keys are allowed.

401Missing, malformed, or expired credentials

application/json

detailstring | object | nullOptional

errorstring | nullOptional

402The current plan does not fund this operation

application/json

detailstring | object | nullOptional

errorstring | nullOptional

403Invalid credentials, missing brand access, or insufficient role

application/json

detailstring | object | nullOptional

errorstring | nullOptional

422Validation Error

application/json

detailobject[]Optional

Fields in detail

Array of object.

locstring | integer[]Required

Fields in loc

Array of string | integer.

string

string.

integer

integer.

msgstringRequired

typestringRequired

429Rate limit exceeded

application/json

detailstring | object | nullOptional

errorstring | nullOptional

500The operation failed

application/json

detailstring | object | nullOptional

errorstring | nullOptional

503Authentication, entitlement, or a required dependency is temporarily unavailable

application/json

detailstring | object | nullOptional

errorstring | nullOptional

OpenAPI source

Filters and Ranges

The crawler read endpoints share the same date model as the dashboard. Userange_preset for the built-in windows:24h, 7d,30d, 90d, orcustom with start_date andend_date.

Filter vocab stays intentionally narrow and dashboard-shaped:intent supports all,interaction, search, andtraining. Page status uses the visible dashboard states:converting, cited,crawled, healthy, andcold.

Safe Actions

The public crawler actions match the dashboard's safe action boundary: verification ping, preview access fix, and submit to search. There is no public endpoint to auto-apply crawler fixes.

POST /crawler/access/preview-fix is preview-only. This endpoint returns a preview and does not apply the fix.