{"adoption": {"forks": 210, "observed_at": "2026-08-28T04:03:28.784968+00:00", "stars": 1073}, "canonical_url": "https://ross.abutalabs.com/products/chatgpt-api-scanner", "card": {"archived": false, "artifact_type": "cli-tool", "description": "Scan GitHub for available OpenAI API Keys", "domain": ["security", "osint", "developer-tools"], "enriched": true, "function": ["security", "osint", "web-scraping", "developer-tools"], "health_score": 76, "homepage": null, "language": "Python", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["Junyi-99/ChatGPT-API-Scanner"], "name": "Junyi-99/ChatGPT-API-Scanner", "platform": ["python", "windows", "cli"], "pushed_at": "2026-04-17T08:36:54+00:00", "repo": "Junyi-99/ChatGPT-API-Scanner", "stars": 1073, "tags": ["api-key-scanning", "secret-detection", "github-scanning", "selenium", "openai", "security-research", "automation", "macos", "linux"], "topics": ["chatgpt", "chatgpt-api", "freegpt", "gpt", "gpt-3", "gpt4", "selenium"], "urls": [], "use_cases": ["find leaked OpenAI API keys on GitHub", "scan GitHub code for exposed secrets", "security research on API key leakage", "check whether my OpenAI API key has been leaked", "demonstrate why push protection and secret scanning matter", "audit leaked credentials for a security report"], "what_it_is": "A Python CLI tool that scans GitHub for publicly leaked OpenAI API keys using Selenium browser automation. It is intended for security research and raising awareness about API key hygiene.", "when_to_avoid": ["you want to use someone else's API key without authorization - this is illegal and unethical", "you need a general-purpose secret scanner for CI pipelines (use gitleaks or trufflehog instead)", "you need a headless or fully automated scanner - it requires interactive GitHub login via Chrome"], "when_to_choose": ["you are doing security research or a leaked-credential exposure study", "you want a ready-made Selenium-based GitHub scanner for OpenAI keys", "you need to demonstrate API key hygiene risks to a team"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/chatgpt-api-scanner", "repo": "Junyi-99/ChatGPT-API-Scanner", "role": "main", "score": 58}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:03:28.784968+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T06:53:34.866197+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f756471e8e16e13b961f4b1d2f9d54d1f3e9e521e83922ac6566bc2c26cabc59", "fetched_at": "2026-08-28T04:03:28.784968+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Junyi-99/ChatGPT-API-Scanner"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:03:28.784968+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T06:53:34.866197+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f756471e8e16e13b961f4b1d2f9d54d1f3e9e521e83922ac6566bc2c26cabc59", "fetched_at": "2026-08-28T04:03:28.784968+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Junyi-99/ChatGPT-API-Scanner"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T06:53:34.866197+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f756471e8e16e13b961f4b1d2f9d54d1f3e9e521e83922ac6566bc2c26cabc59", "fetched_at": "2026-08-28T04:03:28.784968+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Junyi-99/ChatGPT-API-Scanner"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:03:28.784968+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:03:28.784968+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:03:28.784968+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T06:53:34.866197+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f756471e8e16e13b961f4b1d2f9d54d1f3e9e521e83922ac6566bc2c26cabc59", "fetched_at": "2026-08-28T04:03:28.784968+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Junyi-99/ChatGPT-API-Scanner"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:03:28.784968+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:03:28.784968+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T06:53:34.866197+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f756471e8e16e13b961f4b1d2f9d54d1f3e9e521e83922ac6566bc2c26cabc59", "fetched_at": "2026-08-28T04:03:28.784968+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Junyi-99/ChatGPT-API-Scanner"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:03:28.784968+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:03:28.784968+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:03:28.784968+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T06:53:34.866197+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f756471e8e16e13b961f4b1d2f9d54d1f3e9e521e83922ac6566bc2c26cabc59", "fetched_at": "2026-08-28T04:03:28.784968+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Junyi-99/ChatGPT-API-Scanner"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:03:28.784968+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:03:28.784968+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T06:53:34.866197+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f756471e8e16e13b961f4b1d2f9d54d1f3e9e521e83922ac6566bc2c26cabc59", "fetched_at": "2026-08-28T04:03:28.784968+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Junyi-99/ChatGPT-API-Scanner"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T06:53:34.866197+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f756471e8e16e13b961f4b1d2f9d54d1f3e9e521e83922ac6566bc2c26cabc59", "fetched_at": "2026-08-28T04:03:28.784968+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Junyi-99/ChatGPT-API-Scanner"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T06:53:34.866197+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f756471e8e16e13b961f4b1d2f9d54d1f3e9e521e83922ac6566bc2c26cabc59", "fetched_at": "2026-08-28T04:03:28.784968+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Junyi-99/ChatGPT-API-Scanner"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T06:53:34.866197+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f756471e8e16e13b961f4b1d2f9d54d1f3e9e521e83922ac6566bc2c26cabc59", "fetched_at": "2026-08-28T04:03:28.784968+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Junyi-99/ChatGPT-API-Scanner"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 77, "longevity": 66, "rhythm": 28}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 924, "days_push": 138, "days_rel": 680, "gap_med": 41, "n_releases_24m": 2}, "score": 58, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}