Intigriti Scraper
Pricing
from $1.50 / 1,000 program directory rows
Intigriti Scraper
Scrapes publicly visible Intigriti data: the public bug bounty/VDP program directory, the platform researcher leaderboard, and public researcher profiles.
Intigriti Scraper
Pricing
from $1.50 / 1,000 program directory rows
Scrapes publicly visible Intigriti data: the public bug bounty/VDP program directory, the platform researcher leaderboard, and public researcher profiles.
You can access the Intigriti Scraper programmatically from your own applications by using the Apify API. You can also choose the language preference from below. To use the Apify API, you’ll need an Apify account and your API token, found in API & Integrations in Apify Console.
{ "openapi": "3.0.1", "info": { "version": "0.1", "x-build-id": "lE77WeeWpmAtj7kDv" }, "servers": [ { "url": "https://api.apify.com/v2" } ], "paths": { "/acts/rl1987~intigriti-scraper/run-sync-get-dataset-items": { "post": { "operationId": "run-sync-get-dataset-items-rl1987-intigriti-scraper", "x-openai-isConsequential": false, "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.", "tags": [ "Run Actor" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/inputSchema" } } } }, "parameters": [ { "name": "token", "in": "query", "required": true, "schema": { "type": "string" }, "description": "Enter your Apify token here" } ], "responses": { "200": { "description": "OK" } } } }, "/acts/rl1987~intigriti-scraper/runs": { "post": { "operationId": "runs-sync-rl1987-intigriti-scraper", "x-openai-isConsequential": false, "summary": "Executes an Actor and returns information about the initiated run in response.", "tags": [ "Run Actor" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/inputSchema" } } } }, "parameters": [ { "name": "token", "in": "query", "required": true, "schema": { "type": "string" }, "description": "Enter your Apify token here" } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/runsResponseSchema" } } } } } } }, "/acts/rl1987~intigriti-scraper/run-sync": { "post": { "operationId": "run-sync-rl1987-intigriti-scraper", "x-openai-isConsequential": false, "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.", "tags": [ "Run Actor" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/inputSchema" } } } }, "parameters": [ { "name": "token", "in": "query", "required": true, "schema": { "type": "string" }, "description": "Enter your Apify token here" } ], "responses": { "200": { "description": "OK" } } } } }, "components": { "schemas": { "inputSchema": { "type": "object", "required": [ "mode" ], "properties": { "mode": { "title": "Mode", "enum": [ "programs", "leaderboard", "researchers" ], "type": "string", "description": "What public Intigriti data to scrape.", "default": "programs" }, "maxItems": { "title": "Max items", "minimum": 0, "type": "integer", "description": "Maximum number of items to scrape. Set to 0 for unlimited (programs mode walks every page; leaderboard/researchers are capped at 100, the public leaderboard API's own server-side limit, see notes below).", "default": 50 }, "searchQuery": { "title": "Search query (programs mode)", "type": "string", "description": "Free-text keyword search against the public program directory's name/company/description fields (e.g. \"bank\"), via the same Algolia index the site's own search box uses. Only used in `programs` mode. Combine with `industry`/`programType` to narrow further." }, "industry": { "title": "Industry filter (programs mode)", "type": "string", "description": "Filter programs by industry name exactly as shown on the site (e.g. \"Software\", \"Retail\", \"Financial Services and Insurance\"). Only used in `programs` mode." }, "programType": { "title": "Program type filter (programs mode)", "enum": [ "", "Bug bounty program", "Responsible disclosure" ], "type": "string", "description": "Filter by program type.", "default": "" }, "programsIncludeScope": { "title": "Include target assets / scope (programs mode)", "type": "boolean", "description": "For each program, fetch its detail page's public scope data (in-scope target assets: domains, apps, etc., each with an asset type and bounty tier) and add it as a `scope` field. Costs 1 extra HTTP request per program (and triggers the `program-scope-detail` charge event once per program where detail was fetched) and adds latency, so it's off by default. Only used in `programs` mode.", "default": false }, "programsIncludeBountyTable": { "title": "Include bounty tiers by severity (programs mode)", "type": "boolean", "description": "For each program, fetch its detail page's public bounty table (payout ranges per tier, broken down by low/medium/high/critical/exceptional severity) and add it as a `bountyTiers` field. Costs 1 extra HTTP request per program, shared with `programsIncludeScope`/`programsIncludeProgramStats` if any are enabled (only one extra request per program either way; triggers the `program-scope-detail` charge event once per program where detail was fetched). Off by default. Only used in `programs` mode.", "default": false }, "programsIncludeProgramStats": { "title": "Include program stats & activity (programs mode)", "type": "boolean", "description": "For each program, add a `programStats` field (submission/accepted counts, total/average payout, award-rep/collaboration/skip-triage flags, and a public recent-activity feed + recent contributor list) parsed from the same public program-detail payload as `programsIncludeScope`/`programsIncludeBountyTable`. Shares the same 1 extra HTTP request per program (only one extra request per program regardless of how many of these three flags are on; triggers the `program-scope-detail` charge event once per program where detail was fetched). Off by default. Only used in `programs` mode.", "default": false }, "programsIncludeLeaderboard": { "title": "Include per-program top researchers (programs mode)", "type": "boolean", "description": "For each program, fetch its public per-program leaderboard (top researchers ranked on that specific program) and add it as a `topResearchers` field. Costs 1 extra HTTP request per program, shared with `programsIncludeResponseTimes` if both are enabled (triggers the `program-activity-detail` charge event once per program where at least one of the two succeeded). Off by default. Only used in `programs` mode.", "default": false }, "programsIncludeResponseTimes": { "title": "Include 90-day response times (programs mode)", "type": "boolean", "description": "For each program, fetch its public 90-day average response-time stats (time to first response, time to triage, time to decision, in seconds) and add it as a `responseTimes90d` field. Costs 1 extra HTTP request per program, shared with `programsIncludeLeaderboard` if both are enabled (triggers the `program-activity-detail` charge event once per program where at least one of the two succeeded). Off by default. Only used in `programs` mode.", "default": false }, "startPage": { "title": "Start page (programs mode)", "minimum": 0, "type": "integer", "description": "0-indexed program directory page to start from. Only used in `programs` mode.", "default": 0 }, "timeframe": { "title": "Timeframe (leaderboard mode)", "enum": [ "alltime", "ninetydays" ], "type": "string", "description": "Leaderboard ranking window. Only used in `leaderboard`/`researchers` mode.", "default": "alltime" }, "severity": { "title": "Leaderboard type (leaderboard mode)", "minimum": 1, "maximum": 2, "type": "integer", "description": "Which of the public platform leaderboard's two ranked boards to fetch (matches the site's own leaderboard-type dropdown): `1` = all severities (default, ranked by total reputation), `2` = high-to-exceptional-severity findings only. Only used in `leaderboard`/`researchers` mode.", "default": 1 }, "usernames": { "title": "Researcher usernames (researchers mode)", "type": "array", "description": "Specific researcher handles (as in https://app.intigriti.com/profile/<handle>) to fetch public profile data for. If left empty in `researchers` mode, the top researchers from the public platform leaderboard are used instead.", "default": [], "items": { "type": "string" } }, "researchersSearchQuery": { "title": "Researcher handle search (researchers mode)", "type": "string", "description": "Case-insensitive partial-handle search, only used when `usernames` is left empty in `researchers` mode. Fetches the public leaderboard (up to 100 researchers) and keeps only handles containing this text -- the same substring match the leaderboard page's own \"Filter text\" box does client-side (there is no server-side researcher-name-search API; confirmed via a real browser network capture, see intigriti_api_notes.md)." }, "proxyConfiguration": { "title": "Proxy configuration", "type": "object", "description": "Optional proxy configuration. Intigriti's public marketing/app pages did not show datacenter-IP blocking during testing, so no proxy is used by default. Enable a proxy group if you start seeing blocks.", "default": { "useApifyProxy": false } } } }, "runsResponseSchema": { "type": "object", "properties": { "data": { "type": "object", "properties": { "id": { "type": "string" }, "actId": { "type": "string" }, "userId": { "type": "string" }, "startedAt": { "type": "string", "format": "date-time", "example": "2025-01-08T00:00:00.000Z" }, "finishedAt": { "type": "string", "format": "date-time", "example": "2025-01-08T00:00:00.000Z" }, "status": { "type": "string", "example": "READY" }, "meta": { "type": "object", "properties": { "origin": { "type": "string", "example": "API" }, "userAgent": { "type": "string" } } }, "stats": { "type": "object", "properties": { "inputBodyLen": { "type": "integer", "example": 2000 }, "rebootCount": { "type": "integer", "example": 0 }, "restartCount": { "type": "integer", "example": 0 }, "resurrectCount": { "type": "integer", "example": 0 }, "computeUnits": { "type": "integer", "example": 0 } } }, "options": { "type": "object", "properties": { "build": { "type": "string", "example": "latest" }, "timeoutSecs": { "type": "integer", "example": 300 }, "memoryMbytes": { "type": "integer", "example": 1024 }, "diskMbytes": { "type": "integer", "example": 2048 } } }, "buildId": { "type": "string" }, "defaultKeyValueStoreId": { "type": "string" }, "defaultDatasetId": { "type": "string" }, "defaultRequestQueueId": { "type": "string" }, "buildNumber": { "type": "string", "example": "1.0.0" }, "containerUrl": { "type": "string" }, "usage": { "type": "object", "properties": { "ACTOR_COMPUTE_UNITS": { "type": "integer", "example": 0 }, "DATASET_READS": { "type": "integer", "example": 0 }, "DATASET_WRITES": { "type": "integer", "example": 0 }, "KEY_VALUE_STORE_READS": { "type": "integer", "example": 0 }, "KEY_VALUE_STORE_WRITES": { "type": "integer", "example": 1 }, "KEY_VALUE_STORE_LISTS": { "type": "integer", "example": 0 }, "REQUEST_QUEUE_READS": { "type": "integer", "example": 0 }, "REQUEST_QUEUE_WRITES": { "type": "integer", "example": 0 }, "DATA_TRANSFER_INTERNAL_GBYTES": { "type": "integer", "example": 0 }, "DATA_TRANSFER_EXTERNAL_GBYTES": { "type": "integer", "example": 0 }, "PROXY_RESIDENTIAL_TRANSFER_GBYTES": { "type": "integer", "example": 0 }, "PROXY_SERPS": { "type": "integer", "example": 0 } } }, "usageTotalUsd": { "type": "number", "example": 0.00005 }, "usageUsd": { "type": "object", "properties": { "ACTOR_COMPUTE_UNITS": { "type": "integer", "example": 0 }, "DATASET_READS": { "type": "integer", "example": 0 }, "DATASET_WRITES": { "type": "integer", "example": 0 }, "KEY_VALUE_STORE_READS": { "type": "integer", "example": 0 }, "KEY_VALUE_STORE_WRITES": { "type": "number", "example": 0.00005 }, "KEY_VALUE_STORE_LISTS": { "type": "integer", "example": 0 }, "REQUEST_QUEUE_READS": { "type": "integer", "example": 0 }, "REQUEST_QUEUE_WRITES": { "type": "integer", "example": 0 }, "DATA_TRANSFER_INTERNAL_GBYTES": { "type": "integer", "example": 0 }, "DATA_TRANSFER_EXTERNAL_GBYTES": { "type": "integer", "example": 0 }, "PROXY_RESIDENTIAL_TRANSFER_GBYTES": { "type": "integer", "example": 0 }, "PROXY_SERPS": { "type": "integer", "example": 0 } } } } } } } } }}OpenAPI is a standard for designing and describing RESTful APIs, allowing developers to define API structure, endpoints, and data formats in a machine-readable way. It simplifies API development, integration, and documentation.
OpenAPI is effective when used with AI agents and GPTs by standardizing how these systems interact with various APIs, for reliable integrations and efficient communication.
By defining machine-readable API specifications, OpenAPI allows AI models like GPTs to understand and use varied data sources, improving accuracy. This accelerates development, reduces errors, and provides context-aware responses, making OpenAPI a core component for AI applications.
You can download the OpenAPI definitions for Intigriti Scraper from the options below:
If you’d like to learn more about how OpenAPI powers GPTs, read our blog post.
You can also check out our other API clients: