HackenProof Bug Bounty & Audit Program Scraper avatar

HackenProof Bug Bounty & Audit Program Scraper

Under maintenance

Pricing

from $0.95 / 1,000 program results

Go to Apify Store
HackenProof Bug Bounty & Audit Program Scraper

HackenProof Bug Bounty & Audit Program Scraper

Under maintenance

Scrape every HackenProof bug bounty and audit program: max bounty, total paid out to researchers (payout proof), submitted-report count (competition), triage flag, project types, languages and platforms. Paid-per-report + 0-100 opportunity score rank 300+ programs. HTTP-only, no login.

Pricing

from $0.95 / 1,000 program results

Rating

0.0

(0)

Developer

Mr Zack

Mr Zack

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

7 hours ago

Last modified

Share

HackenProof Bug Bounty Scraper - Payout Proof & Competition Signals

Get every HackenProof bug bounty and audit program as clean structured data in one run: max bounty, project types, languages, platforms, triage flag, start/updated dates and status.

Then - the part no other scraper gives you - the two numbers HackenProof publishes that Immunefi and most platforms hide:

  • totalPaidUsd - how much the program has actually paid out to researchers, and
  • submittedReports - how many reports you are competing against.

Divide one by the other and you know what an average submission earned (paidPerReportUsd) before you spend a weekend on scope. One run = the full directory (300+ programs, ~$11.5M in tracked public payouts), filterable, scored and sorted.

Who is this for?

  • Web3 security researchers & bug bounty hunters - stop guessing which "up to $250,000" program has actually paid anyone. Filter onlyProvenPayout, sort by paidPerReport, cap the competition with maxSubmittedReports.
  • Security teams & agencies - benchmark bounty sizes, payout behaviour and report volume across 300+ programs before advising clients.
  • Analysts & builders - the web3 security market as a dataset: track new program launches, payout velocity and platform trends.
  • AI agents (MCP) - pay-per-event Actors are callable as tools. "Find live Solana programs that have paid at least $10k out, with under 200 reports submitted" becomes one tool call.

What makes this Actor different

Payout proof, not payout promises. A program advertising "up to $250,000" that has paid $0 across 600 reports is a very different bet from one that has paid $147,300 against a $2,000 max. HackenProof publishes both numbers; this Actor turns them into sortable signals:

Question a hunter asksField that answers it
Has this program ever actually paid anyone?payoutProven, totalPaidUsd
What did an average report here earn?paidPerReportUsd
How many hunters am I competing with?submittedReports, competitionBucket
Is the program alive or quietly abandoned?status, daysSinceUpdate
Will my report get triaged professionally?triagedByHackenproof
Just tell me what to hunt this weekend.opportunityScore - 0-100, sortable

Output (one item per program)

FieldExampleNotes
nameNEAR Intents: Bridges
programUrlhttps://hackenproof.com/programs/near-intents-bridges
programTypebountybounty or audit
statuslivelive / paused / ended
maxBountyUsd300000published maximum
totalPaidUsd45200payout proof - null when the program keeps it private
paidIsPrivatefalse
payoutProventruepaid > $0; null when private (we never guess)
paidPerReportUsd83.09naive but honest: total paid / reports
submittedReports544competition signal
competitionBuckethighnone / low / moderate / high / brutal
opportunityScore78.40-100 composite, see below
startedAt, lastUpdatedAt, endsAtISO dates
ageDays, daysSinceUpdate165, 81freshness
triagedByHackenprooftrue
projectTypes, categories, languages, platforms["Bridge"], ["Web"], ["Rust"], ["Near"]
raworiginal stringsexact values as displayed on the site

Any field the site does not publish comes back null - never a fabricated zero.

How the opportunity score works

Deliberately simple, documented, and reproducible so you can argue with it:

  • 40% max bounty - sqrt-scaled, saturating at $100,000
  • 25% payout proof - paid > $0 scales with the amount (saturating at $25k); a private total counts as neutral 0.5; a public $0 scores 0 on this component
  • 20% low competition - decays as reports pile in (300 reports = half marks)
  • 15% freshness - live and recently updated; paused programs are penalised, ended ones get 0

Programs with no published max bounty score null rather than a misleading number. Unproven programs still rank - they just do not outrank programs that provably pay.

Input highlights

  • status - live (default) or all
  • onlyProvenPayout - only programs that have publicly paid > $0
  • minMaxBountyUsd, maxSubmittedReports, maxDaysSinceUpdate, triagedOnly
  • projectTypes, languages, platforms, searchText - slice the directory
  • sortBy - opportunity (default), maxBounty, totalPaid, paidPerReport, fewestReports, newest, recentlyUpdated
  • maxItems - you are only charged for returned results

Example: the proven-payer, low-competition query

{
"status": "live",
"onlyProvenPayout": true,
"minMaxBountyUsd": 10000,
"maxSubmittedReports": 200,
"sortBy": "paidPerReport",
"maxItems": 25
}

Live programs that have really paid researchers, with $10k+ max bounties and fewer than 200 competing reports - ranked by what an average report earned.

New programs launch weekly, payout totals and report counts move daily, and the best programs saturate fast. A scheduled run is how you catch a fresh program before 500 hunters do.

  1. Run the Actor once with the input you want and check the results.
  2. On the Actor page open the ... menu and choose Schedule Actor (or go to Schedules and click Create new).
  3. Set the cron expression:
    • 0 7 * * * - every morning. Cheapest useful cadence.
    • 0 */12 * * * - twice a day, for catching new launches early.
    • 0 7 * * 1 - weekly digest, if you only hunt weekends.
  4. Attach the saved input. A tight input (maxItems: 25, sortBy: "opportunity") keeps every scheduled run to a few cents.
  5. Add an integration: IntegrationsSlack / Webhook / Google Sheets / Zapier / Make, triggered on Run succeeded. Your ranked feed of programs arrives on its own.

Catching launches: combine sortBy: "newest" with maxItems: 20 on a daily schedule - new programs surface before the report count climbs. Add maxSubmittedReports: 50 and every item in your inbox is a program almost nobody has hit yet.

Why this Actor

  • HTTP-only, no browser - the full directory in under a minute, cheap to run.
  • Defensive parser - tolerates site structure drift; failures degrade gracefully.
  • Pay per event - tiny flat start fee plus a per-program fee. A full-directory run costs ~$0.40; filtered runs cost cents.
  • No free-plan cap - free-plan users get the same full directory as everyone else.

Hunting across platforms? These use the same schema philosophy (honest nulls, payout-focused scoring):

FAQ

Is this legal? The Actor only reads the public program directory - the same data anyone sees in a browser without logging in. No login, no private data, no bypassing access controls.

Why is totalPaidUsd null on some programs? The program chose to keep its payout total private. We report null and set paidIsPrivate: true instead of guessing - and payoutProven is null for those, never false.

How fresh is the data? Each run fetches the live directory at that moment. See the scheduling section for a hands-off setup.

A field came back null? Some programs genuinely omit fields. Original display strings are always preserved under raw.

Found a bug, or want another field? Open a ticket on the Issues tab.

Changelog

  • 0.1 - Initial release: full bounty + audit program directory, payout proof (totalPaidUsd, paidPerReportUsd, payoutProven), competition buckets, opportunity score, HTTP-only, pay-per-event.

Was this Actor useful?

If it saved you from spending a weekend on a program that never pays, a short review on the Store page helps other researchers decide whether to try it. Reviews are the only signal buyers have before they spend anything.

If something is wrong instead, please open a ticket on the Issues tab - field requests and parser bugs get fixed.