AI Exposure Scanner: Public Secrets, Files & AI-Crawler Policy avatar

AI Exposure Scanner: Public Secrets, Files & AI-Crawler Policy

Pricing

from $39.00 / 1,000 domain scanneds

Go to Apify Store
AI Exposure Scanner: Public Secrets, Files & AI-Crawler Policy

AI Exposure Scanner: Public Secrets, Files & AI-Crawler Policy

Passive, scored scan of your own domains and public GitHub repos: masked leaked secrets, exposed .env, .git and backup files, which AI crawlers may train on your site, security headers and SPF/DMARC, each with a fix. Authorization required. From $0.039 per domain, $0.0039 per repo.

Pricing

from $39.00 / 1,000 domain scanneds

Rating

0.0

(0)

Developer

Fairquery

Fairquery

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 hours ago

Last modified

Share

See what your own public footprint exposes to AI systems and the open web, in one passive, scored report. Point it at domains and GitHub orgs you own: it looks for secrets committed to your public GitHub repos (always masked), well-known sensitive files left on your web server, which AI crawlers your robots.txt lets train on your content, contact data visible on your homepage, missing security headers and missing SPF/DMARC records. Every finding comes with a severity and a suggested fix, plus a 0–100 score and a short summary.

Pricing (pay per event, no start fee): $0.039 per domain scanned, $0.0039 per public repo scanned, $0.0019 per finding reported. Example: one domain plus a GitHub org with 15 public repos and 10 findings costs about $0.12.

Scan only what you own or are allowed to test. The authorizedToScan checkbox is required. Without it the run stops before sending a single request to your targets, and nothing is charged.

When to use this Actor (LLM / tool selection)

Use it when a person, agent or workflow needs to:

  • Check whether API keys, tokens or passwords were committed to an organization's public GitHub repos, without ever seeing the full values
  • Check whether a website serves .env, .git/config, backups, phpinfo or API docs it probably shouldn't
  • See which AI bots (GPTBot, ClaudeBot, Google-Extended, CCBot, PerplexityBot and others) may train on or answer from a site, based on robots.txt, ai.txt, llms.txt and noai meta tags
  • Get a quick security-header and SPF/DMARC check for a domain
  • Re-run the same snapshot on a schedule to see whether fixes landed

Do not use it for: targets you are not authorized to scan, penetration testing, private repositories, gists, logged-in areas, or a compliance audit. It is a passive snapshot, not a certification.

What it checks

Check (checks value)What it doesExample finding
secretsLists the org's public repos (newest-pushed first), picks up to 40 likely files per repo (config, env, CI, infra, source) and matches rules for AWS, GitHub, Slack, Google/GCP, Stripe, SendGrid, Twilio, OpenAI, Anthropic, npm, JWTs, private keys, database URLs and generic high-entropy assignmentsAWS Access Key ID in public repo acme/api with evidence aws-access-key-id: AK********LE (len 20)
exposed_filesOne GET per path from a short fixed list: /.env, /.env.backup, /.git/config, /.git/HEAD, /config.json, /wp-config.php.bak, /backup.zip, /backup.sql, /.DS_Store, /phpinfo.php, /server-status, /openapi.json, /.well-known/openapi.json, /swagger.json, /api-docs, plus a .map check for up to 8 scripts the homepage itself loads. Reported only when a 200 response also matches the file's content signature/.git/config is publicly readable
ai_policyrobots.txt rules per AI crawler, ai.txt, llms.txt, TDM/noai meta tags; which bots may train vs only search/answer13 AI training crawler(s) are allowed by robots.txt
data_exposureEmail addresses and phone numbers on the homepage (masked), presence of security.txt1 email address(es) exposed on the homepage with evidence f***y@proton.me
headersHSTS, CSP, X-Content-Type-Options, X-Frame-Options, Referrer-Policy on the homepage4 security header(s) missing
email_authSPF and DMARC TXT recordsNo DMARC record

Secrets are masked at the source. Only the rule, file, line and a redacted preview (first and last two characters plus the length) are written. Full values never reach the dataset, the log or OUTPUT. Each secret finding carries a confidence of likely_valid, likely_test or unknown (from the file path, placeholder words and entropy), and identical values repeated in one repo are collapsed into one finding with a count.

Input

FieldDefaultWhat it does
authorizedToScanfalseRequired to scan. Confirms you own the targets or have explicit permission
domainsYour domains, e.g. example.com (up to 20)
githubOrgsYour GitHub organization or user names; only public repos are read
githubTokenOptional, stored as a secret. Raises GitHub's API limit from 60 to 5,000 requests/hour. Sent only to api.github.com, never logged
checksallAny of secrets, exposed_files, ai_policy, data_exposure, headers, email_auth
maxRepos50 (≤ 300)Public repos scanned per org
includeForks / includeArchivedfalseAlso scan forks / archived repos
minSeverityinfoFindings below it are not written or charged (they still count in the score)
requestDelaySecs2 (1–30)Minimum gap between requests to the same website host

