---
title: "Get Van Westendorp aggregate results"
method: GET
path: "/surveys/{id}/questions/{questionId}/van-westendorp"
tags: ["Surveys"]
---

# Get Van Westendorp aggregate results

`GET /surveys/{id}/questions/{questionId}/van-westendorp`

## Request

- Base URL: `https://api.pickfu.com/v1`
- URL: `https://api.pickfu.com/v1/surveys/{id}/questions/{questionId}/van-westendorp`
- Auth: HTTP bearer

Returns the aggregated Van Westendorp Price Sensitivity Meter analysis for a van_westendorp question: the four cumulative respondent-price curves (Too cheap / Bargain / Expensive / Too expensive), the four named price intersections (PMC, OPP, IPP, PME), per-bucket histograms, and a confidence signal. Useful when the caller wants the analyzed price points without parsing every respondent's raw quartet themselves.

### Prerequisites
- Question must be a `van_westendorp` type
- Question must have at least one approved response
- Returns 422 for non-VW questions or questions with no approved responses yet

## Path parameters

- `id` string, required
- `questionId` string, required

## Response `200`

Default Response

- object
  - `currency` string: ISO 4217 currency derived from the survey target country
  - `priceRange` object: Price-axis bounds derived from respondent answers (used by curves + histograms).
    - `min` number
    - `max` number
    - `step` number
  - `curves` object: Cumulative respondent percentages at each price step, one entry per axis price (indices align across all four curves and with priceRange.min..max stepped by priceRange.step).
    - `tooCheap` number[]
    - `bargain` number[]
    - `expensive` number[]
    - `tooExpensive` number[]
  - `intersections` object: Named Van Westendorp price points. Ordering invariant: PMC ≤ OPP ≤ IPP ≤ PME.
    - `PMC` object: Point of Marginal Cheapness — tooCheap × expensive intersection (lower bound of acceptable range)
      - `price` number
      - `pct` number
    - `OPP` object: Optimal Price Point — tooCheap × tooExpensive intersection
      - `price` number
      - `pct` number
    - `IPP` object: Indifference Price Point — bargain × expensive intersection (typical market price)
      - `price` number
      - `pct` number
    - `PME` object: Point of Marginal Expensiveness — bargain × tooExpensive intersection (upper bound of acceptable range)
      - `price` number
      - `pct` number
  - `nms` number[]: Percentage of respondents for whom each price is within their acceptable range — neither too cheap nor too expensive — computed as max(0, 100 − tooCheap − tooExpensive) at each price step (indices align with the curves). Not the full Newton-Miller-Smith purchase-probability model, which requires extra trial questions this question type does not collect.
  - `histograms` object: Per-bucket distributions of respondent prices for each of the four PSM questions.
    - `tooCheap` object[]
      - `price` number
      - `count` number
    - `bargain` object[]
      - `price` number
      - `count` number
    - `expensive` object[]
      - `price` number
      - `count` number
    - `tooExpensive` object[]
      - `price` number
      - `count` number
  - `confidence` 'high' | 'medium' | 'low': Quality signal based on respondent count and data spread

## Other responses

- `401`: Default Response
- `403`: Default Response
- `404`: Default Response
- `422`: Default Response

---

[API](https://skmtc.dev/pickfu/apis/pickfu-api.md) · [All operations](https://skmtc.dev/pickfu/apis/pickfu-api/llms.txt) · [OpenAPI document](https://skmtc.dev/pickfu/apis/pickfu-api/revisions/919fc58413ea?raw)
