---
title: "Get survey responses"
method: GET
path: "/surveys/{id}/responses"
tags: ["Responses"]
---

# Get survey responses

`GET /surveys/{id}/responses`

## Request

- Base URL: `https://api.pickfu.com/v1`
- URL: `https://api.pickfu.com/v1/surveys/{id}/responses`
- Auth: HTTP bearer

Returns paginated individual responses for a survey. Each response includes the respondent's answer, written explanation, demographic traits, and media (if applicable). Use `question_id` to filter responses to a specific question, `text` to search response explanations, and `traits` to filter by respondent demographics.

## Path parameters

- `id` string, required

## Query parameters

- `page` integer
- `limit` integer
- `question_id` string
- `language` string
- `text` string
- `traits` string

## Response `200`

Default Response

- object
  - `currency` string: ISO 4217 currency derived from the survey target country
  - `data` object[]: List of individual responses
    - `id` string: Response ID
    - `pinned` boolean: Whether the response is pinned
    - `explanation` string, nullable: Written explanation from the respondent
    - `translation` string, nullable: Translated explanation text
    - `chosenOption` string, nullable: Label of the option chosen by the respondent
    - `selectedOptions` string[], nullable: Labels of options selected by the respondent for multi-select questions
    - `score` number, nullable: Rating score (for emoji_rating, star_rating question types)
    - `clicks` object[], nullable: Click coordinates for click_test questions
      - `number` number: Click sequence number
      - `xCoord` number: X coordinate of the click
      - `yCoord` number: Y coordinate of the click
    - `ranking` object[], nullable: Respondent's ranking of options for ranked question types. Each entry pairs a rank (1 = top pick) with the option label.
      - `rank` number: Rank position (1 = respondent's top pick)
      - `option` string, nullable: Option label at this rank
    - `media` string, nullable: Media URL (for screen_recording question types)
    - `mediaTranscription` string, nullable: Transcription of the recorded media
    - `matchup` object, nullable: Head-to-head matchup pairing shown to the respondent
      - `option1` string: First option in the matchup
      - `option2` string: Second option in the matchup
    - `statements` object[], nullable: Per-statement responses for likert question types. Each entry pairs a statement with the numeric value the respondent picked on the configured scale. DEV-3149.
      - `id` string: GUID of the statement (the question option)
      - `statement` string, nullable: Statement text
      - `value` number: Numeric value the respondent picked on the Likert scale (1..N for the configured scale)
    - `prices` object, nullable: Van Westendorp price-sensitivity responses. Four numeric prices the respondent provided for the four standardized PSM questions.
      - `tooCheap` number: Price at which the product would be so cheap that quality is questionable
      - `bargain` number: Price at which the product would be a bargain
      - `expensive` number: Price at which the product starts to feel expensive but is still worth considering
      - `tooExpensive` number: Price at which the product would be too expensive to consider
    - `respondent` object[]: Demographic traits of the respondent
      - `trait` string: Trait category name
      - `value` string: Trait value
    - `question_id` string, nullable: GUID of the question this response belongs to (for multi-question surveys)
  - `pagination` object: Pagination metadata
    - `page` number: Current page number
    - `limit` number: Results per page
    - `total` number: Total number of results
    - `totalPages` number: Total number of pages

## Other responses

- `400`: 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)
