Simple Cohort
Free Bible API

API Documentation

Authentication

The Bible API offers free access to all Bible text data. No API key is required for basic usage.

Free Access
curl "https://bible.simplecohortllc.com/api/v1/chapters/KJV/John/3"

To access Red Letter data (Jesus' words highlighting), include your API key in the x-api-key header.

With Subscription
curl -H "x-api-key: bible_live_xxxxxxxxxxxx" \
  "https://bible.simplecohortllc.com/api/v1/chapters/KJV/John/3"

Rate Limits

Rate limits apply to subscribers only. Free access has no rate limits. The following headers are included in authenticated responses:

  • X-RateLimit-Limit - Your daily request limit
  • X-RateLimit-Remaining - Requests remaining today
  • X-RateLimit-Reset - When your limit resets (ISO 8601)
PlanDaily LimitRed Letter Data
Free (no key)UnlimitedNo
Standard ($9.99/mo)1,000 requestsYes
Unlimited ($49.99/mo)UnlimitedYes

Red Letter Data

The jesusWordsRanges field contains an array of character ranges indicating where Jesus speaks in each verse. Each range has a start and end index (0-based, exclusive end).

Subscription Required: Red letter data is only included in responses when you authenticate with a valid API key. Responses include a hasRedLetterAccess field indicating whether red letter data is available.

Note: Red letter data (jesusWordsRanges) is currently only available for KJV and ESV translations.

Example: To highlight Jesus' words in your application:

React
function VerseText({ text, jesusWordsRanges }) {
  if (!jesusWordsRanges?.length) return <span>{text}</span>;

  const parts = [];
  let lastEnd = 0;

  jesusWordsRanges.forEach(({ start, end }, i) => {
    if (start > lastEnd) {
      parts.push(<span key={`text-${i}`}>{text.slice(lastEnd, start)}</span>);
    }
    parts.push(
      <span key={`jesus-${i}`} style={{ color: '#F44336' }}>
        {text.slice(start, end)}
      </span>
    );
    lastEnd = end;
  });

  if (lastEnd < text.length) {
    parts.push(<span key="text-end">{text.slice(lastEnd)}</span>);
  }

  return <>{parts}</>;
}

List Translations

GET/api/v1/translations

Get a list of all available Bible translations. Free to use without an API key.

Example Request

bash
# Free access (no API key required)
curl "https://bible.simplecohortllc.com/api/v1/translations"

Example Response

json
{
  "data": [
    { "id": 1, "name": "King James Version", "abbreviation": "KJV" },
    { "id": 2, "name": "English Standard Version", "abbreviation": "ESV" },
    { "id": 3, "name": "New International Version", "abbreviation": "NIV" }
  ]
}

List Books

GET/api/v1/translations/:translation/books

Get all books with their chapter counts for a specific translation. Free to use without an API key.

Parameters

NameDescription
translationTranslation abbreviation (e.g., KJV, ESV)

Example Request

bash
# Free access (no API key required)
curl "https://bible.simplecohortllc.com/api/v1/translations/KJV/books"

Example Response

json
{
  "data": {
    "Genesis": [1, 2, 3, ... 50],
    "Exodus": [1, 2, 3, ... 40],
    "Matthew": [1, 2, 3, ... 28],
    ...
  }
}

Get Chapter

GET/api/v1/chapters/:translation/:book/:chapter

Get all verses in a chapter with groupings and summaries. Red letter data (jesusWordsRanges) requires a subscription.

Parameters

NameDescription
translationTranslation abbreviation (e.g., KJV)
bookBook name (e.g., John, Genesis)
chapterChapter number

Example Request

bash
# Free access (text only)
curl "https://bible.simplecohortllc.com/api/v1/chapters/KJV/John/3"

# With subscription (includes red letter data)
curl -H "x-api-key: YOUR_API_KEY" \
  "https://bible.simplecohortllc.com/api/v1/chapters/KJV/John/3"

Example Response

json
{
  "data": {
    "translation": "KJV",
    "book": "John",
    "chapter": 3,
    "verses": [
      {
        "verse": 1,
        "text": "There was a man of the Pharisees...",
        "jesusWordsRanges": null
      },
      {
        "verse": 16,
        "text": "For God so loved the world, that he gave his only begotten Son...",
        "jesusWordsRanges": [{ "start": 0, "end": 147 }]
      }
    ],
    "groupings": {
      "groups": [
        {
          "title": "You Must Be Born Again",
          "verses": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],
          "description": "Nicodemus visits Jesus at night..."
        },
        {
          "title": "For God So Loved the World",
          "verses": [16, 17, 18, 19, 20, 21],
          "description": "Jesus explains God's love for the world..."
        }
      ],
      "summary": "This chapter contains Jesus' conversation with Nicodemus..."
    },
    "hasRedLetterAccess": true
  }
}

Get Verse

GET/api/v1/verses/:translation/:book/:chapter/:verse

Get a specific verse with its text. Red letter data (jesusWordsRanges) requires a subscription.

Parameters

NameDescription
translationTranslation abbreviation
bookBook name
chapterChapter number
verseVerse number

Example Request

bash
# Free access (text only)
curl "https://bible.simplecohortllc.com/api/v1/verses/KJV/John/3/16"

# With subscription (includes red letter data)
curl -H "x-api-key: YOUR_API_KEY" \
  "https://bible.simplecohortllc.com/api/v1/verses/KJV/John/3/16"

Example Response

json
{
  "data": {
    "book": "John",
    "chapter": 3,
    "verse": 16,
    "translation": "KJV",
    "text": "For God so loved the world, that he gave his only begotten Son, that whosoever believeth in him should not perish, but have everlasting life.",
    "jesusWordsRanges": [{ "start": 0, "end": 147 }]
  },
  "hasRedLetterAccess": true
}