Skip to Content

Tech & Trust

REST endpoints for Tech & Trust. Base URL https://api.competlab.com; every request needs a CL-API-Key header (see Authentication). Responses wrap in { item } or { items }; errors in { error }.

Get latest tech & trust data

GET/v1/projects/{projectId}/tech-trust

Get the latest tech & trust profile data for all competitors in a project. Returns security headers, trust signals, technology stack, robots.txt analysis, and DNS infrastructure.

Returns · { item }

Path parameters

NameTypeDescription
projectIdstringProject ID

Request

curl "https://api.competlab.com/v1/projects/507f1f77bcf86cd799439011/tech-trust" \ -H "CL-API-Key: YOUR_COMPETLAB_API_KEY"

Response 200 OK

{ "item": { "lastUpdatedAt": "2026-03-15T10:00:00.000Z", "summary": { "competitorsChecked": 6, "competitorsSuccessful": 5, "customer": { "domain": "yoursite.com", "securityGrade": "B", "securityScore": 72, "securitySignalsAvailable": { "available": false, "reason": "site_uses_behavioral_protection" }, "trustSignalCount": 8, "techStackCount": 14, "blockedAiBotsCount": 0, "allowsAiAccess": true }, "topSecurityCompetitor": { "domain": "rival.com", "securityGrade": "A", "securityScore": 95 }, "topTrustCompetitor": { "domain": "other.com", "trustSignalCount": 15 }, "securityScoreGap": -23, "trustSignalGap": -7 }, "competitors": [ { "domain": "competitor.com", "isOwn": false, "securityHeaders": { "grade": "A", "score": 85, "hsts": true, "csp": true, "xFrameOptions": true, "xContentTypeOptions": true, "signalsAvailable": { "available": false, "reason": "site_uses_behavioral_protection" } }, "trustSignals": { "totalCount": 10, "categories": { "compliance": 3, "reviews": 4, "socialProof": 2, "certifications": 1 } }, "technologyStack": { "tech": [ "React", "Next.js", "TypeScript" ], "growth": [ "Google Analytics", "HubSpot" ], "engagement": [ "Intercom", "Zendesk" ], "totalCount": 12 }, "robotsTxt": { "exists": true, "aiBotsBlocked": [ "GPTBot", "ClaudeBot" ], "totalRules": 5 }, "dnsInfrastructure": { "emailProvider": "Google Workspace", "dnsProvider": "Cloudflare" } } ] } }

Errors

StatusCodeMeaning
401api_key_missing · api_key_invalid · api_key_revoked · api_key_expired · insufficient_scopeThe CL-API-Key is missing, malformed, revoked, expired, or lacks the required scope.
404project_not_foundNo project matches the id in the path.

Every error uses the shared { error: { code, message, status } } envelope; code is one of the values listed above.

{ "error": { "code": "api_key_invalid", "message": "Invalid API key", "status": 401 } }

Get tech & trust run history

GET/v1/projects/{projectId}/tech-trust/history

Get paginated history of tech & trust monitoring runs for a project. Each entry includes run timing and summary statistics.

Returns · { items, pagination }

Path parameters

NameTypeDescription
projectIdstringProject ID

Query parameters

NameTypeRequiredDescription
pagenumberPage number (1-indexed). Default 1. Min 1.
limitnumberNumber of items per page. Default 20. Range 1100.

Request

curl "https://api.competlab.com/v1/projects/507f1f77bcf86cd799439011/tech-trust/history?page=1&limit=20" \ -H "CL-API-Key: YOUR_COMPETLAB_API_KEY"

Response 200 OK

