Skip to content
Prefer AI-native? MCP Server →Want a typed client? SDK →Pre-built workflows? Agent Skills →Full API reference? Docs →
For agencies & platforms

Build CompetLab into your product — or offer it to your clients

Build on it

The REST API and typed SDK pipe CompetLab's intelligence — every dimension, the Strategic Briefing, and the free scans — straight into your own product, dashboard, or workflow. Agencies run multiple client workspaces today with organizations, projects, and role-based access. (Programmatic org/project provisioning via the API is available on request.)

Start building

Resell or white-label

Reselling CompetLab to your clients, or want it white-labeled? Reach out — we'll scope it with you directly.

Talk to us

CompetLab API Reference

Welcome to the CompetLab API documentation. This API provides programmatic access to your competitive intelligence data — technology stacks, content strategy, messaging & positioning, pricing plans, AI brand visibility across ChatGPT, Claude, Gemini, Perplexity, and Google AI Overviews, and — for Perplexity and Google AI Overviews — the pages they read when they answer your buyers' questions.

Who is this for?

  • Developers building integrations with internal tools, CRMs, or BI platforms
  • Agencies building whitelabel competitive dashboards for their clients
  • AI agents and MCP servers consuming structured competitive data
  • Automation platforms (Zapier, n8n) monitoring competitor changes

Authentication

All endpoints require a CL-API-Key header. Generate your API key in the CompetLab app under Your Organization → Settings → API Keys.

CL-API-Key: cl_live_a1b2c3d4e5f6...

Keys are organization-scoped — one key accesses all projects in your organization. Two permission scopes exist: read (current API) and read_write (future).

To manage your keys (create, revoke, set expiration): Your Organization → Settings → API Keys.

Response Format

Every response follows one of three shapes:

Single resource:

{ "item": { "id": "...", "name": "..." } }

Collection (with optional pagination):

{ "items": [...], "pagination": { "page": 1, "limit": 20, "total": 47, "totalPages": 3, "hasMore": true } }

Error:

{ "error": { "code": "project_not_found", "message": "Project not found", "status": 404 } }

Pagination uses ?page=1&limit=20 (1-indexed, default 20, max 100).

Error Codes

All errors return a machine-readable code field for programmatic handling:

CodeStatusDescription
api_key_missing401No CL-API-Key header provided
api_key_invalid401Key not found or malformed
api_key_revoked401Key has been revoked
api_key_expired401Key has expired
insufficient_scope403Key doesn't have the required permission scope
project_not_found404Project doesn't exist or doesn't belong to your organization
no_data_available404No monitoring data available yet for this dimension
not_found404Requested resource not found
invalid_parameters400Invalid query parameters or request format
rate_limit_exceeded429Rate limit exceeded for this API key
internal_error500Unexpected server error — retry or contact support
bad_gateway502Upstream service returned an invalid response — retry with backoff
service_unavailable503Service temporarily unavailable — retry with backoff
gateway_timeout504Upstream service timed out — retry with backoff

Note on 5xx responses: The message field for 5xx errors is a static string ("Internal server error"). Branch on code for programmatic handling — do not pattern-match on message for 5xx.

Monitoring Dimensions

CompetLab monitors six dimensions of competitive intelligence:

DimensionRouteWhat it monitors
Tech & Trust Profile/tech-trustTechnology stack, security headers, trust signals, DNS, robots.txt
Content Intelligence/contentSitemap structure, URL volume, content categories, URL changes
Positioning/positioningHomepage messaging, value propositions, CTAs, target audience
Pricing Intelligence/pricingPricing plans, tiers, free trials, enterprise options, promotions
AI Visibility/ai-visibilityBrand mentions across ChatGPT, Claude, Gemini, Perplexity, and Google AI Overviews — with the rankings the four chat models gave
AI Sources/ai-sourcesThe pages Perplexity and Google AI Overviews read when they answer your buyers' questions, and whether you are on them — per engine, never pooled

Each dimension has three endpoints: a dashboard (latest monitoring data), history (paginated past runs), and run detail (full data for a specific historical run).

Strategic Briefing

Beyond the raw per-dimension data, /strategic-briefing returns the latest synthesized competitive briefing — the as-of read of what changed, what it means, and what to do, with an executive hub, deep-dives, a competitor dossier, and a ranked action plan. It synthesizes a broader analytical set than the monitored dashboards it reads — all six above, plus eight it researches for the briefing alone: landscape, funding, hiring/GTM, product launches and more. It is lean by default (request only the sections you need — it defaults to the hub, which doubles as the navigation map) and always carries methodology coverage caveats. See the endpoint for the full sections list.

