Positioning
Get positioning run history
Get paginated history of positioning monitoring runs for a project. Each entry includes run timing and summary statistics with messaging gap analysis. Fields we could not measure are null, with a sibling availability object giving the reason; never read a null as zero, false or absent, and note that a measured 0 / false / empty list is reported as itself and is a real finding.
get/v1/projects/{projectId}/positioning/history
Request
- Base URL: https://api.competlab.com
- URL: https://api.competlab.com/v1/projects/{projectId}/positioning/history
- Auth: API key in header CL-API-Key
Path parameters
projectIdstring required
Example:507f1f77bcf86cd799439011
Project ID
Query parameters
pagenumber
Example:1
Page number (1-indexed)
limitnumber
Example:20
Number of items per page
Response
Example response
{
"items": [
{
"runId": "507f1f77bcf86cd799439011",
"completedAt": "2026-03-15T10:00:00.000Z",
"summary": {
"competitorsChecked": 6,
"competitorsSuccessful": 5,
"customer": {
"domain": "yoursite.com",
"messagingStrengthScore": 72,
"hasSpecificHeadline": true,
"hasStrongCta": true,
"hasFreeTrial": true,
"primaryCta": "Start Free Trial",
"mainHeadline": "Ship Projects 10x Faster",
"messagingAnalysisAvailable": {
"reason": "homepage_fetch_failed"
}
},
"topMessagingCompetitor": {
"domain": "rival.com",
"messagingStrengthScore": 88,
"primaryCta": "Try It Free",
"mainHeadline": "The Future of Work"
},
"ctaComparison": {
"yourCta": "Start Free Trial",
"strongestCompetitorCta": "Get Started — It's Free",
"strongestCompetitorDomain": "rival.com"
},
"pricingComparison": {
"competitorsShowingPrice": 3,
"competitorsWithFreeTrial": 4,
"youHaveFreeTrial": true
},
"messagingScoreGap": -16
}
}
],
"pagination": {
"page": 1,
"limit": 20,
"total": 47,
"totalPages": 3,
"hasMore": true
}
}Changes
No recorded changes to this operation across all 1 revision of this API.