Get an async tech-stack scan by ID
Changed onGet the current state of an async tech-stack scan. Returns the scan's lifecycle (queued / running / completed / failed) along with createdAt and expiresAt always, plus startedAt once the runner picks it up and completedAt once it reaches a terminal state. On completed the full canonical scan response is in item.result (categorized technology hits with evidence). On failed the failure details are in item.error with a machine-readable code — currently homepage_fetch_failed (upstream homepage fetch threw) or scan_failed (any other error during scan execution). Scoped to the API key's organization — cross-tenant access, never-existed IDs, expired IDs (24h TTL), and malformed IDs all return 404 scan_not_found with an identical envelope to prevent existence-disclosure. Typically sub-second — safe to poll on a 2–5 second interval depending on your timeout budget.
Request
- Base URL: https://api.competlab.com
- URL: https://api.competlab.com/v1/tools/tech-stack/scans/{scanId}
- Auth: API key in header CL-API-Key
Path parameters
Response
Example response
{
"item": {
"id": "6638e9a1b2c3d4e5f6a7b8c9",
"status": "completed",
"createdAt": "2026-05-17T14:30:00.000Z",
"expiresAt": "2026-05-18T14:30:00.000Z",
"startedAt": "2026-05-17T14:30:00.412Z",
"completedAt": "2026-05-17T14:30:45.218Z",
"result": {
"domain": "stripe.com",
"finalUrl": "https://stripe.com/",
"fetchedAt": "2026-05-17T14:30:45.000Z",
"totalTechnologies": 3,
"techStack": [
{
"name": "Next.js",
"evidenceCount": 2,
"evidence": [
{
"kind": "html",
"source": "/_next/static/",
"matched": "<script src=\"/_next/static/chunks/main-app-abc123.js\""
},
{
"kind": "header",
"source": "x-powered-by",
"matched": "Next.js"
}
]
},
{
"name": "Cloudflare",
"evidenceCount": 1,
"evidence": [
{
"kind": "header",
"source": "server",
"matched": "cloudflare"
}
]
}
],
"growthStack": [
{
"name": "HubSpot",
"evidenceCount": 1,
"evidence": [
{
"kind": "html",
"source": "js.hs-scripts.com",
"matched": "<script src=\"//js.hs-scripts.com/1234567.js\""
}
]
}
],
"engagementStack": []
}
}
}Changes
- warning
added the new
not_foundenum value to the/response property for the response status
- warning
- warning
added the new
no_data_availableenum value to the/response property for the response status - warning
added the new
run_not_summarizedenum value to the/response property for the response status
- warning