Skip to content
RAG Repo

API

The whole directory is published as static JSON so you can build on it. It is free and read-only, needs no API key or sign-up, and is served with cross-origin (CORS) access, so you can fetch it from a browser, a script, or a backend. If you are building a tool that discovers or ingests datasets, this is the front door.

Endpoints

Quick start

# Fetch the catalogue
curl https://rag-repo.org/sources.json
// In JavaScript
const res = await fetch('https://rag-repo.org/sources.json');
const { count, sources } = await res.json();
console.log(count, 'sources');

The shape

/sources.json returns a top-level object with catalog,site, generated (the build date, YYYY-MM-DD),count, a licence note, a legend, and asources array. Each source looks like this (fields are omitted ornull when not known):

{
  "slug": "common-crawl",
  "name": "Common Crawl",
  "page": "https://rag-repo.org/source/common-crawl",
  "url": "https://commoncrawl.org",
  "category": "web-corpora",
  "categoryName": "Web Corpora",
  "accessType": "open",
  "accessPatterns": ["cloud-bucket", "bulk-download"],
  "ragReadiness": "raw",
  "format": ["WARC", "WET", "WAT"],
  "size": "Petabytes (each monthly crawl is ~200-400 TB compressed)",
  "sizeTier": "huge",
  "licence": "Open (content subject to original site terms)",
  "commercialUse": "permitted",
  "shareAlike": false,
  "attributionRequired": false,
  "contentLicenceDiffers": true,
  "version": null,
  "lastReviewed": "2026-08-06",
  "supersedes": [],
  "supersededBy": null,
  "maintainer": "Common Crawl Foundation",
  "tags": ["web-crawl", "multilingual", "pretraining"],
  "links": { "download": "https://commoncrawl.org/the-data/" }
}

The legend object in the response documents every enumerated field:accessType, accessPatterns (how you actually get the bytes), sizeTier (a coarse download-volume gate), and the versioning fields. You do not need to hard-code these meanings; read them from the file.

Filtering

There are no query parameters: fetch once and filter client-side. Thesejqexamples show the fields most people want.

# Open sources you can use commercially
curl -s https://rag-repo.org/sources.json \
  | jq '.sources[] | select(.accessType=="open" and .commercialUse=="permitted") | .name'

# Everything on the Hugging Face Hub
jq '.sources[] | select(.accessPatterns | index("huggingface")) | .slug'

# Small enough to pull onto a laptop
jq '[.sources[] | select(.sizeTier=="tiny" or .sizeTier=="small")] | length'

# One category
jq '.sources[] | select(.category=="legal") | {name, licence}'

Watching for changes

Rather than diffing the whole catalogue, poll /updates.json (or subscribe to /updates.xml). It is ordered by lastReviewed, newest first, so you can compare against the last date you saw to pick up new or re-reviewed sources cheaply.

Terms and good practice

For how sources are selected and reviewed, see ourmethodology. Need a field the API does not expose, or spotted something wrong? Get in touch via thecontribute page.