Skip to main content
Thirdwatchthirdwatch
Business & local data

Track Product Hunt Vote Velocity for Launch Detection (2026)

Detect breakout SaaS launches via Product Hunt vote velocity using Thirdwatch. Real-time leaderboard tracking + recipes.

Apr 28, 2026 · 5 min read · 1,184 words
See the scraper →

Thirdwatch's Product Hunt Scraper makes SaaS launch-detection a structured workflow with pay-per-result pricing — hourly vote-velocity tracking, breakout-launch alerts, category-segmented insights. Built for B2B SaaS investors, growth marketers, competitive-intelligence teams, and indie-hacker research platforms.

Why track Product Hunt vote velocity

Product Hunt is the canonical SaaS launch-discovery source. According to Product Hunt's 2024 report, the platform launches 100K+ products annually with top-3 daily launches typically exceeding 500 votes by midnight PT — providing real-time signal for breakout SaaS products. For B2B SaaS investors + growth marketers + competitive-intelligence teams, real-time vote-velocity tracking surfaces breakout launches before mainstream tech-press coverage.

The job-to-be-done is structured. A B2B SaaS investor scouts breakout launches daily for early-stage portfolio additions. A growth-marketing team tracks competitor launches to inform content + ads strategy. A SaaS competitive-intelligence function monitors category-level launches for product-strategy decisions. An indie-hacker research platform surfaces breakout launches to subscribers. All reduce to hourly per-launch queries during launch-day windows.

How does this compare to the alternatives?

Three options for launch-detection data:

Approach Cost per 30 launches daily Reliability Setup time Maintenance
Manual Product Hunt browsing Free, time-intensive Slow 15-30 min/day Daily manual work
Product Hunt API (custom build) Free with auth Rate-limited Days (build) Per-rate-limit changes
Thirdwatch Product Hunt Scraper Pay per result Production-grade anti-bot handling 5 minutes Thirdwatch tracks PH

The Product Hunt Scraper actor page gives you raw real-time launch + vote data at the lowest unit cost.

How to track velocity in 4 steps

Step 1: Authenticate

export APIFY_TOKEN="apify_api_xxxxxxxxxxxxxxxx"

Step 2: Hourly snapshots of daily launches

import os, requests, datetime, json, pathlib

ACTOR = "thirdwatch~producthunt-scraper"
TOKEN = os.environ["APIFY_TOKEN"]

# Pull today's launches every hour during launch-day (PT timezone)
resp = requests.post(
    f"https://api.apify.com/v2/acts/{ACTOR}/run-sync-get-dataset-items",
    params={"token": TOKEN},
    json={"maxResults": 50, "todayOnly": True},
    timeout=900,
)
records = resp.json()
ts = datetime.datetime.utcnow().strftime("%Y%m%d-%H")
pathlib.Path(f"snapshots/ph-velocity-{ts}.json").write_text(json.dumps(records))
print(f"{ts}: {len(records)} Product Hunt launches captured")

50 launches × 24 hourly snapshots = 1200 records — well within budget for a launch-day vote-velocity sweep.

Step 3: Compute hourly velocity per launch

import pandas as pd, glob

snapshots = sorted(glob.glob("snapshots/ph-velocity-*.json"))
all_dfs = []
for s in snapshots:
    df = pd.DataFrame(json.loads(open(s).read()))
    df["snapshot_ts"] = pd.to_datetime(s.split("ph-velocity-")[1].split(".")[0],
                                        format="%Y%m%d-%H")
    all_dfs.append(df)
combined = pd.concat(all_dfs, ignore_index=True)

velocity = (
    combined.groupby(["product_id", "snapshot_ts"])
    .agg(votes=("votes", "first"),
         comments=("comment_count", "first"),
         product_name=("product_name", "first"))
    .reset_index()
    .sort_values(["product_id", "snapshot_ts"])
)
velocity["hourly_vote_delta"] = velocity.groupby("product_id").votes.diff()

