Pricing Intelligence

Get pricing run history

Changed on

Get paginated history of pricing intelligence monitoring runs for a project. Each entry includes run timing and summary statistics with pricing 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}/pricing/history

Request

  • Base URL: https://api.competlab.com
  • URL: https://api.competlab.com/v1/projects/{projectId}/pricing/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",
          "popularPlanPrice": 49,
          "popularPlanCurrency": "USD",
          "popularPlanUnit": "flat",
          "popularPlanName": "Professional",
          "pricingModel": "per-seat",
          "hasFreeTrial": true,
          "freeTrialDuration": "14 days",
          "hasEnterprisePricing": true,
          "tierCount": 3,
          "pricingAnalysisAvailable": {
            "reason": "pricing_fetch_failed"
          }
        },
        "marketAvgPrice": 59,
        "marketCurrency": "USD",
        "marketPricingUnit": "flat",
        "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,
        "hasPromotionAlert": true
      }
    }
  ],
  "pagination": {
    "page": 1,
    "limit": 20,
    "total": 47,
    "totalPages": 3,
    "hasMore": true
  }
}

Changes

    • breaking

      the response property //////////// became nullable for the status

    • breaking

      the response property //////////// became nullable for the status

    • breaking

      the response property //////////// became nullable for the status

    • breaking

      the response property //////////// became nullable for the status

    • breaking

      the response property /////// became nullable for the status

    • breaking

      the response property /////// became nullable for the status

    • breaking

      the response property /////// became nullable for the status

    • breaking

      the //////////// response's property type changed from object to string for status

    • breaking

      the //////////// response's property type changed from object to string for status

    • breaking

      the //////////// response's property type changed from object to string for status

    • breaking

      the //////////// response's property type changed from object to number for status

    • breaking

      the //////////// response's property type changed from object to string for status

    • breaking

      the /////// response's property type changed from object to number for status

    • breaking

      the /////// response's property type changed from object to string for status

    • breaking

      the /////// response's property type changed from object to number for status

    • info

      for the path request parameter projectId, the type was generalized from no type to string

    • info

      added the optional property //////////// to the response with the status

    • info

      added the optional property /////// to the response with the status

    • info

      added the optional property //////////// to the response with the status

    • info

      added the optional property //////////// to the response with the status

    • info

      added the optional property /////// to the response with the status