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.