# Latest snapshot velocity ranking
latest = velocity[velocity.snapshot_ts == velocity.snapshot_ts.max()]
breakouts = latest[latest.votes >= 200]  # Already at 200+ votes
print(f"{len(breakouts)} launches breaking out today (200+ votes)")
print(breakouts.sort_values("votes", ascending=False).head(10))

Step 4: Alert on breakout-velocity launches

import requests as r

# Alert on launches hitting 50+ votes/hour for 2 consecutive hours
sustained_velocity = (
    velocity[velocity.hourly_vote_delta >= 50]
    .groupby("product_id")
    .filter(lambda x: len(x) >= 2)
)

for product_id, group in sustained_velocity.groupby("product_id"):
    name = group.product_name.iloc[0]
    peak_velocity = group.hourly_vote_delta.max()
    r.post("https://hooks.slack.com/services/.../...",
           json={"text": (f":rocket: Product Hunt breakout: *{name}* — "
                          f"{peak_velocity:.0f} votes/hour peak velocity")})

print(f"{len(sustained_velocity.product_id.unique())} sustained-velocity breakouts today")

Sample output

{
  "product_id": "ph-12345",
  "product_name": "Nimbus AI",
  "tagline": "AI-powered project management for distributed teams",
  "votes": 487,
  "comment_count": 124,
  "category": "Productivity",
  "subcategory": "AI Tools",
  "launch_date": "2026-04-28",
  "maker_name": "Sarah Chen",
  "url": "https://www.producthunt.com/posts/nimbus-ai"
}

Common pitfalls

Three things go wrong in vote-velocity pipelines. Time-zone confusion — Product Hunt resets daily 12:01am PT (8:08am UTC); for accurate velocity tracking, normalize timestamps to PT timezone. Vote-pattern inflation — some launches deploy paid + creator-network vote-acquisition (gray-area but common); cross-reference with comment-quality (real users vs generic "great launch!" patterns) to detect inflation. Category-baseline drift — AI category breakout-thresholds rose 3x from 2023 to 2025; for accurate velocity-ranking, segment per category and use 90-day rolling baseline.

Thirdwatch's actor handles the anti-bot work and proxy rotation so you can focus on the data. Pair Product Hunt with [Hacker News scraping] (custom build) and Reddit Scraper for cross-platform launch verification. A fourth subtle issue worth flagging: Product Hunt's "Featured" curation gives editorial-boosted launches disproportionate first-hour traffic — for accurate organic-velocity research, separate Featured from non-Featured cohorts. A fifth pattern unique to launch-detection: weekend launches typically underperform weekday launches by 30-40% (Product Hunt audience is B2B, weekday-skewed); founders launching on Saturday/Sunday show different velocity dynamics than Tuesday/Wednesday launches. A sixth and final pitfall: launches from established companies (Notion 4.0, Figma Slides) draw 3-5x baseline votes purely on brand-recognition; for accurate "indie breakout" detection, segment by maker-tier (indie vs established).

Operational best practices for production pipelines

Tier the cadence: Tier 1 (active launch-day, hourly), Tier 2 (post-launch week-1 sustained tracking, daily), Tier 3 (long-tail historical research, monthly). 60-80% cost reduction with negligible signal loss when watchlist is properly tiered.

Snapshot raw payloads with gzip compression. Re-derive velocity metrics from raw JSON as your breakout-detection logic evolves. Cross-snapshot diff alerts on category-leaderboard transitions catch breakout-launch signals before mainstream coverage.

Schema validation. Daily validation suite asserting expected core fields with non-null rates above 80% (required) and 50% (optional). Product Hunt schema occasionally changes during platform UI revisions — catch drift early. A seventh pattern at scale: cross-snapshot diff alerts for category-leaderboard transitions (launch entering top-3 within first 6 hours) catch breakout-launch signals before mainstream tech-press coverage. An eighth pattern for cost-controlled teams: implement an incremental-diff pipeline that only re-processes records whose hash changed since the previous snapshot. For watchlists where 90%+ of records are unchanged between snapshots, hash-comparison-driven incremental processing reduces downstream-compute by 80-90% while preserving full data fidelity.

