Paste Site Keyword Leak Finder (Pastebin, Gist & More)
Search Pastebin, GitHub Gist, Ideone, Paste.org, and Textbin for keywords such as leaked credentials, API keys, or company names, and get back the matching paste's URL, title, and text snippet.
Input schema
Input fields, types, required flags, descriptions, defaults, and prefills come from the published definition. Prefill examples are distinct from defaults.
| Field | Type | Required | Description |
|---|---|---|---|
mode | string | required | Choose how to find public pastes. |
searchKeywords | array | optional | Words or phrases to look for in public paste content (mode=searchKeywords). Each keyword is searched independently. |
startUrls | array | optional | Direct links to public Pastebin, Gist, Ideone, Paste.org, or paste.gg pastes (mode=byUrls). |
Show all input fields
| Field | Type | Required | Description |
|---|---|---|---|
mode | string | required | Choose how to find public pastes. |
searchKeywords | array | optional | Words or phrases to look for in public paste content (mode=searchKeywords). Each keyword is searched independently. |
startUrls | array | optional | Direct links to public Pastebin, Gist, Ideone, Paste.org, or paste.gg pastes (mode=byUrls). |
sources | array | optional | Which public paste sites to include: pastebin, gist, ideone, paste_org, paste_gg. The default is all five. |
maxItems | integer | optional | Hard limit on the total number of paste records returned. |
maxItemsPerSource | integer | optional | Limit on how many matching pastes or recent pastes are returned from each site. |
maxPastesToScan | integer | optional | How many recent public pastes to inspect per site. Pastebin archive scans are capped at 250 keys per run. |
syntaxes | array | optional | Optional Pastebin syntax archives to scan in addition to the main archive. Leave empty for the main archive only. |
includeContent | boolean | optional | Return the paste text (up to the character limit) in addition to the metadata. Leave off for a smaller dataset. |
maxContentChars | integer | optional | Character limit for the returned paste text when full text is enabled. |
extractPatterns | array | optional | Optional regular expressions to run over paste text. Matches are returned in `regexMatches`; this does not filter results. |
Download the published input schema
View complete JSON
{
"description": "Search public pastes by keyword, fetch known paste URLs, or scan the newest public pastes.",
"properties": {
"extractPatterns": {
"default": [],
"description": "Optional regular expressions to run over paste text. Matches are returned in `regexMatches`; this does not filter results.",
"editor": "stringList",
"items": {
"type": "string"
},
"prefill": [],
"title": "Extract regex patterns",
"type": "array"
},
"includeContent": {
"default": false,
"description": "Return the paste text (up to the character limit) in addition to the metadata. Leave off for a smaller dataset.",
"prefill": false,
"title": "Include full paste text",
"type": "boolean"
},
"maxContentChars": {
"default": 5000,
"description": "Character limit for the returned paste text when full text is enabled.",
"maximum": 50000,
"minimum": 100,
"prefill": 1000,
"title": "Maximum content characters",
"type": "integer"
},
"maxItems": {
"default": 50,
"description": "Hard limit on the total number of paste records returned.",
"maximum": 1000,
"minimum": 1,
"prefill": 3,
"title": "Maximum results",
"type": "integer"
},
"maxItemsPerSource": {
"default": 10,
"description": "Limit on how many matching pastes or recent pastes are returned from each site.",
"maximum": 500,
"minimum": 1,
"prefill": 3,
"title": "Maximum results per site",
"type": "integer"
},
"maxPastesToScan": {
"default": 250,
"description": "How many recent public pastes to inspect per site. Pastebin archive scans are capped at 250 keys per run.",
"maximum": 2000,
"minimum": 1,
"prefill": 10,
"title": "Maximum pastes to scan",
"type": "integer"
},
"mode": {
"default": "searchKeywords",
"description": "Choose how to find public pastes.",
"editor": "select",
"enum": [
"searchKeywords",
"byUrls",
"recentPastes"
],
"enumTitles": [
"Search by keyword",
"Fetch these paste URLs",
"Scan the newest public pastes"
],
"prefill": "searchKeywords",
"title": "Mode",
"type": "string"
},
"searchKeywords": {
"default": [],
"description": "Words or phrases to look for in public paste content (mode=searchKeywords). Each keyword is searched independently.",
"editor": "stringList",
"items": {
"type": "string"
},
"prefill": [
"test"
],
"title": "Search keywords",
"type": "array"
},
"sources": {
"default": [
"pastebin",
"gist",
"ideone",
"paste_org",
"paste_gg"
],
"description": "Which public paste sites to include: pastebin, gist, ideone, paste_org, paste_gg. The default is all five.",
"editor": "stringList",
"items": {
"type": "string"
},
"prefill": [
"gist"
],
"title": "Paste sites",
"type": "array",
"uniqueItems": true
},
"startUrls": {
"default": [],
"description": "Direct links to public Pastebin, Gist, Ideone, Paste.org, or paste.gg pastes (mode=byUrls).",
"editor": "requestListSources",
"items": {
"properties": {
"url": {
"description": "Public paste URL.",
"title": "Paste URL",
"type": "string"
}
},
"type": "object"
},
"prefill": [],
"title": "Paste URLs",
"type": "array"
},
"syntaxes": {
"default": [],
"description": "Optional Pastebin syntax archives to scan in addition to the main archive. Leave empty for the main archive only.",
"editor": "select",
"items": {
"enum": [
"text",
"python",
"javascript",
"json",
"sql",
"xml",
"bash",
"c",
"cpp",
"csharp",
"java",
"php",
"css",
"html",
"ruby",
"perl",
"go",
"rust",
"typescript",
"yaml",
"markdown",
"diff",
"nginx",
"docker",
"powershell",
"lua",
"kotlin",
"swift",
"scala",
"haskell"
],
"enumTitles": [
"Text",
"Python",
"JavaScript",
"JSON",
"SQL",
"XML",
"Bash",
"C",
"C++",
"C#",
"Java",
"PHP",
"CSS",
"HTML",
"Ruby",
"Perl",
"Go",
"Rust",
"TypeScript",
"YAML",
"Markdown",
"Diff",
"Nginx",
"Docker",
"PowerShell",
"Lua",
"Kotlin",
"Swift",
"Scala",
"Haskell"
],
"type": "string"
},
"prefill": [],
"title": "Pastebin syntax archives",
"type": "array",
"uniqueItems": true
}
},
"required": [
"mode"
],
"schemaVersion": 1,
"title": "Paste Site Keyword Leak Finder Input",
"type": "object"
}
Output schema
Published result links and storage locations. This schema is not an exhaustive contract for every field in a dataset record.
| Field | Type | Required | Description |
|---|---|---|---|
results | string | optional | Dataset containing matching pastes, fetched paste URLs, or recent public pastes. |
Download the published output schema
View complete JSON
{
"actorOutputSchemaVersion": 1,
"description": "Public paste records from Pastebin, GitHub Gist, Ideone, Paste.org and paste.gg, including URLs, authors, dates, syntax, views, raw links and optional paste text.",
"properties": {
"results": {
"description": "Dataset containing matching pastes, fetched paste URLs, or recent public pastes.",
"template": "{{links.apiDefaultDatasetUrl}}/items",
"title": "Paste results",
"type": "string"
}
},
"title": "Paste Site Keyword Leak Finder Output"
}
Dataset schema
Published dataset views and any declared field definitions. A view can select only a subset of the returned record fields.
Download the published dataset schema
View complete JSON
{
"actorSpecification": 1,
"fields": {
"properties": {
"author": {
"description": "Public author or owner name.",
"type": "string"
},
"category": {
"description": "Pastebin category label.",
"type": "string"
},
"comments": {
"description": "Gist comment count.",
"type": "integer"
},
"content": {
"description": "Paste text when full text is enabled, capped by maxContentChars.",
"type": "string"
},
"contentLength": {
"description": "Original paste text length before truncation.",
"type": "integer"
},
"contentTruncated": {
"description": "Whether returned content was shortened.",
"type": "boolean"
},
"description": {
"description": "Gist or paste.gg description.",
"type": "string"
},
"expiresAt": {
"description": "Expiry time in ISO 8601 UTC.",
"type": "string"
},
"expiryText": {
"description": "Expiry text as shown by the source.",
"type": "string"
},
"fileCount": {
"description": "Number of files in the paste.",
"type": "integer"
},
"files": {
"description": "Files contained in a gist or paste.gg paste.",
"items": {
"properties": {
"language": {
"type": "string"
},
"name": {
"type": "string"
},
"rawUrl": {
"type": "string"
},
"size": {
"type": "integer"
}
},
"type": "object"
},
"type": "array"
},
"forks": {
"description": "Gist fork count.",
"type": "integer"
},
"gistId": {
"description": "GitHub Gist identifier.",
"type": "string"
},
"language": {
"description": "Programming or paste language.",
"type": "string"
},
"matchedKeyword": {
"description": "First keyword that matched this record.",
"type": "string"
},
"matchedKeywords": {
"description": "All keywords that matched this record.",
"items": {
"type": "string"
},
"type": "array"
},
"pasteId": {
"description": "Native paste identifier where the source exposes one.",
"type": "string"
},
"postedAt": {
"description": "Creation time in ISO 8601 UTC.",
"type": "string"
},
"postedAtText": {
"description": "Creation time as shown by the source.",
"type": "string"
},
"rawUrl": {
"description": "Direct raw-text URL where the source exposes one.",
"type": "string"
},
"recordType": {
"description": "Record type, either paste or gist.",
"type": "string"
},
"regexMatchCount": {
"description": "Number of regex matches returned.",
"type": "integer"
},
"regexMatches": {
"description": "Matches for the requested regular expressions.",
"items": {
"properties": {
"match": {
"type": "string"
},
"pattern": {
"type": "string"
}
},
"type": "object"
},
"type": "array"
},
"scrapedAt": {
"description": "ISO 8601 timestamp when the record was collected.",
"type": "string"
},
"sizeBytes": {
"description": "Paste or file size in bytes.",
"type": "integer"
},
"snippet": {
"description": "Keyword-centred excerpt from the paste or its search preview.",
"type": "string"
},
"source": {
"description": "Paste site: pastebin, gist, ideone, paste_org, or paste_gg.",
"type": "string"
},
"sourceQuery": {
"description": "Keyword search that discovered this record.",
"type": "string"
},
"stars": {
"description": "Gist star count.",
"type": "integer"
},
"syntax": {
"description": "Pastebin syntax label.",
"type": "string"
},
"title": {
"description": "Paste title, gist description, or first file name.",
"type": "string"
},
"url": {
"description": "Canonical public URL of the paste or gist.",
"type": "string"
},
"views": {
"description": "Public view count where the source exposes one.",
"type": "integer"
},
"visibility": {
"description": "Public visibility flag reported by the source.",
"type": "string"
}
},
"type": "object"
},
"title": "OSINT Paste Results",
"views": {
"detailed": {
"display": {
"component": "table",
"properties": {
"author": {
"format": "text",
"label": "Author"
},
"language": {
"format": "text",
"label": "Language"
},
"matchedKeywords": {
"format": "text",
"label": "Keywords"
},
"postedAt": {
"format": "text",
"label": "Posted"
},
"rawUrl": {
"format": "link",
"label": "Raw URL"
},
"source": {
"format": "text",
"label": "Source"
},
"syntax": {
"format": "text",
"label": "Syntax"
},
"title": {
"format": "text",
"label": "Title"
},
"url": {
"format": "link",
"label": "URL"
},
"views": {
"format": "number",
"label": "Views"
}
}
},
"title": "Detailed Results",
"transformation": {
"fields": [
"source",
"title",
"author",
"postedAt",
"syntax",
"language",
"views",
"matchedKeywords",
"url",
"rawUrl"
]
}
},
"overview": {
"display": {
"component": "table",
"properties": {
"author": {
"format": "text",
"label": "Author"
},
"matchedKeyword": {
"format": "text",
"label": "Keyword"
},
"postedAt": {
"format": "text",
"label": "Posted"
},
"source": {
"format": "text",
"label": "Source"
},
"title": {
"format": "text",
"label": "Title"
},
"url": {
"format": "link",
"label": "URL"
}
}
},
"title": "Overview",
"transformation": {
"fields": [
"source",
"title",
"author",
"postedAt",
"matchedKeyword",
"url"
]
}
}
}
}
Key-value schema
Published key-value store definitions, when provided by this build.
This definition is not present in the default published build. See the published README for available documentation.
Published README
Read the full published documentation
Paste Site Keyword Leak Finder (Pastebin, Gist & More)
Check whether a keyword — an API key, an email domain, a company name — has surfaced on public paste sites. Search Pastebin, GitHub Gist, Ideone, Paste.org, and paste.gg in one run, or fetch a known paste URL, and get back the paste link, author, dates, syntax, views, raw link, and an optional full-text excerpt. Built for security researchers, threat-intel teams, and compliance monitoring.
What this actor does
- Three modes:
searchKeywordsfor keyword hunting,byUrlsfor checking specific public pastes, andrecentPastesfor scanning the newest public posts - Five live sources: Pastebin archive and raw text, GitHub Gist search and metadata, Ideone recent codes, Paste.org trending, and paste.gg's public list
- Rich metadata: author, posted date, expiry, syntax, category, views, language, file list, and direct raw link where the source exposes them
- Optional full text and regex extraction: return the paste body up to a character limit and pull out emails, keys, URLs, or any pattern you define
- No credentials or proxy setup: public data only; empty fields are omitted rather than returned as null
Output per paste
source—pastebin,gist,ideone,paste_org, orpaste_ggurl— canonical public paste URLtitle— paste title, gist description, or first file namesnippet— keyword-centred excerpt, or the first part of the text when no keyword appliesmatchedKeyword,matchedKeywords[]— first and all keywords that matchedsourceQuery— keyword search that discovered the recordrecordType—pasteorgistpasteId,gistId— native identifiers where availableauthor— public author or owner namepostedAt,postedAtText— creation time in ISO 8601 UTC and as shown on the siteexpiresAt,expiryText— expiry where the source reports onesyntax,category— Pastebin syntax and category labelsviews— public view countsizeBytes,language,visibility— content and listing metadatarawUrl— direct raw-text link where availablefiles[],fileCount— gist or paste.gg file names, sizes, languages, and raw linksdescription,stars,forks,comments— gist and paste.gg metadatacontent,contentLength,contentTruncated— only whenincludeContentis enabledregexMatches[],regexMatchCount— only whenextractPatternsis setscrapedAt— ISO 8601 collection timestamp
Input
| Field | Type | Default | Description |
|---|---|---|---|
mode |
string | searchKeywords |
searchKeywords, byUrls, or recentPastes |
searchKeywords |
array | – | Keywords to search (mode=searchKeywords) |
startUrls |
array | – | Public paste URLs to fetch (mode=byUrls) |
sources |
array | pastebin, gist, ideone, paste_org, paste_gg |
Which sites to search |
maxItems |
integer | 50 |
Overall record limit (1–1000) |
maxItemsPerSource |
integer | 10 |
Record limit per site (1–500) |
maxPastesToScan |
integer | 250 |
Recent pastes to inspect per site; Pastebin archive scans cap at 250 keys |
syntaxes |
array | [] |
Extra Pastebin syntax archives to scan; empty uses the main archive |
includeContent |
boolean | false |
Return paste text in addition to metadata |
maxContentChars |
integer | 5000 |
Text character limit when content is enabled |
extractPatterns |
array | [] |
Regular expressions to extract from paste text |
Example: search two keywords on Gist and Pastebin
{
"mode": "searchKeywords",
"searchKeywords": ["api_key", "password"],
"sources": ["gist", "pastebin"],
"maxItems": 40,
"maxItemsPerSource": 10
}
Example: inspect specific public pastes
{
"mode": "byUrls",
"startUrls": [
{"url": "https://pastebin.com/xdGpC3wH"},
{"url": "https://gist.github.com/fagoner/71c75995cf81fdc9e32fd17c1b5a43a0"}
],
"includeContent": true,
"maxContentChars": 3000
}
Example: extract emails from the newest Gists
{
"mode": "recentPastes",
"sources": ["gist"],
"maxItems": 20,
"maxItemsPerSource": 20,
"includeContent": true,
"extractPatterns": ["[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}"]
}
Example: scan older Pastebin syntax archives
{
"mode": "searchKeywords",
"searchKeywords": ["internal-config"],
"sources": ["pastebin"],
"syntaxes": ["python", "javascript", "bash"],
"maxPastesToScan": 250,
"maxItemsPerSource": 25
}
Use cases
- Threat intelligence — watch for company credentials, internal hostnames, or codenames appearing in public pastes
- Breach detection — check whether employee email addresses or customer domains have surfaced
- Incident response — fetch a suspicious paste and inspect its metadata and text in one step
- Security research — collect public proof-of-concept snippets and leaked configuration samples
- Compliance monitoring — keep an audit trail of public paste hits tied to your organization
- Brand protection — spot public mentions of a product, domain, or internal project name
FAQ
Which paste sites are covered? Pastebin, GitHub Gist, Ideone, Paste.org, and paste.gg. Pastebin is searched through its public archive and raw paste pages, Gist through its public search and gist metadata, and the other three through their newest public listings.
Does Pastebin search cover all of history? No. Pastebin's archive shows recent public pastes and selected syntax archives, and it does not offer free pagination through its full history. A scan reaches up to 250 archive keys per run; older or already-deleted pastes may not appear.
How many Gist results can I get? Gist search returns up to 10 results per page and up to 100 pages, so a single keyword is capped at roughly 1,000 search results. Use several specific keywords for broader coverage.
Why do Ideone, Paste.org, and paste.gg return fewer hits? Those sites do not expose a public keyword search. The actor scans their newest public listings and checks the paste text for your keywords, so coverage depends on how many recent pastes are scanned. paste.gg's public list API returns at most 100 entries per request, and unauthenticated Gist API calls are rate-limited.
Does this need cookies, an account, or a proxy? No. Only public pages are read, and the actor chooses a working connection automatically. You do not need to configure a proxy, log in, or supply an API key.
Does it return private or deleted pastes? No. Private, unlisted, password-protected, and deleted pastes are out of scope. If a paste disappears between the archive listing and the content fetch, it is skipped.
Is the full paste text always returned?
Only when includeContent is enabled, and only up to maxContentChars. Paste text can contain sensitive material; handle it according to your organization's data-handling rules and report real leaks responsibly.
Can I extract only certain values, such as emails or keys?
Yes. Add regular expressions to extractPatterns and the actor returns every match in regexMatches without filtering out other pastes.
Is this affiliated with Pastebin, GitHub, or the other sites? No. This is an independent actor that reads publicly accessible pages. It is not endorsed by or affiliated with any of the paste sites.
Python quickstart
Use a schema-derived input and the Python standard library to start a run. An Apify account and token are required for execution.
Source build hHsrORXkditdhC9p6. Documentation is regenerated from the default published build; private drafts are not included.