BibleEngine

A 100% static Bible API

BibleEngine

Two public-domain Bibles — King James and American King James, 31,102 verses each — answered by your browser reading plain JSON. Strong's numbers and a Hebrew & Greek lexicon included. No database, no server-side code.

Sends your query to the /api/ endpoint — processed entirely client-side.

An open Bible with an intricate brass clockwork engine rising from its pages

01The lookup() call

One import. One call.

Add the King James / American King James — with Strong’s numbers and a Hebrew & Greek lexicon — to your page with a single import and a single call. lookup() reads whatever a visitor would type and works out what it is.

app.js
import { BibleEngine } from 'https://bibleengine.org/js/BibleEngine.js';

const r = await BibleEngine.lookup('John 3:16');
console.log(r.results[0].text);
// "‹For God so loved the world…›"   ‹ › marks the words of Christ

lookup(input, opts) auto-detects the input: a reference (John 3:16), word(s) (Christ mercy), a "quoted phrase", a love* wildcard, or a Strong’s number (G25 / H7225). Each call returns one result object with a results array of { id, book, chapter, verse, ref, text }. Options: { translation: 'kjv'|'akjv', page, limit, as: 'reference'|'search'|'strongs' }; also BibleEngine.configure({ base }), BibleEngine.base() and BibleEngine.translations(). If your page sets a CSP, allow bibleengine.org in connect-src. Just trying queries by hand? Open /api/?q=John 3:16 in your browser. Full reference on the API page.

02The JavaScript modules

Or wire it yourself.

lookup() wraps a single engine call. For finer control, import the named exports and drive the steps directly — they all live in the one module and fetch the static files for you.

app.js
import { loadManifest, loadIndexMeta, runQuery, TRANSLATIONS }
  from 'https://bibleengine.org/js/BibleEngine.js';

const manifest = await loadManifest();
const meta     = await loadIndexMeta(TRANSLATIONS.kjv.index);

const res = await runQuery('John 3:16', { manifest, meta });
console.log(res.results[0].text);

Also exported: parseReference and fetchPassage (references), searchWord / searchStrongs / prefixSearch and fetchVerses (search + verse text), lookupStrongs (the lexicon), plus wordStrongs, resolveBook and packId / decodeId. The interactive search page is built entirely from these. They default to /v1 on the current origin — pass a base (or just use lookup()) when calling from another site.

03The raw static files

Or skip the code entirely.

Every file is directly reachable and CORS-enabled. Fetch the JSON yourself.

FileShape
/v1/kjv/manifest.jsonbook ids, names, verse counts per chapter
/v1/kjv/{BB}/{CCC}.jsonone chapter, verse → text
/v1/kjvstrongs/{BB}/{CCC}.jsonsame, each verse {t, w}
/v1/akjvstrongs/{BB}/{CCC}.jsonAmerican KJV, each verse {t, w}
/v1/index/words/{a-z}.jsonword → packed verse ids
/v1/index/strongs/{H|G}/{n}.jsonStrong's → packed ids
/v1/index/meta.jsonindex counts and stop-word list
/v1/index-akjv/…the same index tree for the American KJV
/v1/lexicon/{H|G}/{n}.jsonStrong's number → lemma, transliteration + definition

A packed id encodes a verse as one integer: book × 1000000 + chapter × 1000 + verse. John 3:16 is 43003016. The /v1/ prefix is the format version.

Free to use — the King James, American King James, and Strong’s texts are public domain; the BibleEngine software, data format, and index are released under CC0. Attribution is optional but appreciated — see the API page for details and a sample credit.

BibleEngine A Ministry Service by Danny Carlton.