nvNeuralVerge
Startup & Funding Data

Indie Hackers Products Search API and MCP — directory with self-reported revenue

Pick how to sort the directory (recently updated, recently added, highest or lowest revenue), and optionally narrow by category slug, business model and a monthly revenue range in USD. You get each matching product's name, link, tagline and self-reported revenue.

You send
optional sort, category, business model and monthly revenue range, and max_items
You get back
Products from the Indie Hackers directory: name, tagline and self-reported monthly revenue.
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.
Comparison

Ways to get this data

Three approaches teams use today, and where each one runs into trouble.

ApproachWhat it takesCostTrade-off
Indie Hackers directlyType the query into Indie Hackers and read the resultsFree, and slowFine for one record, useless across a list, and the layout differs on every platform
Building a scraperWrite it, host it, and repair it when Indie Hackers changes its pagesEngineering timeA maintenance commitment for something that isn't your product
NeuralVergeOne request, the same shape as every other source in the catalog$1 per 1,000, misses not billedReturns what Indie Hackers publishes at request time. Other platforms are separate sources with the same request format
Response

What you get back

Every field in the example response below.

FieldTypeDescription
total_itemsnumberHow many records are in this response.
first_item.idstringProduct id, the same as its slug.
first_item.namestringProduct name.
first_item.urlstringLink to the product page.
first_item.aliasstringProduct slug. Pass it to Indie Hackers product.
first_item.taglinestringOne-line tagline.
first_item.imagenullProduct image. Null in the sample.
first_item.revenuenumberSelf-reported monthly revenue as a number, in dollars.
first_item.revenue_textstringRevenue as displayed, such as "$0/month".
first_item.revenue_notestringLabel saying the figure is self-reported.
itemsarrayEvery returned record, in the same shape as first_item.
total_foundnumber or nullTotal matches the platform reports. Null when it does not report one.
page_countnumberHow many result pages were read to build the response.
blockedbooleanTrue if the platform refused the request; false when data came back.
proxy_traffic_bytesnumberData transferred for the request, in bytes. Informational.
Response

Example response

A real response, as returned.

{
  "session_id": "11111111-1111-1111-1111-111111111111",
  "kind": "indiehackers_products_search",
  "max_items": 2,
  "start_page": 1,
  "partial": false,
  "human": "# Indie Hackers — products search\n\n- **Query:** all\n- **Results:** 2\n- **Proxy traffic:** 81.9 KB",
  "machine": {
    "total_items": 2,
    "first_item": {
      "id": "launchnest-ln-21",
      "name": "LaunchNest LN",
      "url": "https://www.indiehackers.com/product/launchnest-ln-21",
      "alias": "launchnest-ln-21",
      "tagline": "Your Product Is Built. Now Make Sure People Can Find It",
      "image": null,
      "revenue": 0,
      "revenue_text": "$0/month",
      "revenue_note": "self-reported revenue"
    },
    "items": [
      {
        "id": "launchnest-ln-21",
        "name": "LaunchNest LN",
        "url": "https://www.indiehackers.com/product/launchnest-ln-21",
        "alias": "launchnest-ln-21",
        "tagline": "Your Product Is Built. Now Make Sure People Can Find It",
        "image": null,
        "revenue": 0,
        "revenue_text": "$0/month",
        "revenue_note": "self-reported revenue"
      },
      {
        "id": "steer",
        "name": "Steer",
        "url": "https://www.indiehackers.com/product/steer",
        "alias": "steer",
        "tagline": "Web Apps reimagined to be Voice First",
        "image": null,
        "revenue": 10,
        "revenue_text": "$10/month",
        "revenue_note": "self-reported revenue"
      }
    ],
    "total_found": null,
    "page_count": 1,
    "blocked": false,
    "proxy_traffic_bytes": 83900
  },
  "total_points": 2
}
Integration

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-products-search \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"max_items":2}'
Use cases

What teams use it for

Where this field shows up in an actual workflow.

Finding revenue-earning small products

Sort by highest revenue or set a revenue range to list products that report earnings.

Category scans

Filter by category slug, such as ai, to see which products are listed there.

Business-model comparisons

Filter by free, ads, commission, transactions or subscriptions to compare how products charge.

Tracking new listings

Sort by recently added to catch products as they appear.

Coverage & limits

Coverage, freshness and limits

What this source covers, how fresh it is, and where it stops.

Coverage

Indie Hackers records with a public page.

Freshness

Read at request time, so the answer reflects the platform as it stands when you ask.

Handling

This source returns information Indie Hackers shows publicly. Every response carries the session id you can trace.

What it will not do
  • —Revenue is self-reported by the owners and many products show $0 or no figure.
  • —max_items is capped at 18 per request for this directory.
  • —total_found is null in the sample, so the directory does not report how many products match.
FAQ

Questions, answered

Sort, category slug, business model, and a minimum and maximum monthly revenue in USD.

Related

Related sources

Try indie hackers product search on your own data

One request format across every source in the catalog.

Get started