Bug Bounty Programs Scraper avatar

Bug Bounty Programs Scraper

Pricing

$0.01 / 1,000 programs

Go to Apify Store
Bug Bounty Programs Scraper

Bug Bounty Programs Scraper

Find public bug-bounty and vulnerability-disclosure programs from selected sources. Search by keyword, company or domain, or program handle, then save normalized records with public links and available rewards, scope, and status.

Pricing

$0.01 / 1,000 programs

Rating

0.0

(0)

Developer

Maxime Dupré

Maxime Dupré

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Share

🛡️ Find Public Bug Bounty Programs

Security researchers, AppSec teams, and people learning bug hunting can use this Actor to find public bug-bounty and vulnerability-disclosure programs. It saves one normalized row for each first eligible program match, with the source, public links, rewards, scope, access details, status, and run history. Use the rows to choose public targets and review their published rules.

When the same program appears again from another search value, the Actor keeps the first saved match and ignores the later one. discoveredBy shows the one value that led to that first row.

📋 Program records with source and scope details

The Actor returns a run output with links to the default dataset and a short run summary. Each saved dataset row is one public bug-bounty or vulnerability-disclosure program. Source values that are not published are left out instead of invented.

Run output

FieldTypeWhat it does
datasetUrlURL stringLinks to the saved public program records in the default dataset.
runSummarystringGives counts of saved programs and the public sources used in the run.

▶️ Search one target at a time

Choose one Target per run: Keyword search, Company or domain, or Program handles or URLs. Fields in the other Target sections are ignored, and shared filters apply to every Target. Choose supported public sources such as HackerOne, Bugcrowd, Intigriti, YesWeHack, or security.txt and security policies. If Sources is empty, all supported sources are searched.

How to run

  1. Choose the Target that matches your search.
  2. Fill the matching keyword, company or domain, or program handle and URL fields.
  3. Choose Sources and add any filters you need.
  4. Run the Actor and open the dataset or run summary.

The Actor works with public program information. It does not access private, invite-only, or login-gated programs, scan targets, exploit systems, or submit vulnerability reports.

⚙️ Input

Target is required. Fill the fields for the selected Target; values in other Target sections are ignored. Sources and the other filters apply to every Target.

Input fields

FieldTypeWhat it does
targetstringChooses keyword, companyOrDomain, or programs search.
keywordstringOne keyword for finding public bug-bounty or vulnerability-disclosure programs. Used with target: "keyword".
companyOrDomainstringOne company name or domain for related public programs. Used with target: "companyOrDomain".
programsarray of stringsOne or more public program handles or URLs, one per line. Used with target: "programs".
sourcesarray of stringsPublic sources to search: hackerone, bugcrowd, intigriti, yeswehack, or securityTxt. Leave it empty to search all supported sources.
maxItemsintegerStops after this many program records. Leave it empty to return all available results until the selected sources are exhausted.
programTypestringKeeps programs with this public program type. You may enter a different label used by a source.
minimumRewardobjectKeeps programs with a published reward at or above the amount and currency below. Programs without a published reward are left out.
minimumReward.amountnumberMinimum published reward amount.
minimumReward.currencystringThree-letter ISO 4217 currency code, such as USD.
openOnlybooleanKeeps only programs that accept vulnerability submissions.
safeHarborOnlybooleanKeeps only programs with detected safe-harbor language.
changedSincedate stringKeeps programs first seen or changed on or after this date. Use YYYY-MM-DD.
scopeTargetstringKeeps programs whose published scope contains this target or domain. This filter applies to every Target.

Successful input example

This is the smallest common input from a successful current-beta run:

{
"target": "programs",
"programs": [
"github"
],
"sources": [
"hackerone"
],
"maxItems": 1,
"openOnly": false,
"safeHarborOnly": false
}

🧾 Output

Output fields

FieldTypeWhat it does
datasetUrlstringLinks to the saved program records in the default dataset.
runSummarystringSummarizes saved-program counts and source coverage for the run.

Dataset row shape

Optional fields appear when a source publishes those values; the Actor does not fill missing source data with guesses.