A ninth pattern unique to research-grade data work: schema validation should run continuously, not just at pipeline build-time. Run a daily validation suite that asserts each scraper returns the expected core fields with non-null rates above 80% (for required fields) and 50% (for optional). Alert on schema breakage same-day so consumers don't degrade silently.

A tenth pattern around alert-fatigue management: tune alert thresholds quarterly based on actual investor-action rates. If investors ignore 80%+ of alerts at a given threshold, raise the threshold. If they manually surface signals the alerts missed, lower the threshold. The right threshold drifts as launch-volume + category-saturation evolve.

An eleventh and final pattern at production scale: cross-snapshot diff alerts. Beyond detecting individual changes, build alerts on cross-snapshot field-level diffs — name changes, category re-classifications, status changes. These structural changes precede or follow material events and are leading indicators of organization-level disruption. Persist a structured-diff log alongside aggregate snapshots: for each entity, persist (field, old_value, new_value) tuples per scrape. Surface high-leverage diffs to human reviewers; low-leverage diffs stay in the audit log.

A twelfth pattern: cost attribution per consumer. Tag every API call with a downstream-consumer identifier (team, product, feature) so you can attribute compute spend back to the workflow that drove it. When a downstream consumer's spend exceeds projected budget, you can have a precise conversation with them about the queries driving cost rather than a vague "scraping is expensive" debate.

Related use cases

Frequently asked questions

Why track Product Hunt vote velocity?

Product Hunt is the canonical SaaS launch-discovery platform with 5M+ active users + 100K+ products launched annually. According to Product Hunt's 2024 report, top-3 daily launches typically exceed 500 votes by midnight PT — high-confidence signal for breakout SaaS products. For B2B SaaS investors, growth marketers, and competitive-intelligence teams, real-time vote-velocity tracking surfaces breakout launches within hours.

What vote-velocity signals matter?

Three signals: (1) hourly vote acceleration (50+ votes in first hour = breakout signal); (2) day-1 final votes (500+ = top-3 leaderboard position); (3) week-1 sustained engagement (continued comment activity post-launch-day). Combined velocity tracking surfaces ~5-10 breakout SaaS launches per month from 2K-3K monthly launches.

How fresh do velocity snapshots need to be?

Hourly cadence catches breakout-launch momentum within 60 minutes of launch (12:01am PT typical launch time). Daily cadence captures final leaderboard rankings + week-over-week trend research. For active SaaS-investment scouting, hourly cadence on launch-day is canonical; otherwise daily cadence sufficient for broader trend research.

Can I detect Show HN cross-platform launches?

Yes. Many SaaS founders launch simultaneously on Product Hunt + Show HN (Hacker News) for maximum first-day reach. Cross-platform velocity tracking surfaces founders running coordinated launches. Pinterest + TikTok cross-references add visual-launch validation. Combined cross-platform tracking catches breakout launches with 4-source confidence within 24 hours.

What launch categories perform best on Product Hunt?

Top categories per 2024 leaderboard: (1) AI/LLM tools (~30% of top launches in 2024); (2) developer tools (~20%); (3) productivity SaaS (~15%); (4) design tools (~10%); (5) marketing automation (~10%). For SaaS investors targeting specific categories, segment by category before velocity-ranking. AI/LLM saturation in 2024-2025 raises velocity-thresholds — what was 'breakout' in 2023 (500 votes) is 'standard' in 2025.

How does this compare to manual Product Hunt browsing?

Manual browsing requires daily check-in + screenshot tracking (15-30 min/day). Product Hunt API (free with auth) requires custom integration + rate-limit handling. The actor delivers structured launch + vote data on a pay-per-result basis without rate-limit ceiling. For 100-launch-per-day scale tracking, the actor is materially cheaper than building API integration in-house.

Related

Try it yourself

100 free credits, no credit card.

About 30 real searches. Add the MCP to Claude or Cursor in two minutes.