# Comment search



<MethodPage method="GET" path="/v1/reddit/search/comments" credits={1}>
  <MethodSignature name="searchComments" args={[{ name: "q" }, { name: "options", optional: true }]} returns="Listing<Comment>" />

  Finds comments matching a query. Comments come back as in [Subreddit comments](/reddit/subreddit-comments), each naming its post. 1 credit per page.

  A page holds what Reddit's own comment search page shows, about a dozen comments, so there is no `limit`. Pass `after` for the next page; here it is an opaque string, not a fullname.

  <Security permission="reddit:read" />

  <SchemaGroup title="Query parameters">
    <SchemaField name="q" type="string" location="query" required>
      The search query, 1 to 500 characters.
    </SchemaField>

    <SchemaField name="sub" type="string" optional location="query">
      Only search this subreddit.
    </SchemaField>

    <SchemaField name="sort" type="string" optional location="query">
      `relevance` (default), `new` or `top`.
    </SchemaField>

    <SchemaField name="t" type="string" optional location="query">
      Time window: `hour`, `day`, `week`, `month`, `year` or `all`.
    </SchemaField>

    <SchemaField name="after" type="string" optional location="query">
      The previous page's `after`, for the next page.
    </SchemaField>

    <SchemaField name="nsfw" type="boolean" optional location="query">
      Include NSFW comments. Default `false`.
    </SchemaField>
  </SchemaGroup>

  <div id="returns" className="mt-8">
    Response [#response]

    ```jsonc
    {
      "subreddit": null,
      "query": "golang generics",
      "sort": "relevance",
      "count": 9,
      "items": [
        {
          "id": "p970s4x",
          "name": "t1_p970s4x",
          "post_id": "1wdjvd3",
          "post_title": "Rune is now open source",
          "subreddit": "programming",
          "author": "jesseschalken",
          "score": 17,
          "body": "No null safety, implicit zero values you have to be careful to ignore, no sum types…",
          "created_at": "2026-09-11T17:26:53Z",
          "permalink": "/r/programming/comments/1wdjvd3/rune_is_now_open_source/p970s4x/",
          "parent_id": "t1_p96roh6",
          "is_submitter": false,
          "controversiality": 1
        }
      ],
      "after": "eyJjYW5kaWRhdGVzX3JldHVybmVk…",
      "filtered_nsfw": 0
    }
    ```

    If Reddit changes its comment search page in a way threadapi can't read, this endpoint returns 503 `upstream_changed` until we update it. Other endpoints are unaffected.
  </div>

  <MethodSamples>
    <LanguageSample language="cURL">
      ```bash
      curl -G "https://api.threadapi.dev/v1/reddit/search/comments" \
        --data-urlencode "q=golang generics" -d sort=new \
        -H "Authorization: Bearer $THREADAPI_API_KEY"
      ```
    </LanguageSample>

    <LanguageSample language="Python">
      ```python
      import os, requests

      r = requests.get(
          "https://api.threadapi.dev/v1/reddit/search/comments",
          params={"q": "golang generics", "sort": "new"},
          headers={"Authorization": f"Bearer {os.environ['THREADAPI_API_KEY']}"},
      )
      for c in r.json()["items"]:
          print(c["score"], c["body"][:80])
      ```
    </LanguageSample>
  </MethodSamples>
</MethodPage>
