Get pricing run history
Changed onGet 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.
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
Project ID
Query parameters
Page number (1-indexed)
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 fromobjecttostringfor status - breaking
the
////////////response's property type changed fromobjecttostringfor status - breaking
the
////////////response's property type changed fromobjecttostringfor status - breaking
the
////////////response's property type changed fromobjecttonumberfor status - breaking
the
////////////response's property type changed fromobjecttostringfor status - breaking
the
///////response's property type changed fromobjecttonumberfor status - breaking
the
///////response's property type changed fromobjecttostringfor status - breaking
the
///////response's property type changed fromobjecttonumberfor status - info
for the
pathrequest parameterprojectId, the type was generalized from no type tostring - info
added the optional property
////////////to the response with the status - info
added the optional property
///////to the response with the status
- breaking
- 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