Quick Start

Step 1 — Get your API key from Your Organization → Settings → API Keys in the CompetLab app

Step 2 — List your projects:

curl -H "CL-API-Key: cl_live_your_key_here" https://api.competlab.com/v1/projects

Step 3 — Get the latest pricing intelligence:

curl -H "CL-API-Key: cl_live_your_key_here" https://api.competlab.com/v1/projects/{projectId}/pricing

Additional Resources

  • OpenAPI JSON Spec — Machine-readable API definition for code generators and integrations
  • API Key Management — Your Organization → Settings → API Keys in the CompetLab app

Rate Limits

Rate limiting is not enforced in v1. We recommend keeping requests under 60 per minute as a best practice. Rate limits will be introduced in a future version with proper 429 responses and Retry-After headers.

Authentication: send your CompetLab API key as the CL-API-Key header (keys start with cl_live_, issued at app.competlab.com → Organization Settings → API Keys). The competitive-intelligence data is read-only in v1; the on-demand site-audit tools use POST to start a scan.

Endpoints

Every endpoint the live contract declares (39 in total). Parameters and response shapes for each are in the interactive explorer below, and in the machine-readable spec.

MethodEndpointWhat it does
GET/v1/healthCheck API health
GET/v1/projectsList all projects
GET/v1/projects/{projectId}Get project details
GET/v1/projects/{projectId}/competitorsList project competitors
GET/v1/projects/{projectId}/competitors/{competitorId}Get competitor details
GET/v1/projects/{projectId}/tech-trustGet latest tech & trust data
GET/v1/projects/{projectId}/tech-trust/historyGet tech & trust run history
GET/v1/projects/{projectId}/tech-trust/history/{runId}Get tech & trust data for a specific run
GET/v1/projects/{projectId}/contentGet latest content intelligence data
GET/v1/projects/{projectId}/content/historyGet content intelligence run history
GET/v1/projects/{projectId}/content/history/{runId}Get content intelligence data for a specific run
GET/v1/projects/{projectId}/content/changelogGet content changelog
GET/v1/projects/{projectId}/positioningGet latest positioning data
GET/v1/projects/{projectId}/positioning/historyGet positioning run history
GET/v1/projects/{projectId}/positioning/history/{runId}Get positioning data for a specific run
GET/v1/projects/{projectId}/pricingGet latest pricing intelligence data
GET/v1/projects/{projectId}/pricing/historyGet pricing run history
GET/v1/projects/{projectId}/pricing/history/{runId}Get pricing data for a specific run
GET/v1/projects/{projectId}/ai-visibilityGet latest AI visibility data
GET/v1/projects/{projectId}/ai-visibility/historyGet AI visibility check history
GET/v1/projects/{projectId}/ai-visibility/history/{checkId}Get AI visibility data for a specific check
GET/v1/projects/{projectId}/ai-visibility/trendGet how the market the AI models draw has moved
GET/v1/projects/{projectId}/ai-sourcesGet latest AI sources data
GET/v1/projects/{projectId}/ai-sources/historyGet AI sources check history
GET/v1/projects/{projectId}/ai-sources/history/{checkId}Get AI sources data for a specific check
GET/v1/projects/{projectId}/alertsList project alerts
GET/v1/projects/{projectId}/schedulesList monitoring schedules
GET/v1/projects/{projectId}/strategic-briefingGet the current state of this project's strategic briefing
GET/v1/projects/{projectId}/strategic-briefing/historyList this project's briefing editions
GET/v1/projects/{projectId}/strategic-briefing/history/{runId}Get one briefing edition by id
POST/v1/tools/tech-stack/scansStart an async tech-stack scan
GET/v1/tools/tech-stack/scans/{scanId}Get an async tech-stack scan by ID
POST/v1/tools/trust-signals/scansStart an async trust-signals scan
GET/v1/tools/trust-signals/scans/{scanId}Get an async trust-signals scan by ID
POST/v1/tools/ai-crawler-checkerCheck AI crawler accessibility for a domain
POST/v1/tools/sitemap-visualizerAnalyze sitemap structure of a domain
POST/v1/tools/agent-adoption/scansStart an async agent-adoption scan
GET/v1/tools/agent-adoption/scans/{scanId}Get an async agent-adoption scan by ID
POST/v1/tools/fetch-urlFetch URL body and headers with JS-rendering + bot-protection handling

Errors

Errors return a JSON body describing the failure (an error object with a message and HTTP status). Standard HTTP status codes apply: 400 (invalid parameters), 401 (missing/invalid API key), 404 (not found), 429 (rate limited).