Bible API

Every verse, chapter, book, Strong's entry and Verse of the Day on this site is available as plain JSON over HTTP — free, no API key required within fair limits. The text is the King James Version (1769) with the Apocrypha, public domain.

Quick start

  1. Pick an endpoint below — every row has a Try it link and a ready-made URL you can copy.
  2. Append ?format=json, a .json suffix, or send an Accept: application/json header — all three work.
  3. Read the JSON. No signup, no key, no cost.
curl — fetch John 3:16
curl 'https://getholybible.com/book/57/3/16?format=json'

Machine-readable: OpenAPI 3.1

The whole API is also described as a single OpenAPI 3.1 document — endpoints, parameters, schemas, headers and error shapes: /openapi.json. Point Postman, Insomnia, Swagger Editor, Redoc or a code generator at it and you are done.

curl — fetch the spec
curl 'https://getholybible.com/openapi.json'

Bible text

EndpointReturns
/?format=json Version metadata, the 80-book index, and today's Verse of the Day. Try it
/book/{book}?format=json Book metadata and its chapter numbers. Try it
/book/{book}/{chapter}?format=json Every verse in the chapter, each with ref, text and per-word words (surface, italics, words of Jesus, Strong's tag). Try it
/book/{book}/{chapter}/{verse}?format=json A single verse — same shape as one chapter verse. Try it
/passage?ref=… A passage by free-form reference — John 3:16, John 3:16-21, Psalm 23, John 3-4, 1 Corinthians 13. Caps at 500 verses. Try it
/random A random verse from the canonical books (66 books — never the Apocrypha). Try it
/versions Every translation the corpus offers — id, name, language, scope, license, source. Try it

Search & study

EndpointReturns
/search?q=…&page=N&format=json Full-text search across the whole Bible (25 per page), with highlighted snippets. Try it
/strongs/{G|H}{number}?format=json A Strong's dictionary entry: lemma, transliteration, KJV renderings, definition, derivation. Try it
/popbv?format=json The popular-verses collection: seeded favourites ranked with real reader visits. Try it

Verse of the Day

EndpointReturns
/votd?format=json Today's Verse of the Day: reference, verse text, artwork URL, prev/next days. Try it
/votd/{Y-m-d}?format=json The Verse of the Day for any date in the archive. Try it
/votd/archive/{year}?format=json Every day of that year with its reference — the whole archive in one response. Try it

Account

EndpointReturns
/me Who the request was authenticated as — requires a token (see rate limits). Get a token
POST /token Mint an API token with email + password — no browser needed, ideal for apps. Example
curl — mint a token, then use it
curl -X POST https://getholybible.com/token \
  -H 'Content-Type: application/json' \
  -d '{"email":"you@example.com","password":"…","name":"my app"}'

# → {"ok":true,"token":"ghb_…"}   (shown exactly once)

curl https://getholybible.com/me -H 'Authorization: Bearer ghb_…'
curl — with a token
curl 'https://getholybible.com/me' -H 'Authorization: Bearer YOUR_TOKEN'

Code examples

curl
curl 'https://getholybible.com/search?q=armour%20of%20God&format=json'
JavaScript (Node 18+)
const res = await fetch('https://getholybible.com/votd?format=json');
const votd = await res.json();
console.log(votd.ref, '→', votd.verse.text);
PHP
$verse = json_decode(file_get_contents('https://getholybible.com/book/57/3/16?format=json'), true);
echo $verse['text'];
foreach ($verse['words'] as $w) {
    if (isset($w['s'])) echo " {$w['t']}={$w['s']}";
}

Note: responses are served same-origin; browsers calling the API from another site need a server-side proxy or the bulk download.

Response fields

verse object (John 3:16, shortened)
{
  "book": 57, "chapter": 3, "verse": 16,
  "ref": "Jhn 3:16",
  "text": "For God so loved the world, that he gave his only begotten Son, …",
  "words": [
    { "t": "For", "s": "G1063" },
    { "t": "God", "s": "G2316" },
    { "t": "so", "s": "G3779" }, …
  ]
}
t
the word itself
i
true when supplied by translators — italicized in print
r
true for words of Christ, printed in red
s
Strong's number — look it up at /strongs/{s}

API tokens & rate limits

Errors

StatusWhenBody
401 Missing, invalid or revoked token. {"error": "…", "status": 401}
404 Unknown book, chapter, verse, Strong's number, or date outside the archive range. {"error": "…", "status": 404}
429 Over a rate limit — see the Retry-After header. {"error": "…", "status": 429}
503 Empty verse pool (should never happen). {"error": "…", "status": 503}

Bulk, no requests at all

Prefer one download to a thousand calls? The complete dataset — every verse with Strong's tags, the Strong's dictionaries, and book metadata — ships as a single SQLite file at /download, public domain, updated with the site.

Text: King James Version (1769) with Apocrypha, public domain, courtesy of CrossWire and eBible.org. Strong's dictionaries: OpenScriptures JSON edition (CC-BY-SA). Questions or something looks wrong? Contact us.