InsightSocial API
How-to

Search Reddit comments by keyword

Search comments across all of Reddit by keyword, author or subreddit, each with its post title, subreddit and score. 10 credits per page.

To search Reddit comments by keyword, call GET /v1/reddit/search/comments with a query. Each match comes back with the comment's text, author, score and time, plus the post it sits under: the post's title, URL, score, comment count and subreddit. It costs 10 credits a page. Reddit's search operators work in the query, so author:username lists one account's comments and subreddit:name terms keeps the search inside one community.

Cost

10 credits per page (24 comments in our test). Reading 10 pages costs 100 credits. Asking for the same page again within 1 hour is answered from the shared cache for 2 credits. Failed calls and empty results are free.

How do I write the query?

The query is the same text you would type in Reddit's search box, with three operators:

QueryFinds
best project management softwareComments that match these words
"project management software"Comments with the exact phrase
subreddit:projectmanagement jiraComments about Jira in r/projectmanagement only
author:example_userComments by one account

Add sort to choose the order: relevance, top or new.

Make the request

cURL
curl -G "https://api.insightsocial.app/v1/reddit/search/comments" \
  --data-urlencode "query=best project management software" \
  -H "x-api-key: $INSIGHTSOCIAL_API_KEY"

What comes back

A real response from 2026-10-14, shortened: one comment instead of 24, the text and post title shortened, long URLs and the cursor cut, and Reddit usernames replaced with placeholders.

Response (shortened)
{
  "success": true,
  "endpoint": "/v1/reddit/search/comments",
  "schema_version": "2",
  "data": {
    "items": [
      {
        "comment": {
          "id": "pfc2aq6",
          "url": "https://www.reddit.com/r/BetterOffline/comments/1x3l1fn/comment/pfc2aq6/",
          "parent_id": null,
          "post_id": "1x3l1fn",
          "text": "I look forward to people rediscovering software engineering methods from 20 years ago…",
          "author": { "id": "t2_…", "username": "example_user", "display_name": null, "avatar_url": "https://styles.redditmedia.com/…" },
          "engagement": { "likes": 174, "replies": null },
          "flags": { "pinned": null, "deleted": false },
          "published_at": "2026-10-11T22:18:34.073Z",
          "language": "en",
          "ext": {
            "post_title": "The people who doubted me now ask me to clean up their LLM mess…",
            "post_url": "https://www.reddit.com/r/BetterOffline/comments/t3_1x3l1fn/",
            "subreddit": "BetterOffline",
            "subreddit_subscribers": 58872,
            "post_score": 523,
            "post_comment_count": 156,
            "post_author": "example_poster",
            "post_published_at": "2026-10-11T22:11:46.852Z"
          }
        }
      }
    ],
    "total": null,
    "truncated": null
  },
  "pagination": { "next_cursor": "v2c.yQV705tt…", "has_more": true, "page_size": 24 },
  "unavailable": ["items[].comment.engagement.replies"],
  "credits_used": 10
}
FieldWhat it holds
data.items[].commentOne matching comment in the shared comment shape: text, author, score, time, link.
comment.engagement.likesThe comment's score as Reddit shows it.
comment.post_idThe ID of the post the comment is under.
comment.ext.post_title, post_url, post_score, post_comment_countThe parent post, inline, so you don't need a second call to see what thread the comment is in.
comment.ext.subreddit, subreddit_subscribersThe community and its size.
comment.languageThe detected language, or und when it could not be determined.

How do I get more than one page?

Send pagination.next_cursor back as cursor, with the same query and sort, and stop when pagination.has_more is false. Each page is 10 credits.

Python: read up to 10 pages
import os
import requests

BASE = "https://api.insightsocial.app/v1"
HEADERS = {"x-api-key": os.environ["INSIGHTSOCIAL_API_KEY"]}

params = {"query": "best project management software", "sort": "new"}
comments = []
for _ in range(10):
    body = requests.get(f"{BASE}/reddit/search/comments", params=params, headers=HEADERS, timeout=120).json()
    comments += [item["comment"] for item in body["data"]["items"]]
    if not body["pagination"]["has_more"]:
        break
    params["cursor"] = body["pagination"]["next_cursor"]

See Pagination for the full rules.

What are the limits?

  • No thread position. parent_id is null on every row: you know which post a comment is under, not which comment it replied to. Use GET /v1/reddit/post/comments with the post's URL to see the whole thread.
  • No reply counts. engagement.replies is null, which means unknown, not zero.
  • Relevance is loose. Without quotes, matches share some of the words rather than the whole phrase: our test for "best project management software" also returned comments about software careers and game sales. Quote the phrase or add subreddit: to tighten it.
  • No total. data.total is null, so you can't know the number of matches up front.

What can I build with it?

  • Brand and competitor mentions. Many product recommendations live in replies, not post titles. Search your brand and competitors' names with sort=new every day to catch new mentions. The brand mention monitoring recipe shows the full loop.
  • Customer research. Search a problem phrase ("switching from Jira", "too expensive for a small team") and read what people say, grouped by ext.subreddit.
  • Account history. author:username lists what one account has said across Reddit, useful for checking a prospect or a reviewer.

On this page