Indie Hackers Post Comments API and MCP — threaded comments with upvotes
Send a post slug or its Indie Hackers link and a max_items limit. You get the comments on that post as a list, each with its text, author, upvotes, date and its place in the thread: depth and the id of the parent comment.
- You send
- a post slug or URL, and max_items
- You get back
- The comments on one Indie Hackers post, threaded: text, author, upvotes, date, depth and parent id.
- Coverage
- Indie Hackers records with a public page.
- Price
- 1 point per returned record — $1 per 1,000
- Billed per record actually returned, capped by max_items. A request that returns nothing costs nothing.
Ways to get this data
Three approaches teams use today, and where each one runs into trouble.
| Approach | What it takes | Cost | Trade-off |
|---|---|---|---|
| Indie Hackers directly | Open the page on Indie Hackers and scroll through the list | Free, and slow | Fine for one record, useless across a list, and the layout differs on every platform |
| Building a scraper | Write it, host it, and repair it when Indie Hackers changes its pages | Engineering time | A maintenance commitment for something that isn't your product |
| NeuralVerge | One request, the same shape as every other source in the catalog | $1 per 1,000, misses not billed | Returns what Indie Hackers publishes at request time. Other platforms are separate sources with the same request format |
What you get back
Every field in the example response below.
| Field | Type | Description |
|---|---|---|
total_items | number | How many records are in this response. |
first_item.id | string | Comment id. |
first_item.name | string | Display name of the commenter. |
first_item.url | string | Link to the comment on the post. |
first_item.post | string | Slug of the post the comment belongs to. |
first_item.text | string | Comment text. |
first_item.author_name | string | Commenter display name. |
first_item.author_username | string | Commenter username. |
first_item.author_url | string | Link to the commenter's Indie Hackers profile. |
first_item.upvotes | number | Upvotes on the comment. |
first_item.created_at | string | Comment date, YYYY-MM-DD. |
first_item.created_at_text | string | Relative time as shown on the page, such as "28 minutes ago". |
first_item.depth | number | Nesting level in the thread. 1 is a top-level comment. |
first_item.parent_id | string or null | Id of the comment being replied to. Null for top-level comments. |
items | array | Every returned record, in the same shape as first_item. |
total_found | number or null | Total matches the platform reports. Null when it does not report one. |
page_count | number | How many result pages were read to build the response. |
blocked | boolean | True if the platform refused the request; false when data came back. |
proxy_traffic_bytes | number | Data transferred for the request, in bytes. Informational. |
Example response
A real response, as returned.
{
"session_id": "11111111-1111-1111-1111-111111111111",
"kind": "indiehackers_posts_comments",
"post": "3-products-0-revenue-i-think-i-finally-understand-the-problem-6509e1a76a",
"max_items": 2,
"start_page": 1,
"partial": false,
"human": "# Indie Hackers — post comments\n\n- **Post:** 3-products-0-revenue-i-think-i-finally-understand-the-problem-6509e1a76a\n- **Results:** 2 of 143 found\n- **Proxy traffic:** 255.4 KB",
"machine": {
"total_items": 2,
"first_item": {
"id": "-P3VlwdnpNoCEy-Ntvpf",
"name": "GregoryScottHenson",
"url": "https://www.indiehackers.com/post/3-products-0-revenue-i-think-i-finally-understand-the-problem-6509e1a76a?commentId=-P3VlwdnpNoCEy-Ntvpf",
"post": "3-products-0-revenue-i-think-i-finally-understand-the-problem-6509e1a76a",
"text": "Three products at $0 usually means the buyer was picked after the build. Narrowing SocialPost.ai to founders who sell on LinkedIn with no marketing hire is what made distribution tractable for us, bec",
"author_name": "GregoryScottHenson",
"author_username": "GregoryScottHenson",
"author_url": "https://www.indiehackers.com/GregoryScottHenson",
"upvotes": 1,
"created_at": "2026-10-09",
"created_at_text": "28 minutes ago",
"depth": 1,
"parent_id": null
},
"items": [
{
"id": "-P3VlwdnpNoCEy-Ntvpf",
"name": "GregoryScottHenson",
"url": "https://www.indiehackers.com/post/3-products-0-revenue-i-think-i-finally-understand-the-problem-6509e1a76a?commentId=-P3VlwdnpNoCEy-Ntvpf",
"post": "3-products-0-revenue-i-think-i-finally-understand-the-problem-6509e1a76a",
"text": "Three products at $0 usually means the buyer was picked after the build. Narrowing SocialPost.ai to founders who sell on LinkedIn with no marketing hire is what made distribution tractable for us, bec",
"author_name": "GregoryScottHenson",
"author_username": "GregoryScottHenson",
"author_url": "https://www.indiehackers.com/GregoryScottHenson",
"upvotes": 1,
"created_at": "2026-10-09",
"created_at_text": "28 minutes ago",
"depth": 1,
"parent_id": null
},
{
"id": "-P3VeS9zPPhBlod_6zev",
"name": "ebs24",
"url": "https://www.indiehackers.com/post/3-products-0-revenue-i-think-i-finally-understand-the-problem-6509e1a76a?commentId=-P3VeS9zPPhBlod_6zev",
"post": "3-products-0-revenue-i-think-i-finally-understand-the-problem-6509e1a76a",
"text": "Had the same realization this week. Two months of building, and today I noticed I'd never checked whether anyone would actually pay. What I'm trying now: before any new code, I do my user's job by han",
"author_name": "ebs24",
"author_username": "ebs24",
"author_url": "https://www.indiehackers.com/ebs24",
"upvotes": 1,
"created_at": "2026-10-09",
"created_at_text": "an hour ago",
"depth": 1,
"parent_id": null
}
],
"total_found": 143,
"page_count": 1,
"blocked": false,
"proxy_traffic_bytes": 261501
},
"total_points": 2
}How to run it
The same lookup works from the app, the API, or as a tool an agent can call mid-task.
Results come back in the same envelope as every other source: a session id, a readable summary, the structured result and the points charged. max_items caps how many records are returned and billed.
curl -X POST https://api.neuralverge.ai/functions/v1/run-indiehackers-posts-comments \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"post":"3-products-0-revenue-i-think-i-finally-understand-the-problem-6509e1a76a","max_items":2}'What teams use it for
Where this field shows up in an actual workflow.
Pull the comments on a product or milestone post and see what other founders said.
Collect comment text across posts about a topic to see which questions and objections come up.
Use depth and parent_id to rebuild who replied to whom.
Save the comments of a post next to its text before it is edited or buried.
Coverage, freshness and limits
What this source covers, how fresh it is, and where it stops.
Indie Hackers records with a public page.
Read at request time, so the answer reflects the platform as it stands when you ask.
This source returns information Indie Hackers shows publicly. Every response carries the session id you can trace.
- —Comments carry author names, usernames and profile links of individual members. Use them for the discussion, not to profile people.
- —created_at is a date only; created_at_text is the relative time shown at request time, so it changes between runs.
- —Comments are returned 50 per page. Use start_page and max_items (up to 250) to read a long thread.
Questions, answered
The slug from the post address, such as 3-products-0-revenue-i-think-i-finally-understand-the-problem-6509e1a76a, or the full Indie Hackers link.
Related sources
Try indie hackers post comments on your own data
One request format across every source in the catalog.