Source

Query the public GitHub repository universe with SQL

Every public GitHub origin the Software Heritage archive has observed — 408 million repositories keyed by owner, including ones since deleted, renamed, or taken private — queryable with read-only SQL.

Surface

  • Recordsrepositories
  • Canonicalgithub.repos
  • FreshnessFrozen— bounded per-export projection; freshness advances when a new SWH graph export loads, not on a wall-clock cadence
  • Cadencebounded per-export projection (Software Heritage graph export 2026-06-04); advances when a new export loads
  • MethodSoftware Heritage graph export (AWS Open Data), owner-keyed projection of GitHub origins.
  • StatsLast stats snapshot: 2026-08-27T12:11:07Z

Query surfaces

  • github.repos
  • github.documents

Software Heritage graph export (AWS Open Data), owner-keyed projection of GitHub origins.

Best for

a person’s entire public repository footprint in one keyed lookup
deleted-repo archaeology: latest_status = 'not_found' rows are repositories the forge does not serve today
archive-observation liveness — first and last full visit, visit count

Fields

  • owner_lc
  • name_lc
  • owner
  • name
  • origin
  • latest_status
  • latest_visit_at
  • first_full_visit_at
  • last_full_visit_at
  • n_full_visits
  • latest_full_snapshot
  • export

Read live from the schema registry for github.repos — 12 columns. Every relation's full contract is served by /v1/scry/schema.

Indexed predicates

  • Prunesowner_lc = '<login, lowercase>'
  • Prunesowner_lc IN ('<login1>', '<login2>')
  • Prunesname_lc LIKE '%<substring, lowercase>%'

Queries

One owner’s whole portfolio

Keyed by lowercase login; newest-visited first.

SELECT owner, name, latest_status, first_full_visit_at, last_full_visit_at, n_full_visits
FROM github.repos
WHERE owner_lc = 'torvalds'
ORDER BY last_full_visit_at DESC
LIMIT 20;

Repositories the forge does not serve today

Deleted, renamed, or private-now repositories the archive still remembers.

SELECT owner, name, latest_visit_at
FROM github.repos
WHERE owner_lc = 'torvalds'
  AND latest_status = 'not_found'
ORDER BY latest_visit_at DESC
LIMIT 20;

Gaps

  • HolesNone declared on the live schema entry for github.repos (declared holes are curation, not a measurement of completeness).
  • Noteowner_lc / name_lc are the primary key; owner_lc = <login> is the intended access path and returns in milliseconds
  • Notename_lc LIKE needles of 3+ characters ride an ngram index; shorter needles scan
  • Notethis is repository metadata and archive-visit history, not code or stars — file contents for crawled repositories are in github.documents