BMJ Cloudflare Hackathon
Public datasets
Open content kit · 23 July 2026

Build with a year of BMJ content.

Three public, read-only R2 datasets for rapid prototyping: article metadata, open-access full text, and Cloudflare-native BGE vectors.

32,894article records
87journals requested
222full-text articles
384vector dimensions

Choose a dataset

Every dataset has a machine-readable catalog and a paginated listing API. No read credentials are required.

R2 · JSON

Titles, abstracts & authors

BMJ journal article metadata from 21 July 2025 through 21 July 2026, preserving the source journal directory structure.

Articles32,894
Fieldstitle · abstract · authorship
Accesspublic read
R2 · Open access

Article full text

Full-text JSON for three open-access titles: BMJ Diabetes Research & Care, BMJ Medicine and BMJ Oncology.

Articles222
Journals3
Accesspublic read
R2 · Workers AI

Full-corpus BGE vectors

A normalized float32 matrix aligned to 32,814 usable metadata records and the embedding space used by Cloudflare Workers AI.

Model@cf/baai/bge-small-en-v1.5
Shape32,814 × 384
Matrix50.4 MB · float32 LE

Dataset documentation

R2 object keys describe where a file lives. JSON property keys describe the data inside that file. Both contracts are documented below.

Buckets and object keys

R2 is a flat object store. The slash-separated “folders” shown here are key prefixes retained from the source export.

BucketObjectsObject-key patternsContents
metadata 32,984 <journal-id>/<YYYYMMDD>_<uid>.json
_state/<journal-id>.json
32,894 article files, 87 journal state files, export and journal manifests, and a generated catalog.
fulltext 227 <journal-id>/<YYYYMMDD>_<uid>.json
_state/<journal-id>.json
222 full-text articles from bmjdrc, bmjmed and bmjonc, plus state, manifest and catalog files.
vectors 4 title_abstract.cf-baai-bge-small-en-v1-5.{f32,json} A binary float32 matrix, its ordered-ID sidecar, the vector storage guide and a generated catalog.

Public read API

All four hosts are served by one read-only Worker. No read token is required, writes are rejected, CORS is open, and large objects support byte ranges.

GET /Dataset description, catalog URL and useful entry points.
GET /catalog.jsonEvery source key with byte size, SHA-256 and public URL.
GET /__list?prefix=bmjopen/&limit=100Live paginated listing. Follow next_url until truncated is false.
GET /<object-key>Fetch an exact object. HEAD, conditional requests and Range are supported.

Article JSON

Article files use a deliberately compact normalized schema. The metadata and full-text exports share the same identity, title, abstract and author fields.

Metadata article

Found under a journal prefix in the metadata bucket.

  • uidstringStable UUID used in the filename and in the ordered vector sidecar IDs.
  • titlestringArticle title as plain text.
  • abstractstringNormalized abstract text.
  • authorsarrayOrdered author objects.
  • authors[].namestringDisplay name for an author.
  • authors[].affiliationsstring[]Zero or more affiliation strings for that author.
{
  "uid": "6908057e-2698-5153-bf0f-134f410dd4d3",
  "title": "…",
  "abstract": "…",
  "authors": [
    { "name": "…", "affiliations": ["…"] }
  ]
}

Full-text article

Uses every metadata-article key above and adds one field.

  • full_textstringNormalized full article text for the open-access article.

Index and manifest JSON

These files support discovery, reproducibility and integrity checking. Most prototypes should begin with catalog.json or journals.json.

catalog.json

KeyTypeMeaning
schema_versionnumberCatalog schema version.
dataset, titlestringMachine and display names.
accessstringCurrently public-read.
public_base_urlstringDataset host used to build object URLs.
generated_atstringISO 8601 catalog generation time.
source_object_countnumberNumber of source objects, excluding the catalog itself.
source_total_bytesnumberTotal size of source objects.
files[]arrayObjects with key, bytes, sha256 and url.

journals.json

KeyTypeMeaning
retrieved_atstringISO 8601 source retrieval time.
journals[]arrayJournal records.
journals[].idstringJournal identifier used as the R2 key prefix.
journals[].titlestringJournal display title.
journals[].issn_lstringLinking ISSN.
journals[].document_countnumberSource-system document count, not the 12-month export count.

manifest.json and _state/*.json

The export manifest records schema_version, status, created_at, completed_at, date_range, requested fields, journals, results, batching configuration and batch_history. Per-journal state files record status, timestamps, articles_written, completed/pending windows, split counts, source signatures and DOI-to-file mappings in article_files. Full-text state also includes article_ranks.

Vector snapshot

The binary matrix and JSON sidecar are inseparable. Row order is defined by the sidecar, and the BGE space must not be mixed with AllenAI SPECTER vectors.

Sidecar keyTypeMeaning
modelstring@cf/baai/bge-small-en-v1.5, the Workers AI checkpoint.
dimsnumber384 float32 values per vector.
countnumber32,814 matrix rows.
normalizedbooleantrue; each row is L2-normalized.
ids[]string[]Ordered article UUIDs. ids[N] identifies matrix row N.
vector N =
  floats[N * dims : (N + 1) * dims]

binary format =
  little-endian, row-major float32

Start in seconds

Fetch catalogs from a browser, notebook, Worker or command line. Cross-origin GET and range requests are enabled.

# Find BMJ Open objects
curl 'https://metadata.bmj-cloudflare-hackathon.com/__list?prefix=bmjopen/&limit=100'

# Download the vector contract and matrix
curl -O https://vectors.bmj-cloudflare-hackathon.com/title_abstract.cf-baai-bge-small-en-v1-5.json
curl -O https://vectors.bmj-cloudflare-hackathon.com/title_abstract.cf-baai-bge-small-en-v1-5.f32