Skip to Content

Pricing

REST endpoints for Pricing. 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 pricing intelligence data

GET/v1/projects/{projectId}/pricing

Get the latest pricing intelligence data for all competitors in a project. Returns structured pricing plans, free tier availability, billing options, enterprise pricing, promotions, and competitive gap analysis.

Returns · { item }

Path parameters

NameTypeDescription
projectIdstringProject ID

Request

curl "https://api.competlab.com/v1/projects/507f1f77bcf86cd799439011/pricing" \ -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", "popularPlanPrice": 49, "popularPlanName": "Professional", "pricingModel": "per-seat", "hasFreePlan": false, "hasFreeTrial": true, "freeTrialDuration": "14 days", "hasEnterprisePricing": true, "tierCount": 3 }, "marketAvgPrice": 59, "pricePositionPercent": 45, "topPriceCompetitor": { "domain": "rival.com", "price": 99, "planName": "Enterprise" }, "lowestPriceCompetitor": { "domain": "rival.com", "price": 99, "planName": "Enterprise" }, "pricingSampleSize": 4, "pricingIsReliable": true, "competitorsWithFreePlan": 2, "competitorsWithFreeTrial": 4, "competitorsWithEnterprise": 3, "activePromotionCount": 1, "hasPriceGap": true, "hasFreeTierGap": false, "hasEnterpriseGap": false, "hasPromotionAlert": true }, "competitors": [ { "domain": "competitor.com", "isOwn": false, "pricingUrl": "https://competitor.com/pricing", "pricingLocationType": "crawled", "content": { "pageTitle": "Acme Pricing - Plans for Every Team", "pageDescription": "Choose from flexible pricing plans starting at $9/month.", "mainHeadline": "Simple, Transparent Pricing", "pricingModel": "per-seat", "plans": [ { "name": "Professional", "price": "$49/month", "summary": "Best for growing teams with advanced features" } ], "popularPlanName": "Professional", "hasFreePlan": true, "freePlanName": "Starter", "hasFreeTrial": true, "freeTrialDuration": "14 days", "billingCycleOffered": "monthly, annual", "annualDiscountAmount": "20%", "moneyBackGuarantee": "30-day money-back guarantee", "hasEnterpriseCustomPricing": true, "enterprisePlanCTA": "Contact Sales", "pricingPageFeatures": "Unlimited projects, Priority support, SSO", "hasActivePromotion": false, "promotionDetails": "" } } ] } }

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 pricing run history

GET/v1/projects/{projectId}/pricing/history

Get paginated history of pricing intelligence monitoring runs for a project. Each entry includes run timing and summary statistics with pricing gap analysis.

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/pricing/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", "popularPlanPrice": 49, "popularPlanName": "Professional", "pricingModel": "per-seat", "hasFreePlan": false, "hasFreeTrial": true, "freeTrialDuration": "14 days", "hasEnterprisePricing": true, "tierCount": 3 }, "marketAvgPrice": 59, "pricePositionPercent": 45, "topPriceCompetitor": { "domain": "rival.com", "price": 99, "planName": "Enterprise" }, "lowestPriceCompetitor": { "domain": "rival.com", "price": 99, "planName": "Enterprise" }, "pricingSampleSize": 4, "pricingIsReliable": true, "competitorsWithFreePlan": 2, "competitorsWithFreeTrial": 4, "competitorsWithEnterprise": 3, "activePromotionCount": 1, "hasPriceGap": true, "hasFreeTierGap": false, "hasEnterpriseGap": false, "hasPromotionAlert": true } } ], "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 pricing data for a specific run

GET/v1/projects/{projectId}/pricing/history/{runId}

Get full pricing intelligence data for a specific historical monitoring run, including per-competitor pricing plans, billing options, free tiers, and enterprise pricing.

Returns · { item }

Path parameters

NameTypeDescription
runIdstringRun ID
projectIdstringProject ID

Request

curl "https://api.competlab.com/v1/projects/507f1f77bcf86cd799439011/pricing/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", "popularPlanPrice": 49, "popularPlanName": "Professional", "pricingModel": "per-seat", "hasFreePlan": false, "hasFreeTrial": true, "freeTrialDuration": "14 days", "hasEnterprisePricing": true, "tierCount": 3 }, "marketAvgPrice": 59, "pricePositionPercent": 45, "topPriceCompetitor": { "domain": "rival.com", "price": 99, "planName": "Enterprise" }, "lowestPriceCompetitor": { "domain": "rival.com", "price": 99, "planName": "Enterprise" }, "pricingSampleSize": 4, "pricingIsReliable": true, "competitorsWithFreePlan": 2, "competitorsWithFreeTrial": 4, "competitorsWithEnterprise": 3, "activePromotionCount": 1, "hasPriceGap": true, "hasFreeTierGap": false, "hasEnterpriseGap": false, "hasPromotionAlert": true }, "competitors": [ { "domain": "competitor.com", "isOwn": false, "pricingUrl": "https://competitor.com/pricing", "pricingLocationType": "crawled", "content": { "pageTitle": "Acme Pricing - Plans for Every Team", "pageDescription": "Choose from flexible pricing plans starting at $9/month.", "mainHeadline": "Simple, Transparent Pricing", "pricingModel": "per-seat", "plans": [ { "name": "Professional", "price": "$49/month", "summary": "Best for growing teams with advanced features" } ], "popularPlanName": "Professional", "hasFreePlan": true, "freePlanName": "Starter", "hasFreeTrial": true, "freeTrialDuration": "14 days", "billingCycleOffered": "monthly, annual", "annualDiscountAmount": "20%", "moneyBackGuarantee": "30-day money-back guarantee", "hasEnterpriseCustomPricing": true, "enterprisePlanCTA": "Contact Sales", "pricingPageFeatures": "Unlimited projects, Priority support, SSO", "hasActivePromotion": false, "promotionDetails": "" } } ] } }

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