The Bible API
A free, public REST API for programmatic access to the Bible. All responses are JSON.
Introduction
The Bible API is a serverless REST API hosted on Netlify. It exposes a small, predictable set of endpoints for retrieving books, chapters, individual verses, running full-text search, and fetching a rotating verse of the day.
Responses are returned as JSON with a consistent schema across every translation, making integration predictable and easy to reason about.
Base URL
https://thebibleapi.netlify.app
All function endpoints are prefixed with
/.netlify/functions/.
Authentication
None. The API is fully public - no keys, tokens, or sign-up required.
Available Translations
The Bible API supports 40+ Bible translations in multiple
languages. Pass the
translation query parameter to any endpoint to select
a translation. If omitted, the default is web (World
English Bible). If the requested translation is not found, the API
falls back to web.
| Language | Translation Name | Code |
|---|---|---|
| English | King James Version | kjv |
| English | World English Bible | web |
| English | American Standard Version | asv |
| English | Bible in Basic English | bbe |
| English | Darby Bible | darby |
| English | Douay-Rheims | dra |
| English | Young's Literal Translation | ylt |
| English | Open English Bible (US) | oeb-us |
| English | Open English Bible (Commonwealth) | oeb-cw |
| English (UK) | World English Bible (British) | webbe |
| Language | Translation Name | Code |
|---|---|---|
| Czech | Bible kralická | bkr |
| German | Luther Bible 1912 | luther1912 |
| French | French Ostervald | ostervald |
| Italian | Riveduta Bible | riveduta |
| Portuguese | João Ferreira de Almeida | almeida |
| Spanish | Reina-Valera 1909 | rv1909 |
| Romanian | Romanian Cornilescu | rccv |
| Russian | Russian Synodal | synodal |
| Albanian | Albanian Bible | albanian |
| Bulgarian | Bulgarian Bible | bulgarian |
| Croatian | Croatian Bible | croatian |
| Danish | Danish Bible | danish |
| Dutch | Statenvertaling | statenvertaling |
| Finnish | Finnish Bible | finnish |
| Hungarian | Károli Bible | karoli |
| Latvian | Latvian Bible | latvian |
| Norwegian | Norwegian Bible | norwegian |
| Polish | Biblia Gdańska | gdanska |
| Swedish | Swedish Bible | swedish |
| Latin | Clementine Vulgate | clementine |
| Welsh | Cadman Bible | cadman |
| Language | Translation Name | Code |
|---|---|---|
| Chinese | Chinese Union Version | cuv |
| Chinese (Simplified) | Chinese Union Version (Simplified) | cuv-simp |
| Japanese | Kougo-yaku | kougo |
| Korean | Korean Bible | korean |
| Thai | Thai Bible | thai |
| Tagalog | Tagalog Bible | tagalog |
| Turkish | Turkish Bible | turkish |
| Language | Translation Name | Code |
|---|---|---|
| Cherokee | Cherokee New Testament | cherokee |
| Maori | Maori Bible | maori |
| Swahili | Swahili Bible | swahili |
Usage
fetch('https://thebibleapi.netlify.app/.netlify/functions/getVerse?book=John&chapter=3&verse=16&translation=luther1912')
.then(r => r.json())
.then(console.log);
Translation Coverage
Each translation in The Bible API targets the 66 canonical books of the Protestant Bible. Coverage indicates how many of those 66 books are currently available for a given translation. Translations are grouped by completeness so you can quickly choose what fits your use case.
No translations match your search.
Production-ready - all 66 canonical books available.
Nearly complete - a small number of books may return 404.
| Status | Name | Code | Coverage | Missing |
|---|
Significant gaps - many books will return 404. Use only when the specific language is required.
| Status | Name | Code | Coverage | Missing books |
|---|
Errors
The API uses standard HTTP status codes:
| Status | Meaning |
|---|---|
200 |
Success |
400 |
Bad request - a required parameter is missing or malformed |
404 |
Not found - the requested book, chapter, or verse does not exist |
500 |
Server error |
Error responses look like:
{
"error": "Book not found",
"status": 404
}
GET /getBooks
Returns the full list of available books.
Query parameters
| Name | Type | Required | Description |
|---|---|---|---|
translation |
string | No | Translation code (default: web) |
Request
fetch('https://thebibleapi.netlify.app/.netlify/functions/getBooks?translation=kjv')
.then(r => r.json())
.then(console.log);
Response
{
"translation": "kjv",
"available_translations": ["kjv", "web", "asv", ...],
"count": 66,
"books": [
{ "name": "Genesis", "chapters": 50 },
{ "name": "Exodus", "chapters": 40 },
...
]
}
GET /getChapter
Returns every verse in a specific chapter.
Query parameters
| Name | Type | Required | Description |
|---|---|---|---|
book |
string | Yes |
Book name (case-insensitive), e.g. Genesis
|
chapter |
integer | Yes | 1-based chapter number |
translation |
string | No | Translation code (default: web) |
Request
fetch('https://thebibleapi.netlify.app/.netlify/functions/getChapter?book=Genesis&chapter=1&translation=almeida')
.then(r => r.json())
.then(console.log);
Response
{
"book": "Genesis",
"chapter": 1,
"translation": "ALMEIDA",
"verses": [
"No princípio criou Deus os céus e a terra.",
"A terra era sem forma e vazia; ..."
]
}
GET /getVerse
Returns a single verse.
Query parameters
| Name | Type | Required | Description |
|---|---|---|---|
book |
string | Yes | Book name (case-insensitive) |
chapter |
integer | Yes | 1-based chapter number |
verse |
integer | Yes | 1-based verse number |
translation |
string | No | Translation code (default: web) |
Request
fetch('https://thebibleapi.netlify.app/.netlify/functions/getVerse?book=John&chapter=3&verse=16&translation=kjv')
.then(r => r.json())
.then(console.log);
Response
{
"book": "John",
"chapter": 3,
"verse": 16,
"translation": "KJV",
"text": "For God so loved the world, that he gave his only begotten Son..."
}
GET /search
Full-text search across all loaded books.
Query parameters
| Name | Type | Required | Description |
|---|---|---|---|
q |
string | Yes | Search query (case-insensitive) |
limit |
integer | No | Maximum results (default 50, max 200) |
translation |
string | No | Translation code (default: web) |
Request
fetch('https://thebibleapi.netlify.app/.netlify/functions/search?q=light&limit=5&translation=kjv')
.then(r => r.json())
.then(console.log);
Response
{
"query": "light",
"translation": "kjv",
"count": 5,
"results": [
{ "book": "Genesis", "chapter": 1, "verse": 3, "text": "And God said, Let there be light..." }
]
}
GET /verseOfDay
Returns a deterministic verse based on the current date (UTC).
Query parameters
| Name | Type | Required | Description |
|---|---|---|---|
translation |
string | No | Translation code (default: web) |
Request
fetch('https://thebibleapi.netlify.app/.netlify/functions/verseOfDay?translation=kjv')
.then(r => r.json())
.then(console.log);
Response
{
"date": "2026-04-30",
"book": "John",
"chapter": 3,
"verse": 16,
"translation": "KJV",
"text": "For God so loved the world..."
}
Interactive Playground
Test Bible API endpoints in real time with structured inputs and live responses.
Open PlaygroundLicensing & Attribution
The Bible API codebase is authored and maintained by Rithik Ronald. Bible text content remains under the licenses of its respective translations. See the dedicated licensing page for full details and per-translation attribution.