# POST /v1/keywords/questions

People-Also-Ask questions observed for a topic, deduplicated.

**Credits:** 20 credits per call.

**Timeout:** 60s

## Parameters

| Name | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `keyword` | string | yes | — | Topic keyword to fetch People-Also-Ask questions for. Required, max 700 chars. |
| `location` | any | no | 2840 | Google Ads geotarget ID. Optional, default 2840 (United States). Look one up with /v1/locations. |
| `language` | string | no | "en" | ISO language code. Optional, default "en". |
| `limit` | integer | no | 50 | Optional, default 50. 1-200. |

## Request

```http
POST /v1/keywords/questions HTTP/1.1
Authorization: Bearer sof_live_your_key_here
Content-Type: application/json

{
  "keyword": "running shoes",
  "location": 2840,
  "language": "en",
  "limit": 50
}
```

## Response

Wrapped in the standard envelope (id, object, created_at, elapsed_ms, cache, credits) -- documented once on The Contract. The body below is a real envelope with this endpoint's `data` shape; values vary per request, and a `…` marks an array cut short for display.

```json
{
  "id": "keyw_4theihmmbfsnxc2yg4y5ga34",
  "request_id": "req_lrqtowl4qjfihegm44oz2ulubu",
  "object": "keyword_questions",
  "created_at": "2026-08-09T08:29:23Z",
  "elapsed_ms": 180,
  "cache": "miss",
  "credits": {
    "charged": 20,
    "balance": 9857
  },
  "data": {
    "keyword": "running shoes",
    "items": [
      {
        "question": "How often should you replace running shoes?",
        "first_seen": "2026-06-11",
        "last_seen": "2026-07-25",
        "times_seen": 18
      },
      {
        "question": "Are carbon plate shoes worth it?",
        "first_seen": "2026-07-02",
        "last_seen": "2026-07-27",
        "times_seen": 7
      },
      "…"
    ],
    "count": 42,
    "coverage": {
      "from": "2026-07-01",
      "observations": 130
    }
  }
}
```

## Response fields

What each field in `data` (above) means.

| Field | Description |
| --- | --- |
| `data.keyword` | The keyword you requested. |
| `data.items` | People-Also-Ask questions observed for this keyword, up to limit. |
| `data.items[].question` | The question text. |
| `data.items[].first_seen` | Date this question was first observed. |
| `data.items[].last_seen` | Date this question was last observed. |
| `data.items[].times_seen` | Number of times this question has been observed. |
| `data.count` | Total number of distinct questions found, before limit truncation. |
| `data.coverage` | How much of the archive this response drew from. |
| `data.coverage.from` | Earliest date the archive could have observed, floor-clamped to the archive's retention window. |
| `data.coverage.observations` | Number of times we checked for this keyword in the window -- can be > 0 even when items is empty. |