FieldTypeWhat it does
namestringName of the public security program.
handlestringHandle used by the source to identify the program.
sourcestringSource that provided the row: hackerone, bugcrowd, intigriti, yeswehack, or securityTxt.
programUrlURL stringPublic page for the program.
discoveredBystringThe one keyword, company, domain, handle, or URL that led to the first saved row.
programTypestringPublic program type given by the source, when available.
descriptionstringDescription of the program from the public source, when available.
industriesarray of stringsIndustries named by the public source.
accessobjectPublic access and login details reported by the source.
access.isPublicbooleanWhether the source marks the program as public.
access.requiresLoginbooleanWhether the source says that a login is needed.
submissionsOpenbooleanWhether the source says that vulnerability submissions are open.
rewardsarray of objectsPublished reward amounts or ranges for the program.
rewards[].severitystringReward tier or severity label from the source.
rewards[].amountnumberFixed reward amount published by the source.
rewards[].minimumnumberLowest amount in a published reward range.
rewards[].maximumnumberHighest amount in a published reward range.
rewards[].currencystringThree-letter ISO 4217 currency code for the reward.
policyUrlsarray of URL stringsPublic links to the program policy.
submissionUrlsarray of URL stringsPublic links for sending vulnerability reports.
securityContactobjectPublic security contact details from the source.
securityContact.emailsarray of stringsPublic email addresses for the security contact.
securityContact.urlsarray of URL stringsPublic links for contacting the security team.
securityContact.instructionsstringPublic instructions for contacting the security team.
scopeobjectPublished assets that are in or out of scope.
scope.inScopearray of objectsAssets that the source lists as in scope.
scope.inScope[].assetstringPublished in-scope asset name, URL, domain, or pattern.
scope.inScope[].assetTypestringIn-scope asset type given by the source.
scope.inScope[].descriptionstringSource instructions or context for an in-scope asset.
scope.outOfScopearray of objectsAssets that the source lists as out of scope.
scope.outOfScope[].assetstringPublished out-of-scope asset name, URL, domain, or pattern.
scope.outOfScope[].assetTypestringOut-of-scope asset type given by the source.
scope.outOfScope[].descriptionstringSource instructions or context for an out-of-scope asset.
activityobjectPublic activity metrics for the program.
activity.resolvedReportsintegerNumber of resolved reports published by the source.
responseTimeobjectPublished response-time metrics for the program.
responseTime.firstResponseHoursnumberPublished time to first response, in hours.
responseTime.resolutionHoursnumberPublished time to resolution, in hours.
priorityobjectPublished priority or scope-rank details.
priority.rankintegerPublished priority or scope rank.
priority.scorenumberPublished priority score.
priority.labelstringPublished priority label.
historyobjectWhen the program was first and most recently seen.
history.firstSeenAtdate-time stringTime when the program was first seen.
history.lastSeenAtdate-time stringTime when the program was most recently seen.
scopeDiffobjectPublished scope items added or removed since the last observation.
scopeDiff.addedarray of objectsAssets added to the published scope.
scopeDiff.added[].assetstringAdded asset name, URL, domain, or pattern.
scopeDiff.added[].assetTypestringType of an added asset.
scopeDiff.added[].descriptionstringSource context for an added asset.
scopeDiff.removedarray of objectsAssets removed from the published scope.
scopeDiff.removed[].assetstringRemoved asset name, URL, domain, or pattern.
scopeDiff.removed[].assetTypestringType of a removed asset.
scopeDiff.removed[].descriptionstringSource context for a removed asset.
scopeChangedbooleanWhether the published scope changed since the last observation.
retrievedAtdate-time stringTime when this public record was retrieved.

Successful dataset row example

This row is shortened to keep the example small. Each "..." value marks more real scope data that is not shown.

{
"name": "GitHub",
"handle": "github",
"source": "hackerone",
"programUrl": "https://hackerone.com/github",
"discoveredBy": "https://hackerone.com/github",
"programType": "bug-bounty",
"access": {
"isPublic": true
},
"scope": {
"inScope": [
{
"asset": "*.github.net",
"assetType": "URL",
"description": "Subdomains under `*.github.net` run services for our internal production network. Many of these services are not accessible from outside our internal network. Not all subdomains are [in-scope](https://bounty.github.com/#scope)"
},
"..."
],
"outOfScope": [
{
"asset": "*.github.io",
"assetType": "URL",
"description": "Individual sites which are hosted on GitHub Pages are out-of-scope."
},
"..."
]
},
"responseTime": {
"firstResponseHours": 92,
"resolutionHours": 1651
},
"history": {
"firstSeenAt": "2026-08-04T18:36:43.455Z",
"lastSeenAt": "2026-08-04T20:56:38.409Z"
},
"scopeChanged": false,
"retrievedAt": "2026-08-04T20:56:38.409Z"
}

💳 Pricing

Pay-per-event pricing

The Actor uses pay-per-event pricing. The public-disclosure-program-record event is titled Program and costs $0.00001 for each public program saved to the dataset. The event covers a saved program; this copy makes no separate charge claim for empty, setup, diagnostic, or no-result work.

🔌 Integrations

Use the dataset URL or Apify API after a run, then export the rows or send them to an Apify integration. You can also send the saved program rows to a spreadsheet, database, or your own app.

❓ FAQ

Can I look up one exact public program?

Yes. Choose Program handles or URLs and enter one or more public handles or URLs, such as github or https://hackerone.com/github.

Can I search by company or domain?

Yes. Choose Company or domain and enter one company name or domain. You can also use Scope contains to keep programs whose published scope contains a target or domain.

You can choose HackerOne, Bugcrowd, Intigriti, YesWeHack, or security.txt and security policies. Source values can be missing when a source does not publish them.

Does the Actor rank the best bug bounty platforms?

No. It finds public program records and returns source, links, rewards, scope, access, status, and other published details. You can review those fields to make your own choice.

Can I filter for rewards or open programs?

Yes. Use Minimum reward to set a published amount and currency, or turn on Open programs only. You can also filter by program type, safe-harbor language, changed date, or published scope.

What happens when the same program matches twice?

The Actor saves the first eligible match and ignores later matches for that program. The discoveredBy value describes the first saved match, not every later search value.

Does it find private programs or submit vulnerability reports?

No. It uses public program information only. It does not access private or login-gated programs, scan systems, exploit targets, or submit reports.

What happens if I leave Maximum results empty?

The Actor returns all available results until the selected sources are exhausted. Add a value when you want the run to stop after a set number of program records.

📝 Changelog

0.0: Initial release

🆘 Support

For issues, questions, or feature requests, file a ticket and I'll fix or implement it in less than 24h 🫡

Made with ❤️ by Maxime Dupré