Bible API
The Bible API returns any verse, passage, chapter or book of the Bible as JSON in over 35 translations in 20 languages, including the King James Version, the Berean Standard Bible, the World English Bible, the Reina-Valera 1909, the Luther Bibel and the Chinese Union Version, plus the Hebrew Old Testament and the Greek New Testament. All translations are in the public domain.
Get a random verse or the verse of the day, compare up to five translations side by side, add headings, poetry lines, footnotes and Strong's numbers, search the whole Bible by keyword, phrase or meaning, and check whether a quote is really in the Bible and where.
Every endpoint and parameter is available on every plan, including the free plan, and each request counts as one API call.
Available endpoints:
- /v1/bible - Passages by reference, a random verse or the verse of the day
- /v1/biblesearch - Search by keyword, phrase, Strong's number or meaning
- /v1/bibleverify - Check a quote, or every quoted reference in a block of text
Translations
Pass the id as translation. OT: Old Testament. NT: New Testament. Deuterocanon: the deuterocanonical books (Apocrypha).
| id | Name | Language | Books |
|---|---|---|---|
bsb | Berean Standard Bible | English | OT, NT |
web | World English Bible | English | OT, NT |
kjv | King James Version | English | OT, NT, Deuterocanon |
asv | American Standard Version (1901) | English | OT, NT |
msb | Majority Standard Bible | English | OT, NT |
ylt | Young's Literal Translation | English | OT, NT |
darby | Darby Translation | English | OT, NT |
dra | Douay-Rheims 1899 | English | OT, NT, Deuterocanon |
webster | Webster Bible | English | OT, NT |
bbe | Bible in Basic English | English | OT, NT |
geneva | Geneva Bible (1599) | English | OT, NT |
rv | Revised Version (1885) | English | OT, NT, Deuterocanon |
wmb | World Messianic Bible | English | OT, NT |
rv1909 | Reina-Valera 1909 | Spanish | OT, NT |
bpm | Bíblia Portuguesa Mundial | Portuguese | OT, NT, Deuterocanon |
lsg | Louis Segond 1910 | French | OT, NT |
ostervald | Bible Ostervald | French | OT, NT |
luther1912 | Luther Bibel 1912 | German | OT, NT |
elberfelder | Elberfelder Bibel (1905) | German | OT, NT |
diodati | Diodati (1885) | Italian | OT, NT |
riveduta | Riveduta (1927) | Italian | OT, NT |
nld1917 | De Heilige Schrift (1917) | Dutch | OT, NT |
synodal | Synodal Translation | Russian | OT, NT |
kulish | Kulish Bible | Ukrainian | OT, NT |
kralicka | Bible kralická | Czech | OT, NT |
cuv | Chinese Union Version (Simplified) | Chinese | OT, NT |
cuvt | Chinese Union Version (Traditional) | Chinese | OT, NT |
kor1910 | Korean Bible (1910) | Korean | OT, NT |
vie1923 | Kinh Thánh (1923) | Vietnamese | OT, NT |
vandyck | Van Dyck Bible | Arabic | OT, NT |
opv | Old Persian Version | Persian | OT, NT |
judson | Judson Bible | Burmese | OT, NT |
hat | Haitian Creole Bible (1985) | Haitian Creole | OT, NT |
vulgate | Clementine Vulgate | Latin | OT, NT, Deuterocanon |
wlc | Westminster Leningrad Codex (Hebrew OT) | Biblical Hebrew | OT |
tr | Textus Receptus (Greek NT) | Koine Greek | NT |
byz | Byzantine Majority Text (Greek NT) | Koine Greek | NT |
https://api.api-ninjas.com/v1/bible
Returns Bible passages by reference, in one translation or up to five side by side, a random verse, or the verse of the day. A passage can be a single verse, a range, a whole chapter or a whole book.
Parameters
Provide ref, or set random or daily to true.
refoptionalOne or more references, separated by commas or semicolons (up to 10 per call):
John 3:16,jn 3:16-18,1 Cor 13:4-7,Psalm 23,Genesis 1-3,Rom 8:28-9:2,John 3:16, 18; 4:1-6,Ruth(a whole book) orPs 119:1-end. Book names and abbreviations work in English and in the language of each translation, e.g.Juan 3:16,Jean 3:16or约翰福音 3:16. Withrandom=true,refsets where the random verse comes from, e.g.Psalms,John 14,OTorNT.translationoptionalTranslation id from the translations table, or up to 5 comma-separated ids to compare translations side by side, e.g.
bsb,kjv. Defaultbsb.include_verse_numbersoptionaltrue(default) puts each verse number in brackets, e.g.[16], before the verse intext.falsereturns the text without numbers.include_formattingoptionaltrueadds headings, paragraph starts, poetry lines and the words of Jesus to each verse, and puts paragraph and line breaks intext. Defaultfalse.include_footnotesoptionaltrueadds each verse's translator footnotes. Defaultfalse.include_strongsoptionaltrueadds each verse's words with their Strong's numbers, inbsb,kjv,web,asv,wlc,trandbyz. Defaultfalse.randomoptionaltruereturns one random verse, from anywhere in the Bible or from withinref.dailyoptionaltruereturns the verse of the day: the same verse for every caller on a given date.dateoptionalWith
daily=true: the date of the verse of the day (YYYY-MM-DD). Default today.tzoptionalWith
daily=true: the IANA time zone that decides what "today" is, e.g.America/New_York. DefaultUTC.
Headers
X-Api-KeyrequiredAPI Key associated with your account.
Response
The /v1/bible endpoint returns a JSON object with the following fields, or an error if the request is unsuccessful (see error codes).
referenceThe references returned, in standard form, e.g.
John 3:16–17. Several references are separated by;.dateWith
daily=true: the date of the verse of the day (YYYY-MM-DD).passagesOne passage for each reference and translation, in the order requested.
passages[].referenceThe passage's reference.
passages[].translationThe passage's translation: an object with the translation's
id,nameandlanguage(a language code such asen).passages[].bookThe book name in the translation's own language.
passages[].book_codeThe standard three-character book code, e.g.
JHNfor John. It is the same in every translation.passages[].textThe whole passage as one string, with verse numbers in brackets unless
include_verse_numbers=false.passages[].versesEvery verse of the passage, with its
chapter,verseandtext, plus the optional fields below.passages[].verses[].verse_endWhen a translation combines several verses into one, the last verse number it covers.
passages[].verses[].headingsWith
include_formatting=true: headings before the verse, each with atype(section,subsection,major,psalm_title,speakeroracrostic) and itstext.passages[].verses[].paragraph_startWith
include_formatting=true:truewhen a new paragraph starts at this verse.passages[].verses[].linesWith
include_formatting=true: the verse's poetry lines, each with itstextandindentlevel.passages[].verses[].words_of_jesusWith
include_formatting=true, in red-letter translations such askjvandweb: the words of Jesus in the verse, each with itsstartandendcharacter position in the versetextand the quotedtext.passages[].verses[].footnotesWith
include_footnotes=true: the verse's footnotes, as a list of strings.passages[].verses[].wordsWith
include_strongs=true: the verse's words in order, each with itstextand itsstrongsnumbers, e.g.["G25"].passages[].previousThe reference just before the passage (the previous chapter when you request whole chapters), for "previous" navigation;
nullat the start of the translation.passages[].nextThe reference just after the passage (the next chapter when you request whole chapters), for "next" navigation;
nullat the end of the translation.warningsWhen relevant: a list of notices, each with a
codeand amessage, e.g. when a translation numbers a passage differently. See warning codes.
Live Demo
Code Examples
curl -X GET "https://api.api-ninjas.com/v1/bible?ref=John%203%3A16-17&translation=bsb" \
-H "X-Api-Key: YOUR_API_KEY"Formatted Response Example
With ref=Psalm 23:1-2, translation=web and include_formatting=true, each verse carries the psalm title and its poetry lines:
https://api.api-ninjas.com/v1/biblesearch
Searches the Bible by keyword, exact phrase, Strong's number or meaning, and finds verses that are close in meaning to a given verse. For "do not worry about tomorrow", it returns Matthew 6:34 and also verses that say the same thing in other words, such as Proverbs 27:1.
Parameters
Provide q or similar_to.
qoptionalWhat to search for, up to 500 characters: words, a
"quoted phrase",ORandNOT,word*for words starting withword, or a Strong's number such asG26orH7225.modeoptionalkeyword(verses with every word),phrase(the exact words in order),semantic(verses with the same meaning, even in different words) orhybrid(keyword and meaning combined). Defaulthybridfor English translations andkeywordfor the others. Meaning-based search understands English queries; other languages use keyword search.translationoptionalOne translation id from the translations table. Default
bsb.refoptionalSearch within books, chapters or ranges, e.g.
PsalmsorMatthew 5-7, or withinOTorNT.similar_tooptionalA reference, e.g.
John 3:16. Returns the verses closest in meaning to it, each with ascore.limitoptionalNumber of results to return (1-50). Default
10.offsetoptionalNumber of results to skip, for paging. Default
0.
Headers
X-Api-KeyrequiredAPI Key associated with your account.
Response
The /v1/biblesearch endpoint returns a JSON object with the following fields, or an error if the request is unsuccessful (see error codes).
queryThe search query, when
qis used.similar_toThe reference, when
similar_tois used.modeThe search mode used:
keyword,phrase,semantic,hybrid,strongs(a Strong's number search) orsimilar(asimilar_tosearch).translationThe translation searched: an object with the translation's
id,nameandlanguage(a language code such asen).totalThe total number of matching verses, for
keyword,phraseandstrongssearches. Use it withlimitandoffsetto page through the results.resultsThe matching verses, best match first (Strong's number searches in Bible order).
results[].referenceThe verse's reference, e.g.
Matthew 6:34.results[].bookThe book name in the translation's own language.
results[].book_codeThe standard three-character book code, e.g.
MAT.results[].chapterThe chapter number.
results[].verseThe verse number.
results[].textThe verse text.
results[].scoreFor
semanticandsimilar_tosearches: how close the verse is in meaning, where higher is closer (1 is the maximum).warningsWhen relevant: a list of notices, each with a
codeand amessage, e.g.PARTIAL_MATCHwhen no verse contains every word and verses with any of the words are shown. See warning codes.
Live Demo
Code Examples
curl -X GET "https://api.api-ninjas.com/v1/biblesearch?q=do%20not%20worry%20about%20tomorrow" \
-H "X-Api-Key: YOUR_API_KEY"https://api.api-ninjas.com/v1/bibleverify
Checks whether a quote is really in the Bible. It returns where the words actually are, the Bible text, a similarity score and a word-by-word comparison, and tells you when a quote is attributed to the wrong verse. With text, it finds every Bible reference in a block of text, such as an article, a sermon or an AI-generated answer, and checks the quotation written next to each one.
Parameters
Provide quote or text.
quoteoptionalThe quoted words to check, up to 2,000 characters. Three or more words give the most reliable result.
refoptionalThe reference the quote is attributed to, e.g.
John 3:16. When the words are at another reference, the verdict iswrong_reference.translationoptionalTranslation ids to check against, comma-separated, e.g.
kjvorkjv,web. Default: every translation in the quote's language.textoptionalA block of text up to 20,000 characters. Every reference written as book, chapter and verse (e.g.
John 3:16) is found and the quotation in quotation marks next to it is checked. Send long text with POST.
Headers
X-Api-KeyrequiredAPI Key associated with your account.
POST Requests
/v1/bibleverify also accepts POST with the same parameters as a JSON object in the request body, sent with the Content-Type: application/json header. Use it for long text:
{"text":"In John 3:16 we read: \"For God so loved the world that he gave his only Son.\""}
Response
The /v1/bibleverify endpoint returns a JSON object with the following fields for a quote, or with count and references for a text, or an error if the request is unsuccessful (see error codes).
quoteThe quote that was checked.
claimed_referenceWhen
refis sent: the claimed reference, in standard form.verdictThe result of the check:
Verdict Meaning exactThe quote matches a complete verse word for word. partialThe words are exact and cover part of a verse. minor_variationA few words differ from the Bible text. paraphraseThe meaning matches a verse, in different wording. wrong_referenceThe words are real, but they are at a different reference than ref.referencegives the real location.not_foundNo verse matches the quote. known_non_biblicalA popular saying that is not in the Bible, such as "God helps those who help themselves". noteexplains where it comes from.referenceWhere the words actually are;
nullfornot_foundandknown_non_biblical.translationThe translation of the closest match: an object with the translation's
id,nameandlanguage(a language code such asen).bible_textThe Bible text at
referencein that translation.similarityHow closely the words match
bible_text, from 0 to 1, where 1 is identical wording.meaning_similarityWhen the quote matches a verse by meaning rather than by wording: how close the meaning is, from 0 to 1.
similarityis thennull.diffA word-by-word comparison with
bible_text, as a list of runs:same(withtext),changed(with thequotewords and thebiblewords),missing(biblewords the quote leaves out) andextra(quotewords that are not in the Bible text). Omitted for exact matches.other_matchesUp to three matches in other translations, each with its
reference,translationid andsimilarity.noteAn explanation, when useful, e.g. where a known non-biblical saying comes from.
countWith
text: the number of references found.referencesWith
text: every reference found, in the order they appear.references[].referenceThe reference, in standard form.
references[].startThe character position in
textwhere the reference starts.references[].endThe character position in
textjust after the reference.references[].matched_textThe reference as written in
text.references[].validtruewhen the reference exists, e.g.falseforJohn 22:1.references[].noteWhen
validisfalse: why, e.g.John has 21 chapters.references[].quoteThe quotation next to the reference, or
null.references[].verificationThe check of that quotation, with the same fields as a
quotecheck, ornullwhen there is no quotation next to the reference.
Live Demo
Code Examples
curl -X GET "https://api.api-ninjas.com/v1/bibleverify?quote=For%20God%20so%20loved%20the%20world%20that%20he%20gave%20his%20one%20and%20only%20Son&ref=Romans%203%3A23" \
-H "X-Api-Key: YOUR_API_KEY"POST Code Examples
curl -X POST "https://api.api-ninjas.com/v1/bibleverify" \
-H "X-Api-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"In John 3:16 we read: \"For God so loved the world that he gave his only Son.\""}'Text Check Response Example
The response to the POST example above:
Errors and Warnings
An invalid request returns HTTP 400 with a JSON body holding a readable error message and a code you can handle in your app, e.g. {"error": "John has 21 chapters.", "code": "INVALID_REFERENCE"}. Authentication and quota errors use the standard format described in error codes.
| Code | Meaning |
|---|---|
MISSING_PARAMETER | A required parameter is missing, e.g. ref, q or quote. |
INVALID_PARAMETER | A parameter value is not valid, e.g. a date that is not YYYY-MM-DD or a limit above 50. |
INVALID_REFERENCE | The reference could not be read or does not exist, e.g. John 22:1. The message says why. |
AMBIGUOUS_REFERENCE | The book name could mean more than one book. The message lists them; use a longer name. |
UNKNOWN_TRANSLATION | The translation id is not in the translations table. The message lists every valid id. |
TOO_MANY_TRANSLATIONS | More than 5 translations in one /v1/bible call, or more than one in /v1/biblesearch. |
TOO_MANY_REFERENCES | More than 10 references in one call. |
RANGE_TOO_LARGE | More than 2,600 verses per translation in one call (any single book fits, including Psalms). Request fewer verses or translations per call. |
BOOK_NOT_IN_TRANSLATION | The translation does not include the book, e.g. Tobit in bsb or Genesis in tr. The translations table lists the books in each translation. |
INVALID_QUERY | The search query in q could not be read. |
SEMANTIC_NOT_AVAILABLE | mode=semantic or similar_to was used with a translation that meaning-based search does not cover. Use an English translation such as bsb, kjv or web. |
STRONGS_NOT_AVAILABLE | A Strong's number search in a translation without Strong's numbers. Use bsb, kjv, web, asv, wlc, tr or byz. |
INVALID_BODY | The POST body is not a JSON object. |
NOT_FOUND | No verses were found for the request. |
INTERNAL_ERROR | Something went wrong on our side. Please try again. |
A successful /v1/bible or /v1/biblesearch response can include warnings, each with one of these codes and a message:
| Code | Meaning |
|---|---|
VERSE_NOT_IN_TRANSLATION | The translation leaves out some verses in the range or numbers them differently. The other verses are returned. |
NUMBERING_DIFFERS | The translation numbers some chapters or verses of the book differently from most English Bibles. References are read in its own numbering. |
BOOK_NOT_IN_TRANSLATION | One of the requested translations does not include the book. Passages from the other translations are returned. |
RANGE_CLAMPED | The range went past the end of the chapter or book and was shortened to the last verse. |
PARTIAL_VERSE | A partial verse such as 16a was requested; the whole verse is returned. |
OPEN_RANGE | ff (e.g. John 3:16ff) was read as "to the end of the chapter". |
PARTIAL_MATCH | No verse contains every search word, so verses with any of the words are shown. |
SEMANTIC_NOT_AVAILABLE | Meaning-based search does not cover the translation, so hybrid returned keyword results. |
Frequently Asked Questions
Can I use the Bible API for commercial purposes?
Yes, but you must have a premium subscription. Commercial use of the Bible API is not permitted on the free tier. See our pricing page to choose a plan that fits your needs.How do I get an API key and start using the Bible API?
Sign up for a free account to instantly get your API key, then pass it in theX-Api-Keyheader on every request. The documentation above includes ready-to-run examples in cURL, Python, JavaScript, Node.js, and more.What happens if I exceed my quota for the month?
Your API requests will simply be denied once you hit your monthly quota — you will never be charged more than the plan you signed up for. To increase your quota, you can upgrade your plan any time on our pricing page.What happens if a request to the Bible API fails?
The API responds with a standard HTTP status code and a JSON error message describing the problem. See our error codes reference for the full list of codes and how to resolve each one, or contact support if you need help.Which Bible translations does the Bible API include?
Over 35 translations in 20 languages, all in the public domain: English translations including the King James Version (kjv), the Berean Standard Bible (bsb, the default), the World English Bible (web), the American Standard Version (asv), Young's Literal Translation (ylt) and the Douay-Rheims (dra); the Reina-Valera 1909, Louis Segond 1910, Luther Bibel 1912, Chinese Union Version, Synodal, Korean, Arabic, Portuguese, Vietnamese and other translations; the Latin Vulgate; and the Hebrew Old Testament and Greek New Testament. The translations table lists every id, language and the books each one includes.How do I get a Bible verse or passage?
Call/v1/bible?ref=John 3:16.refaccepts single verses, ranges (1 Cor 13:4-7), whole chapters (Psalm 23), whole books (Ruth) and lists of up to 10 references (John 3:16, 18; 4:1-6), with book names and abbreviations in English or in the language of the translation. Addtranslation=bsb,kjvto compare up to five translations side by side, andinclude_formatting=truefor headings, paragraphs and poetry lines.Is there a Bible verse of the day API?
Yes./v1/bible?daily=truereturns the verse of the day: the same verse for every caller on a given date, so all your users see the same verse. Passtz(e.g.America/New_York) to change the verse at local midnight,dateto get the verse for another day, andtranslationto choose the translation.random=truereturns a random verse instead, from the whole Bible or from a book, chapter or testament given inref.Can I search the Bible by topic or meaning?
Yes./v1/biblesearchsearches by keyword or exact phrase in every translation, by Strong's number (e.g.G26), and by meaning for English queries:q=do not worry about tomorrowreturns Matthew 6:34 and verses that say the same thing in other words.similar_to=John 3:16returns the verses closest in meaning to a verse, andrefnarrows any search to a book, a chapter range or one testament.How does the Bible quote checker work?
/v1/bibleverifytakes aquoteand, optionally, therefit is attributed to. It returns a verdict (exact,partial,minor_variation,paraphrase,wrong_reference,not_foundorknown_non_biblical), where the words really are, the Bible text, a similarity score and a word-by-word comparison. Send a whole article, sermon or AI-generated answer astext(up to 20,000 characters, with POST) to check every quoted reference in it at once. Popular sayings such as "God helps those who help themselves" are flagged as not in the Bible, with a note on where they come from.Is the Bible API available on the free plan?
Yes. Every Bible API endpoint and parameter is available on every plan, including the free plan, and each request counts as one call against your monthly quota. See the pricing page for plan quotas.
Explore API integration use cases for recommended APIs and workflow examples.