Public S3 bucket: s3://softwareheritage (no credentials needed, use --no-sign-request)
| Snapshot | Type | Size |
|---|---|---|
| 2025-11-28 | Full | ~30 TiB |
| 2025-10-08 | Full | 30 TiB |
| 2025-10-08-history-hosting | Metadata only | 1.7 TiB |
| 2025-05-18-popular-1k | Top 1k starred repos | ~63 KB origins |
| 2023-09-06-popular-6k | Top 6k starred repos | ~253 KB origins |
- Location:
s3://softwareheritage/graph/{snapshot}/orc/ - Format: Apache ORC (Spark/Trino/DuckDB compatible)
- Use: Query with SQL, extract specific tables
- Location:
s3://softwareheritage/graph/{snapshot}/compressed/ - Format: WebGraph compressed format
- Use: Graph traversal algorithms
Repository URLs.
| Column | Type |
|---|---|
| id | string |
| url | string |
Git commits.
| Column | Type |
|---|---|
| id | string (commit hash) |
| message | string |
| author | string (anonymized) |
| committer | string (anonymized) |
| date | timestamp |
| date_offset | int |
| committer_date | timestamp |
| directory | string (root tree ref) |
Archived file metadata (not content itself).
| Column | Type |
|---|---|
| sha1 | string |
| sha1_git | string |
| sha256 | string |
| blake2s256 | string |
| length | int |
| status | string |
Crawl records.
| Column | Type |
|---|---|
| origin | string |
| visit | int |
| date | timestamp |
| type | string (git/svn/hg) |
Visit outcomes.
| Column | Type |
|---|---|
| origin | string |
| visit | int |
| snapshot_id | string |
| status | string |
Project directories.
| Column | Type |
|---|---|
| id | string (SHA-1) |
Files within directories.
| Column | Type |
|---|---|
| directory_id | string |
| name | string |
| type | string (rev/dir/file) |
| target | string |
| perms | int |
Tagged versions.
| Column | Type |
|---|---|
| id | string |
| target | string |
| name | string |
| message | string |
| date | timestamp |
| author | string |
Branch snapshots and named references.
| Dataset | Includes | Size |
|---|---|---|
| Full | All files, all commits, all repos | 30 TiB |
| History-Hosting | Commits, tags, branches, root dirs only | 1.7 TiB |
History-hosting excludes file contents - useful for commit analysis, not for code search.
| Metric | Value |
|---|---|
| Origin URLs (full) | ~378 million |
| GitHub repos (subset) | ~100-200 million |
| Origin table size | 15.9 GB |
aws s3 ls s3://softwareheritage/graph/ --no-sign-requestaws s3 sync s3://softwareheritage/graph/2023-09-06-popular-6k/orc/origin/ ./origins/ --no-sign-requestimport pyarrow.orc as orc
import os
urls = []
for f in os.listdir('./origins'):
table = orc.read_table(f'./origins/{f}')
for url in table['url'].to_pylist():
if url.startswith('https://github.com/'):
urls.append(url)# Download origin_visit table and filter to repos active in last year
python scripts/filter-by-activity.py \
--dataset 2023-09-06-popular-6k \
--days 365 \
--github-only \
--download \
--output /tmp/active-origins.txt# Or manually with pyarrow
import pyarrow.orc as orc
import pyarrow as pa
import pandas as pd
import os
# Load origin_visit ORC files
tables = []
for f in os.listdir('/tmp/origin_visit'):
tables.append(orc.read_table(f'/tmp/origin_visit/{f}'))
df = pa.concat_tables(tables).to_pandas()
# Filter to last year
cutoff = df['date'].max() - pd.Timedelta(days=365)
recent = df[df['date'] >= cutoff]
active_origins = set(recent['origin'].unique())
# Filter to GitHub only
github_active = {o for o in active_origins if o.startswith('https://github.com/')}- Download origins from popular-6k subset
- Filter to GitHub URLs only (5,577 repos)
- Fetch READMEs via
raw.githubusercontent.com(no rate limit) - Fallback to GitHub API for edge cases
- Filter: drop <500 bytes, truncate >50k chars
- Embed with Qwen3-Embedding-8B
- Store in Qdrant
- READMEs fetched: 5,758
- After filtering: 5,751
- Embedding cost: ~$0.22
- Total size: 70 MB