Indie Hackers posts search
curl --request POST \
--url https://api.neuralverge.ai/functions/v1/run-indiehackers-posts-search \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"max_items": 2
}'import requests
url = "https://api.neuralverge.ai/functions/v1/run-indiehackers-posts-search"
payload = { "max_items": 2 }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({max_items: 2})
};
fetch('https://api.neuralverge.ai/functions/v1/run-indiehackers-posts-search', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.neuralverge.ai/functions/v1/run-indiehackers-posts-search",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'max_items' => 2
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.neuralverge.ai/functions/v1/run-indiehackers-posts-search"
payload := strings.NewReader("{\n \"max_items\": 2\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.neuralverge.ai/functions/v1/run-indiehackers-posts-search")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"max_items\": 2\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.neuralverge.ai/functions/v1/run-indiehackers-posts-search")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"max_items\": 2\n}"
response = http.request(request)
puts response.read_body{
"session_id": "11111111-1111-1111-1111-111111111111",
"kind": "indiehackers_posts_search",
"max_items": 2,
"start_page": 1,
"partial": false,
"human": "# Indie Hackers — posts search\n\n- **Query:** all\n- **Results:** 2\n- **Proxy traffic:** 68.9 KB",
"machine": {
"total_items": 2,
"first_item": {
"id": "6509e1a76a",
"name": "3 products. $0 revenue. I think I finally understand the problem.",
"url": "https://www.indiehackers.com/post/3-products-0-revenue-i-think-i-finally-understand-the-problem-6509e1a76a",
"alias": "3-products-0-revenue-i-think-i-finally-understand-the-problem-6509e1a76a",
"title": "3 products. $0 revenue. I think I finally understand the problem.",
"summary": null,
"author": {
"username": "bhavyshekhaliya",
"name": "bhavyshekhaliya",
"url": "https://www.indiehackers.com/bhavyshekhaliya"
},
"upvotes": 49,
"comment_count": 149,
"rank": 1,
"product_slug": null,
"image": null
},
"items": [
{
"id": "6509e1a76a",
"name": "3 products. $0 revenue. I think I finally understand the problem.",
"url": "https://www.indiehackers.com/post/3-products-0-revenue-i-think-i-finally-understand-the-problem-6509e1a76a",
"alias": "3-products-0-revenue-i-think-i-finally-understand-the-problem-6509e1a76a",
"title": "3 products. $0 revenue. I think I finally understand the problem.",
"summary": null,
"author": {
"username": "bhavyshekhaliya",
"name": "bhavyshekhaliya",
"url": "https://www.indiehackers.com/bhavyshekhaliya"
},
"upvotes": 49,
"comment_count": 149,
"rank": 1,
"product_slug": null,
"image": null
},
{
"id": "7cc69370fe",
"name": "I moved my SaaS \"upstream\" because agency margin is lost before the project even starts",
"url": "https://www.indiehackers.com/post/i-moved-my-saas-upstream-because-agency-margin-is-lost-before-the-project-even-starts-7cc69370fe",
"alias": "i-moved-my-saas-upstream-because-agency-margin-is-lost-before-the-project-even-starts-7cc69370fe",
"title": "I moved my SaaS \"upstream\" because agency margin is lost before the project even starts",
"summary": null,
"author": {
"username": "alokbhalke",
"name": "alokbhalke",
"url": "https://www.indiehackers.com/alokbhalke"
},
"upvotes": 37,
"comment_count": 122,
"rank": 2,
"product_slug": null,
"image": null
}
],
"total_found": null,
"page_count": 1,
"blocked": false,
"proxy_traffic_bytes": 70522
},
"total_points": 2
}Startup & Funding Data
Indie Hackers posts search
Indie Hackers post feeds: the top posts of a week, month or all time, or the newest posts, with author, upvotes and comment counts. 1 point per returned record.
POST
/
functions
/
v1
/
run-indiehackers-posts-search
Indie Hackers posts search
curl --request POST \
--url https://api.neuralverge.ai/functions/v1/run-indiehackers-posts-search \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"max_items": 2
}'import requests
url = "https://api.neuralverge.ai/functions/v1/run-indiehackers-posts-search"
payload = { "max_items": 2 }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({max_items: 2})
};
fetch('https://api.neuralverge.ai/functions/v1/run-indiehackers-posts-search', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.neuralverge.ai/functions/v1/run-indiehackers-posts-search",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'max_items' => 2
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.neuralverge.ai/functions/v1/run-indiehackers-posts-search"
payload := strings.NewReader("{\n \"max_items\": 2\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.neuralverge.ai/functions/v1/run-indiehackers-posts-search")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"max_items\": 2\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.neuralverge.ai/functions/v1/run-indiehackers-posts-search")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"max_items\": 2\n}"
response = http.request(request)
puts response.read_body{
"session_id": "11111111-1111-1111-1111-111111111111",
"kind": "indiehackers_posts_search",
"max_items": 2,
"start_page": 1,
"partial": false,
"human": "# Indie Hackers — posts search\n\n- **Query:** all\n- **Results:** 2\n- **Proxy traffic:** 68.9 KB",
"machine": {
"total_items": 2,
"first_item": {
"id": "6509e1a76a",
"name": "3 products. $0 revenue. I think I finally understand the problem.",
"url": "https://www.indiehackers.com/post/3-products-0-revenue-i-think-i-finally-understand-the-problem-6509e1a76a",
"alias": "3-products-0-revenue-i-think-i-finally-understand-the-problem-6509e1a76a",
"title": "3 products. $0 revenue. I think I finally understand the problem.",
"summary": null,
"author": {
"username": "bhavyshekhaliya",
"name": "bhavyshekhaliya",
"url": "https://www.indiehackers.com/bhavyshekhaliya"
},
"upvotes": 49,
"comment_count": 149,
"rank": 1,
"product_slug": null,
"image": null
},
"items": [
{
"id": "6509e1a76a",
"name": "3 products. $0 revenue. I think I finally understand the problem.",
"url": "https://www.indiehackers.com/post/3-products-0-revenue-i-think-i-finally-understand-the-problem-6509e1a76a",
"alias": "3-products-0-revenue-i-think-i-finally-understand-the-problem-6509e1a76a",
"title": "3 products. $0 revenue. I think I finally understand the problem.",
"summary": null,
"author": {
"username": "bhavyshekhaliya",
"name": "bhavyshekhaliya",
"url": "https://www.indiehackers.com/bhavyshekhaliya"
},
"upvotes": 49,
"comment_count": 149,
"rank": 1,
"product_slug": null,
"image": null
},
{
"id": "7cc69370fe",
"name": "I moved my SaaS \"upstream\" because agency margin is lost before the project even starts",
"url": "https://www.indiehackers.com/post/i-moved-my-saas-upstream-because-agency-margin-is-lost-before-the-project-even-starts-7cc69370fe",
"alias": "i-moved-my-saas-upstream-because-agency-margin-is-lost-before-the-project-even-starts-7cc69370fe",
"title": "I moved my SaaS \"upstream\" because agency margin is lost before the project even starts",
"summary": null,
"author": {
"username": "alokbhalke",
"name": "alokbhalke",
"url": "https://www.indiehackers.com/alokbhalke"
},
"upvotes": 37,
"comment_count": 122,
"rank": 2,
"product_slug": null,
"image": null
}
],
"total_found": null,
"page_count": 1,
"blocked": false,
"proxy_traffic_bytes": 70522
},
"total_points": 2
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
application/json
Sort. Options: top = Top (most upvoted), newest = Newest
Available options:
top, newest Period (for Top). Options: week = Week, month = Month, all-time = All time
Available options:
week, month, all-time A date inside the week or month (YYYY-MM-DD). e.g. 2026-09-02
Max items (up to 20)
Required range:
1 <= x <= 20Response
Run completed.
Session identifier for this run.
Data source identifier for this endpoint.
True when the scrape stopped early and returned the records collected so far.
Markdown summary of the result, for display.
Structured result payload.
Show child attributes
Show child attributes
Points charged for this run.