Vexaloom Labs

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.

FieldTypeRequiredDescription
modestringrequiredChoose how to find public pastes.
searchKeywordsarrayoptionalWords or phrases to look for in public paste content (mode=searchKeywords). Each keyword is searched independently.
startUrlsarrayoptionalDirect links to public Pastebin, Gist, Ideone, Paste.org, or paste.gg pastes (mode=byUrls).
Show all input fields
FieldTypeRequiredDescription
modestringrequiredChoose how to find public pastes.
searchKeywordsarrayoptionalWords or phrases to look for in public paste content (mode=searchKeywords). Each keyword is searched independently.
startUrlsarrayoptionalDirect links to public Pastebin, Gist, Ideone, Paste.org, or paste.gg pastes (mode=byUrls).
sourcesarrayoptionalWhich public paste sites to include: pastebin, gist, ideone, paste_org, paste_gg. The default is all five.
maxItemsintegeroptionalHard limit on the total number of paste records returned.
maxItemsPerSourceintegeroptionalLimit on how many matching pastes or recent pastes are returned from each site.
maxPastesToScanintegeroptionalHow many recent public pastes to inspect per site. Pastebin archive scans are capped at 250 keys per run.
syntaxesarrayoptionalOptional Pastebin syntax archives to scan in addition to the main archive. Leave empty for the main archive only.
includeContentbooleanoptionalReturn the paste text (up to the character limit) in addition to the metadata. Leave off for a smaller dataset.
maxContentCharsintegeroptionalCharacter limit for the returned paste text when full text is enabled.
extractPatternsarrayoptionalOptional 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.

FieldTypeRequiredDescription
resultsstringoptionalDataset 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: searchKeywords for keyword hunting, byUrls for checking specific public pastes, and recentPastes for 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, or paste_gg
  • url — canonical public paste URL
  • title — paste title, gist description, or first file name
  • snippet — keyword-centred excerpt, or the first part of the text when no keyword applies
  • matchedKeyword, matchedKeywords[] — first and all keywords that matched
  • sourceQuery — keyword search that discovered the record
  • recordType — paste or gist
  • pasteId, gistId — native identifiers where available
  • author — public author or owner name
  • postedAt, postedAtText — creation time in ISO 8601 UTC and as shown on the site
  • expiresAt, expiryText — expiry where the source reports one
  • syntax, category — Pastebin syntax and category labels
  • views — public view count
  • sizeBytes, language, visibility — content and listing metadata
  • rawUrl — direct raw-text link where available
  • files[], fileCount — gist or paste.gg file names, sizes, languages, and raw links
  • description, stars, forks, comments — gist and paste.gg metadata
  • content, contentLength, contentTruncated — only when includeContent is enabled
  • regexMatches[], regexMatchCount — only when extractPatterns is set
  • scrapedAt — 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.

Open the step-by-step Python guide →

Source build hHsrORXkditdhC9p6. Documentation is regenerated from the default published build; private drafts are not included.