GitHub Advisory Database
GitHub Advisory Database
GitHub publishes its security-advisory database as individual OSV-format JSON files in a public repository. It combines GitHub-originated advisories, CVEs and imports from ecosystem databases, with affected packages, vulnerable ranges, references, aliases, severity and GitHub review metadata. The repository is free and open source, can be cloned without an account, and accepts curated community corrections.
Required Attribution:
Credit GitHub Advisory Database, link CC BY 4.0 and indicate changes.
Coverage
Security advisories for supported package ecosystems including Composer, Erlang, GitHub Actions, Go, Maven, npm, NuGet, pip, Pub, RubyGems, Rust and Swift. Granularity: one OSV JSON file per advisory, split into GitHub-reviewed and unreviewed directories. Free history depth: git history. Delay and update frequency: Not stated. GitHub warns that repository organization and database-specific fields can change without notice.
Verdict
This is package-level vulnerability data for dependency and software-supply-chain agents that need affected-version ranges and GitHub's curation state. It differs from OSV.dev: this is GitHub's source repository and includes GitHub-specific fields, while OSV.dev is an API and aggregator that imports GHSA data alongside other databases. Keep the advisory ID, aliases, ecosystem and reviewed flag, and do not rely on unspecified database_specific fields. Reuse requires CC BY 4.0 attribution.
Get the free weekly email
Free weekly email of newly verified free data. Unsubscribe by emailing us.
By entering your email and clicking Subscribe, you agree to receive the Signal Lab weekly email from Quantum Data Technologies Ltd., 3200-650 West Georgia Street, Vancouver, BC V6B 4P7, Canada (signal-lab@qdt.ai). You can unsubscribe at any time: reply "unsubscribe" to any email or write to signal-lab@qdt.ai. See our Privacy Policy.
Use in your agent
Load a recently changed GitHub advisory into pandas and Parquet. Checked against the provider's documentation on Nov 4, 2026.
Access
- No account is needed to clone the public repository.
- This small check uses GitHub's unauthenticated API; use git for bulk ingestion.
Request
git clone --filter=blob:none https://github.com/github/advisory-database.gitFormat
One OSV JSON file per advisory with ID, dates, aliases, affected packages and ranges, references, severity and review metadata.
Load into pandas and Parquet
Needs Python 3 with requests, pandas and pyarrow.
"""One recently changed GitHub advisory -> pandas -> Parquet. No key."""
import requests
import pandas as pd
API = "https://api.github.com/repos/github/advisory-database"
headers = {"Accept": "application/vnd.github+json", "User-Agent": "signal-lab-catalog-check"}
commits = requests.get(f"{API}/commits", params={"path": "advisories", "per_page": 10}, headers=headers, timeout=60)
commits.raise_for_status()
advisory = None
for commit in commits.json():
detail = requests.get(f"{API}/commits/{commit['sha']}", headers=headers, timeout=60)
detail.raise_for_status()
files = [f for f in detail.json().get("files", []) if f["filename"].startswith("advisories/") and f["filename"].endswith(".json") and f.get("raw_url")]
if files:
data = requests.get(files[0]["raw_url"], headers=headers, timeout=60)
data.raise_for_status()
advisory = data.json()
break
if advisory is None:
raise RuntimeError("No changed advisory found")
row = {"id": advisory["id"], "published": advisory.get("published"), "modified": advisory.get("modified"), "summary": advisory.get("summary"), "aliases": ";".join(advisory.get("aliases", []))}
pd.DataFrame([row]).to_parquet("github_advisory_sample.parquet", index=False)
ecosystems = sorted({a.get("package", {}).get("ecosystem", "") for a in advisory.get("affected", [])})
print(advisory["id"], "modified", advisory.get("modified"), "ecosystems", ",".join(ecosystems))Run by us on 2026-11-04 (python 3.13.5 | pandas 3.1.0 | pyarrow 26.0.0 | requests 2.34.2). Result: GHSA-7g64-f2hm-vjxp modified 2026-11-04T17:49:18Z ecosystems Maven
Limits
- Repository download limits: Not stated.
- The unauthenticated REST API has a separate IP-based limit.
Quirks
- Reviewed and unreviewed advisories use separate directories.
- database_specific fields can change without notice.
- Later commits can correct records.
Terms and attribution
- The database is CC BY 4.0.
- Give attribution, link the licence and indicate changes.
Sources
- https://github.com/github/advisory-database: “All advisories acknowledged by GitHub are stored as individual files in this repository. They are formatted in the Open Source Vulnerability (OSV) format.”
- https://raw.githubusercontent.com/github/advisory-database/main/README.md: “This project is licensed under the terms of the CC-BY 4.0 open source license.”
Information and education only. Not financial, investment, legal or tax advice. Listings can be inaccurate, incomplete or out of date and are provided "as is". Free tiers, limits and licenses belong to each provider and can change, so check the provider's own terms before you rely on them. Terms & Disclaimer