{ "items": [ { "runId": "507f1f77bcf86cd799439011", "completedAt": "2026-03-15T10:00:00.000Z", "summary": { "competitorsChecked": 6, "competitorsSuccessful": 5, "customer": { "domain": "yoursite.com", "securityGrade": "B", "securityScore": 72, "securitySignalsAvailable": { "available": false, "reason": "site_uses_behavioral_protection" }, "trustSignalCount": 8, "techStackCount": 14, "blockedAiBotsCount": 0, "allowsAiAccess": true }, "topSecurityCompetitor": { "domain": "rival.com", "securityGrade": "A", "securityScore": 95 }, "topTrustCompetitor": { "domain": "other.com", "trustSignalCount": 15 }, "securityScoreGap": -23, "trustSignalGap": -7 } } ], "pagination": { "page": 1, "limit": 20, "total": 47, "totalPages": 3, "hasMore": true } }

Paginated — pass page and limit query parameters and follow pagination.hasMore to page through the full set.

Errors

StatusCodeMeaning
401api_key_missing · api_key_invalid · api_key_revoked · api_key_expired · insufficient_scopeThe CL-API-Key is missing, malformed, revoked, expired, or lacks the required scope.

Every error uses the shared { error: { code, message, status } } envelope; code is one of the values listed above.

{ "error": { "code": "api_key_invalid", "message": "Invalid API key", "status": 401 } }

Get tech & trust data for a specific run

GET/v1/projects/{projectId}/tech-trust/history/{runId}

Get full tech & trust data for a specific historical monitoring run, including per-competitor security headers, trust signals, technology stack, robots.txt, and DNS infrastructure.

Returns · { item }

Path parameters

NameTypeDescription
runIdstringRun ID
projectIdstringProject ID

Request

curl "https://api.competlab.com/v1/projects/507f1f77bcf86cd799439011/tech-trust/history/507f1f77bcf86cd799439012" \ -H "CL-API-Key: YOUR_COMPETLAB_API_KEY"

Response 200 OK

{ "item": { "runId": "507f1f77bcf86cd799439011", "completedAt": "2026-03-15T10:00:00.000Z", "summary": { "competitorsChecked": 6, "competitorsSuccessful": 5, "customer": { "domain": "yoursite.com", "securityGrade": "B", "securityScore": 72, "securitySignalsAvailable": { "available": false, "reason": "site_uses_behavioral_protection" }, "trustSignalCount": 8, "techStackCount": 14, "blockedAiBotsCount": 0, "allowsAiAccess": true }, "topSecurityCompetitor": { "domain": "rival.com", "securityGrade": "A", "securityScore": 95 }, "topTrustCompetitor": { "domain": "other.com", "trustSignalCount": 15 }, "securityScoreGap": -23, "trustSignalGap": -7 }, "competitors": [ { "domain": "competitor.com", "isOwn": false, "securityHeaders": { "grade": "A", "score": 85, "hsts": true, "csp": true, "xFrameOptions": true, "xContentTypeOptions": true, "signalsAvailable": { "available": false, "reason": "site_uses_behavioral_protection" } }, "trustSignals": { "totalCount": 10, "categories": { "compliance": 3, "reviews": 4, "socialProof": 2, "certifications": 1 } }, "technologyStack": { "tech": [ "React", "Next.js", "TypeScript" ], "growth": [ "Google Analytics", "HubSpot" ], "engagement": [ "Intercom", "Zendesk" ], "totalCount": 12 }, "robotsTxt": { "exists": true, "aiBotsBlocked": [ "GPTBot", "ClaudeBot" ], "totalRules": 5 }, "dnsInfrastructure": { "emailProvider": "Google Workspace", "dnsProvider": "Cloudflare" } } ] } }

Errors

StatusCodeMeaning
401api_key_missing · api_key_invalid · api_key_revoked · api_key_expired · insufficient_scopeThe CL-API-Key is missing, malformed, revoked, expired, or lacks the required scope.
404run_not_foundNo run matches the id in the path.

Every error uses the shared { error: { code, message, status } } envelope; code is one of the values listed above.

{ "error": { "code": "api_key_invalid", "message": "Invalid API key", "status": 401 } }
Last updated on