Indie Hackers Product API and MCP — tagline, revenue, founders and updates
Send a product slug such as mailmeteor, or its Indie Hackers link. You get the product page as one record: name, tagline, description, website, Twitter handle, self-reported monthly revenue, the founders listed and the latest product updates.
- You send
- a product slug or Indie Hackers URL
- You get back
- One Indie Hackers product: name, tagline, description, website, Twitter, self-reported monthly revenue, founders and updates.
- Coverage
- Indie Hackers records with a public page.
- Price
- 5 pts — $5 per 1,000
- Charged only when the record resolves. A request that finds nothing is not billed.
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 read it | 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 | $5 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 |
|---|---|---|
product.id | string | Product id, the same as its slug. |
product.alias | string | Product slug. |
product.name | string | Product name. |
product.url | string | Link to the product page. |
product.tagline | string | One-line tagline. |
product.description | string | Longer product description. |
product.image | string | Product avatar link. |
product.website_url | string | Product website. |
product.twitter_handle | string | Twitter handle. |
product.twitter_url | string | Twitter link. |
product.revenue | null | Self-reported monthly revenue as a number. Null in the sample. |
product.revenue_text | null | Revenue as displayed. Null in the sample. |
product.revenue_updated_at | null | When revenue was last updated. Null in the sample. |
product.post_count | number | Number of posts about the product. |
product.founders[] | array | Listed founders: name, username, url, role and image. |
product.updates[] | array | Product updates: title, date, url and text. |
blocked | boolean | True if the platform refused the request; false when data came back. |
pages_opened | number | How many pages were read for this record. |
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_products",
"product": "mailmeteor",
"product_id": "mailmeteor",
"human": "# Indie Hackers — product\n\n- **Id:** mailmeteor\n- **Pages opened:** 1\n- **Proxy traffic:** 62.5 KB\n- **Tagline:** Send hundreds of personalized emails with Gmail.\n- **Website:** https://mailmeteor.com\n- **Posts:** 17",
"machine": {
"product": {
"id": "mailmeteor",
"alias": "mailmeteor",
"name": "Mailmeteor",
"url": "https://www.indiehackers.com/product/mailmeteor",
"tagline": "Send hundreds of personalized emails with Gmail.",
"description": "Everyone likes to feel special. Mailmeteor lets you run mail merge campaigns with your Gmail address, so that every of your recipients get a personalized email.",
"image": "https://storage.googleapis.com/indie-hackers.appspot.com/product-avatars/mailmeteor/UOmVhbqmYPQadx0b0bOXe0LjN3x2",
"website_url": "https://mailmeteor.com",
"twitter_handle": "mailmeteor",
"twitter_url": "https://twitter.com/mailmeteor",
"revenue": null,
"revenue_text": null,
"revenue_updated_at": null,
"post_count": 17,
"founders": [
{
"name": "Jean",
"username": "Cuireuncroco",
"url": "https://www.indiehackers.com/Cuireuncroco",
"role": "Co-founder",
"image": null
},
{
"name": "Corentin",
"username": "Frenchcooc",
"url": "https://www.indiehackers.com/Frenchcooc",
"role": "Co-founder",
"image": null
}
],
"updates": [
{
"title": "Live on Product Hunt",
"date": "2024-12-19",
"url": "https://www.indiehackers.com/post/live-on-product-hunt-UoYavv7glbnKg22D2xjp",
"text": "Today we're adding our AI Email Writer feature to Mailmeteor for Gmail . Show us some support during our Product Hunt launch: https://www.producthunt.com/posts/ai-writer-for-gmail"
},
{
"title": "🆕 Free tool 🆕 Spam Words Checker",
"date": "2022-07-05",
"url": "https://www.indiehackers.com/product/mailmeteor#update--N6EAqkl7A7RCue4WcJm",
"text": "We’ve collected hundreds of spam triggers words in the last months and have created a simple tool to avoid writing email that lands in spam .\n\nIt’s totally free and consists of highlighting words that"
}
]
},
"blocked": false,
"pages_opened": 1,
"proxy_traffic_bytes": 64013
},
"total_points": 5
}How to run it
The same lookup works from the app, the API, or as a tool an agent can call mid-task.
One record per request. Results come back in the same envelope as every other source: a session id, a readable summary, the structured result and the points charged.
curl -X POST https://api.neuralverge.ai/functions/v1/run-indiehackers-products \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"product":"mailmeteor"}'What teams use it for
Where this field shows up in an actual workflow.
Read what a small product does, who runs it and what it reports earning.
See the founders and roles listed for a product and follow the profile link.
Collect the update posts a team has published about its product.
Add tagline, website and Twitter to a list of product names.
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.
- —Revenue is self-reported by the product owner and is null when none is shared, as in the sample.
- —Founders are individual members with names and profile links. Use them for attribution, not to profile people.
- —updates[] holds the updates shown on the product page, not the full post archive.
Questions, answered
The last part of the product address, for example mailmeteor in indiehackers.com/product/mailmeteor.
Related sources
Try indie hackers product on your own data
One request format across every source in the catalog.