# Hacker News Buyer Intent & Pain Point Finder (`lofomachines/hacker-news-buyer-intent-finder`) Actor

Find Hacker News buying signals, SaaS pain points and competitor-switching discussions. Get original evidence, intent, relevance, sentiment and discussion links for product research and no-code workflows. No external login required.

- **URL**: https://apify.com/lofomachines/hacker-news-buyer-intent-finder.md
- **Developed by:** [Lofomachines](https://apify.com/lofomachines) (community)
- **Categories:** Lead generation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.50 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

### Find Hacker News buying signals and customer pain points

**Discover what developers need, which tools frustrate them, and when they ask for alternatives.** Hacker News Buyer Intent & Pain Point Finder turns discussions on [Hacker News](https://news.ycombinator.com/) into an exportable research dataset with original text, supporting quotes, intent labels, relevance scores, sentiment, and links to the conversation.

Enter a product category, competitor, or customer problem. Choose a time window and run. **No coding, external account, cookies, or API key required.** Your Apify account gives you downloads, API access, scheduling, and connections to your existing workflows.

Built for SaaS founders, developer-tool companies, product managers, research agencies, and marketers who need evidence before deciding what to build, explain, or investigate next.

### Why use a Hacker News buyer intent finder?

A product mention can mean many things: someone asking for a replacement, a frustrated customer, a founder announcing a launch, or an ordinary conversation. This Actor helps you distinguish them and keeps the original evidence beside the classification.

- **Customer discovery:** find language people use to describe their needs.
- **Competitor research:** spot requests for alternatives and understand stated objections.
- **Product prioritization:** review complaints about pricing, reliability, usability, integrations, and missing features.
- **Demand research:** discover explicit requests for recommendations or solutions.
- **Developer marketing:** identify recurring questions your documentation or content could answer.
- **Launch intelligence:** watch new products entering your category.

A buying signal describes what somebody expressed in a discussion. It is **not a verified sales lead, permission to contact someone, or a prediction that they will purchase**.

### How to use the Actor

1. Add one or more **Topics or competitors**, such as `Supabase`, `CRM`, or `email deliverability`.
2. Optionally describe your product in **What do you offer?** to make relevance scores more useful.
3. Start with **All discussions**, choose your lookback period, and set a maximum result count.
4. Click **Start**. Open **Overview** for quick review or **Research details** for the richer dataset.
5. Download the results or connect the run to your workflow.

For ongoing monitoring, save your settings as an Apify task and add a daily or weekly schedule. Use `id` to avoid duplicate alerts across overlapping runs. Each run is an independent snapshot; repeated runs can return the same discussions.

### Input examples

#### Explore a market in minutes

```json
{
  "keywords": ["CRM", "Supabase", "email deliverability"],
  "daysBack": 30,
  "maxResults": 25
}
```

#### Find people seeking a solution

```json
{
  "keywords": ["CRM", "Salesforce"],
  "businessDescription": "A simple CRM for small B2B sales teams",
  "focus": "buyers",
  "daysBack": 90,
  "maxResults": 50
}
```

#### Research competitor alternatives

```json
{
  "keywords": ["Heroku", "Vercel"],
  "focus": "alternatives",
  "daysBack": 90,
  "maxResults": 50
}
```

#### Collect customer pain points

```json
{
  "keywords": ["Kubernetes", "Datadog"],
  "focus": "pain_points",
  "daysBack": 30,
  "maxResults": 50
}
```

#### Track product launches

```json
{
  "keywords": ["developer tools", "database"],
  "focus": "launches",
  "daysBack": 7,
  "maxResults": 25
}
```

#### Input reference

| Field | What to enter | Default |
|---|---|---|
| `keywords` | 1–20 product names, topics, or short phrases. Each entry is a separate search. | Required |
| `businessDescription` | Your product and intended audience, up to 600 characters. | Optional |
| `focus` | `all`, `buyers`, `pain_points`, `alternatives`, or `launches`. | `all` |
| `daysBack` | Lookback period in days, from 1 to 3,650. | `30` |
| `maxResults` | Maximum saved results across all topics, from 1 to 2,000. | `100` |

**Focused modes favor clear, relevant signals.** They can return fewer results than requested, including zero. All discussions also includes neutral, uncertain, and potentially less relevant matches so you can assess them yourself.

### Output: evidence you can inspect

You get **one row per unique story or comment**. A discussion matching several topics appears once, with its matched topics together. Results include 34 consistent fields, with missing values represented by `null` or an explicit unknown label.

Illustrative, abbreviated output — the username, identifier, and text below are examples, not an actual lead:

```json
{
  "id": "12345678",
  "platform": "Hacker News",
  "itemType": "comment",
  "title": "Ask HN: Which tools work for small sales teams?",
  "text": "Our team needs a simpler CRM. What alternatives should we evaluate?",
  "evidenceQuote": "What alternatives should we evaluate?",
  "author": "example_user",
  "publishedAt": "2026-09-18T12:00:00.000Z",
  "matchedKeywords": ["CRM"],
  "intent": "alternative_seeking",
  "intentProbability": 0.92,
  "intentConfidence": 0.84,
  "buyingSignalScore": 91,
  "relevanceScore": 95,
  "painCategory": "complexity",
  "sentiment": "neutral",
  "usageContext": "business",
  "isOpportunity": true,
  "needsReview": false,
  "analysisStatus": "complete",
  "url": "https://news.ycombinator.com/item?id=12345678"
}
```

Download the dataset in **JSON, CSV, Excel, or HTML**. JSON preserves arrays such as `matchedKeywords`; spreadsheets are convenient for reviewing scores and grouping labels.

#### Dataset field reference

| Fields | What they tell you |
|---|---|
| `id`, `platform`, `itemType` | Stable item identity and whether the result is a story or comment. |
| `title`, `text`, `excerpt` | Discussion title, available item text, and a short preview. For comments, the title belongs to the thread. |
| `evidenceQuote` | An excerpt from the item supporting its interpretation, or `null` when no suitable excerpt is available. |
| `url`, `threadUrl`, `parentUrl`, `externalUrl` | Links to the item, its thread, its parent, and an associated external page when available. |
| `threadId`, `parentId` | Relationships between discussion items. |
| `author`, `authorUrl` | Public username and profile link; no private contact details. |
| `publishedAt`, `collectedAt`, `ageDays` | Publication time, observation time, and age when collected. |
| `points`, `commentCount` | Published engagement where available. Missing comment scores remain `null`. |
| `matchedKeywords` | Search topics that matched this item within the run's coverage. |
| `intent` | Recommendation request, alternative seeking, pain point, product launch, comparison, general discussion, or unknown. |
| `buyingSignalScore` | 0–100 estimate of an explicitly expressed need to find, adopt, replace, or purchase a solution. Not a conversion probability. |
| `relevanceScore` | 0–100 estimated fit to your business description, or topics if no description is supplied. |
| `intentProbability`, `intentConfidence` | 0–1 estimates describing the selected intent and how clearly it was distinguished. Neither guarantees accuracy. |
| `painCategory` | Pricing, reliability, complexity, missing features, performance, privacy/security, support, integration, other, none, or unknown. |
| `sentiment`, `usageContext` | Expressed tone and explicit business/personal context. Unstated context remains unspecified. |
| `isOpportunity`, `needsReview` | A useful shortlist flag and an indication that the interpretation needs closer review. |
| `analysisStatus` | `complete` or `unavailable`. Unavailable analysis has null scores and unknown labels. |
| `textTruncated`, `analysisTextTruncated` | Indicate when unusually long content was shortened in the output or analysis. |

The **Run summary** shows saved results, opportunity counts, intent totals, incomplete topics, and whether coverage was limited. A completed run can legitimately have no matches. A partial run preserves available results and explains the missing coverage.

### Practical workflows for SaaS and developer tools

#### Validate a SaaS idea before building

Search the problem your product would solve. Use **Customer pain points**, then group results by `painCategory`. Read the original discussions to distinguish a recurring need from an isolated complaint.

#### Understand why people consider switching

Search competitor names with **People seeking alternatives**. Compare stated frustrations and requested capabilities to improve positioning, comparison pages, or customer interviews.

#### Build an evidence-backed product backlog

Track your category weekly. Add relevant quotes and discussion links to product research notes. Separate pricing complaints from reliability, integration, and feature gaps.

#### Find useful content topics

Review recommendation requests and repeated questions. Turn those needs into tutorials, decision guides, FAQs, or documentation improvements.

#### Monitor developer-tool launches

Use **Product launches** for your category. Track new names, the problems they address, and discussion activity without mixing announcements into your buyer shortlist.

### Connect to n8n, Make, Zapier, and spreadsheets

- **n8n:** run the Actor on a schedule, read dataset items, deduplicate by `id`, and route items with `isOpportunity: true` into a review queue.
- **Make:** connect an Apify run to Google Sheets, Airtable, Notion, or your CRM for team research.
- **Zapier:** use a completed Apify run to trigger a filtered digest or add rows to a spreadsheet.
- **Google Sheets or Excel:** compare intent, relevance, and pain categories across topics.
- **AI assistants and MCP workflows:** request a bounded research run and use the evidence and discussion links in a sourced briefing.

These are integration suggestions. The Actor returns data; it does not post replies or contact discussion participants.

### Cost and useful search tips

Check the **Pricing** tab for the current rate. Start with 25 results to assess your topics before scheduling larger runs. Longer windows and focused searches may take more work than a small general sample, and a result cap is not a guarantee of that many matches.

Use specific product names and short phrases. Search both a category and important competitors. For a quiet topic, extend the date range; for a noisy one, add a clear business description. Review uncertain records before using them in customer-facing work.

### Frequently asked questions

#### Does this scrape Hacker News comments as well as stories?

Yes. Matching stories and comments share a consistent dataset. This is topic research, not a complete archive of every comment in every thread.

#### Do I need another account or an API key?

No. You only need your Apify account to run the Actor. There are no external credentials to enter in the form.

#### Will it find every mention or guarantee qualified leads?

No. Results depend on available discussions, search coverage, your settings, and classification uncertainty. Broad or high-volume searches can be incomplete. The summary indicates limited coverage; the Actor does not certify buying authority, budgets, or readiness to purchase.

#### Why are there fewer results than I requested?

Your topics may be quiet, your time window narrow, or your selected focus may have few sufficiently clear matches. Try All discussions or a longer lookback. Review the summary for partial coverage.

#### Can I monitor my own brand?

Yes. Add your brand or product names, use All discussions, and review sentiment, complaints, and recommendation requests over time.

#### What happens when analysis is unavailable?

All discussions can retain original records with explicit unavailable labels. Focused modes omit unclassified results. A full analysis outage fails the run visibly; a partial outage is reported in the summary.

#### Is this affiliated with Hacker News?

No. This is an independent research tool. Respect the community's rules when using results. For help, share your input and run link in the Actor's Issues tab.

### Build your research workflow with Lofomachines

Extend your research with these complementary Actors:

1. [Social Media Lead Finder](https://apify.com/lofomachines/fresh-lead-finder) — explore expressed demand across other communities.
2. [LinkedIn Post Search Scraper](https://apify.com/lofomachines/linkedin-post-search-scraper) — research professional conversations and industry topics.
3. [Google News Scraper](https://apify.com/lofomachines/google-news-scraper) — add media coverage to your market research.
4. [Website Tech Profiler](https://apify.com/lofomachines/website-tech-profiler) — understand the technologies used by relevant businesses.
5. [Website Contact Extractor](https://apify.com/lofomachines/website-contact-extractor) — collect published business contact information when appropriate.

**[Discover all Lofomachines Actors](https://apify.com/lofomachines)** and build a research workflow around the data your business needs.

# Actor input Schema

## `keywords` (type: `array`):

Add 1–20 topics, product names or short phrases, one per line. Each entry is searched separately. Examples: CRM, Supabase, email deliverability.

## `businessDescription` (type: `string`):

Describe your product and audience to make relevance scores more useful. Leave empty for general topic research.

## `focus` (type: `string`):

All discussions includes uncertain and neutral results. Focused modes return only matching, sufficiently clear signals and may return fewer results.

## `daysBack` (type: `integer`):

Use 7 for a weekly review, 30 for recent opportunities, or 365 for product research.

## `maxResults` (type: `integer`):

Maximum saved discussions across all topics. Start with 25–100. This is a cap, not a guaranteed number of matches.

## Actor input object example

```json
{
  "keywords": [
    "CRM",
    "Supabase",
    "email deliverability"
  ],
  "businessDescription": "",
  "focus": "all",
  "daysBack": 30,
  "maxResults": 100
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

## `research` (type: `string`):

No description

## `summary` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "keywords": [
        "CRM",
        "Supabase",
        "email deliverability"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("lofomachines/hacker-news-buyer-intent-finder").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "keywords": [
        "CRM",
        "Supabase",
        "email deliverability",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("lofomachines/hacker-news-buyer-intent-finder").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "keywords": [
    "CRM",
    "Supabase",
    "email deliverability"
  ]
}' |
apify call lofomachines/hacker-news-buyer-intent-finder --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,lofomachines/hacker-news-buyer-intent-finder"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/cWnSvOX8AgmLz3oNR/builds/kgtDpIZH7K6KspBzN/openapi.json