Example input

{
"authorizedToScan": true,
"domains": ["example.com"],
"githubOrgs": ["your-org"],
"minSeverity": "low"
}

Output

One dataset row per finding (view Findings), error rows for anything that could not be checked, and a final summary row. The same summary goes to the run's OUTPUT record.

Finding row (from a real run on our own GitHub org, 2026-10-18)

{
"type": "finding", "category": "secrets", "kind": "aws-access-key-id", "severity": "low",
"title": "AWS Access Key ID in public repo fairquery/fairquery-agent-trust-mcp",
"detail": "A string matching AWS Access Key ID is committed at src/server.ts:64. It looks like a test/placeholder value. The value is shown redacted only. This exact value appears 3 times in the repo.",
"location": "https://github.com/fairquery/fairquery-agent-trust-mcp/blob/main/src/server.ts#L64",
"evidence": "aws-access-key-id: AK********LE (len 20)",
"confidence": "likely_test",
"recommendation": "Revoke/rotate the credential if real, remove it from the code, purge it from git history (e.g. git filter-repo), and load secrets from environment variables or a secrets manager instead."
}

(That value is AWS's documented example key in our own test code, so it is correctly flagged low and likely_test.)

Run summary (OUTPUT)

status, overall_score (0–100), grade (A–F), category_scores, findings_total, findings_charged, findings_by_severity, per-domain details (reachability, AI-crawler table per bot, SPF/DMARC), per-org repo counts, requests, events, event_charges_usd_at_list_price and duration_secs. The score starts at 100 and subtracts a weight per finding; likely_test secrets weigh a quarter.

Pricing (pay per event)

EventPrice
Domain scanned (all selected website and DNS checks for one domain)$0.039
Public repo scanned$0.0039
Finding reported (at or above minSeverity)$0.0019

No Actor-start fee and no monthly plan. Free: runs without the authorization checkbox, error rows, the summary row and findings below minSeverity. Set a maximum cost per run in the run options and the Actor stops before exceeding it.

ExampleCost
1 domain, 6 findings≈ $0.05
1 domain + 15 repos, 10 findings≈ $0.12
1 domain + 50 repos, 25 findings≈ $0.28

How it behaves (passive by design)

  • No port scans, logins, exploits, fuzzing or brute forcing. Only GET requests to public URLs, public GitHub API calls and DNS lookups.
  • robots.txt is respected for every website request, including the well-known-file checks; disallowed paths are skipped.
  • Each well-known path is requested at most once per domain. The list above is complete.
  • Honest user agent: FairqueryExposureScanner/1.0 (+https://getfairquery.com; fairquery@proton.me).
  • Polite rate: one request at a time per host with a minimum gap; a 403 or 429 stops all further requests to that host for the run.
  • Private and internal addresses are refused (SSRF protection with DNS pinning; ports 80 and 443 only).

Memory / runtime

512 MB is plenty. In our tests one domain took about 45 s, and a 13-repo org about 85 s without a token.

Limitations

  • A clean report is not proof of safety. It covers only what was public and checked at scan time. It is not a penetration test, not an audit and not a compliance certification.
  • Secret detection is heuristic. It can miss secrets in formats it has no rule for, in files outside the 40 candidates per repo, or in git history, and it can flag harmless strings. Verify every finding before acting.
  • Public repos only: private repos, gists and (by default) forks and archived repos are not read.
  • Only the homepage is checked for headers, contact data and noai tags; the site is not crawled.
  • Without a githubToken, GitHub's 60 requests/hour limit can cut large org scans short (reported as an error row).

FAQ

Will it show me the leaked secret? No. You get the type, file, line and a masked preview. Open the file on GitHub to see it, then rotate it.

Can I scan a competitor or a client? Only with their explicit permission. The checkbox records your confirmation; you are responsible for having it.

Why does a test key lower my score? It is still a credential-shaped string in public code. Test/placeholder findings weigh a quarter of a real one, and you can raise minSeverity to hide them.

Is this a replacement for GitGuardian or a security platform? No. Those monitor continuously, including private code. This is a cheap, on-demand snapshot of your public footprint.

Fairquery family

Other Fairquery tools on the Apify Store. Each one returns structured rows with machine-readable error codes, and error rows are never charged:

All Fairquery Actors: https://apify.com/fairquery

Disclaimer

Fairquery is not affiliated with GitHub, OpenAI, Anthropic, Google, GitGuardian or any other company mentioned. Use the Actor only on targets you own or are authorized to scan.