A 100% static Bible API
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.
01The lookup() 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.
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
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.
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
Every file is directly reachable and CORS-enabled. Fetch the JSON yourself.
| File | Shape |
|---|---|
/v1/kjv/manifest.json | book ids, names, verse counts per chapter |
/v1/kjv/{BB}/{CCC}.json | one chapter, verse → text |
/v1/kjvstrongs/{BB}/{CCC}.json | same, each verse {t, w} |
/v1/akjvstrongs/{BB}/{CCC}.json | American KJV, each verse {t, w} |
/v1/index/words/{a-z}.json | word → packed verse ids |
/v1/index/strongs/{H|G}/{n}.json | Strong's → packed ids |
/v1/index/meta.json | index counts and stop-word list |
/v1/index-akjv/… | the same index tree for the American KJV |
/v1/lexicon/{H|G}/{n}.json | Strong'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.
04The drop-in widget
VerseTagger is a finished widget built on the same engine. One script tag and it scans the page for references — John 3:16, ranges, comma lists, whole chapters — and shows each verse on hover, pulled live from the JSON above. Nothing to bundle, nothing to maintain.
<!-- add once, anywhere before </body> --> <script type="module" src="https://bibleengine.org/versetagger/versetagger.js"></script>
That’s the whole install — the references in this paragraph would light up on a tagged page. Compound references expand with chapter carry-forward, words of Christ render in red, and verse text is fetched on first hover and cached. Set window.VerseTaggerConfig = { translation: 'akjv' } before the tag for the American KJV. See it working — and tag your own text — on the VerseTagger page.
05Search, on somebody else’s site
Flint puts a working Bible search on any page — the box and the results — running in the visitor’s browser against the same JSON. No account, no key, no quota, nothing on our end that could switch it off. Every verse it returns links back to the site it is installed on, not to this one.
<!-- where the search box should appear --> <div id="flint-search"></div> <!-- wherever your scripts already go --> <script src="https://bibleengine.org/flint/flint.js"></script>
Words, quoted phrases, wildcards, Strong’s numbers and plain references all go in the one box. Results come twenty to a page, each with an in context link that opens the whole chapter with the verse marked. Add data-results="/bible-search/" to put the box in a sidebar and send visitors to a results page of their own. Try it — and build your own snippet — on the Flint page.