Pricing Intelligence

Get pricing data for a specific run

Get full pricing intelligence data for a specific historical monitoring run, including per-competitor pricing plans, billing options, free tiers, and enterprise pricing. Competitors the run could not measure appear with a pricingDataAvailable reason instead of being omitted. Fields we could not measure are null; never read a null as zero, false or absent, and note that a measured 0 / false is reported as itself and is a real finding. A run that finished but produced no summary answers 404 run_not_summarized, which is a different fact from run_not_found: the run exists, it just has nothing to report. It used to answer 200 with an all-zero summary invented from the missing one.

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

Request

  • Base URL: https://api.competlab.com
  • URL: https://api.competlab.com/v1/projects/{projectId}/pricing/history/{runId}
  • Auth: API key in header CL-API-Key

Path parameters

runIdstring required
Example:507f1f77bcf86cd799439012

Run ID

projectIdstring required
Example:507f1f77bcf86cd799439011

Project ID

Response

Example response

{
  "item": {
    "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
    },
    "competitors": [
      {
        "domain": "competitor.com",
        "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"
        },
        "pricingDataAvailable": {
          "reason": "no_page_found"
        }
      }
    ]
  }
}

Changes

No recorded changes to this operation across all 1 revision of this API.