Discover/Preachplan API
live

Preachplan APIpreachplan.com

Access all 66 books of the Berean Standard Bible via 3 endpoints: list books, fetch passages by reference, and search verse text with filters.

Endpoint health
verified 3h ago
list_books
get_passage
search_bible
3/3 passing latest checkself-healing
Endpoints
3
Updated
4h ago

What is the Preachplan API?

The Preachplan.com API exposes the full Berean Standard Bible text across 3 endpoints, covering all 66 canonical books. Use get_passage to retrieve any verse, chapter, or cross-chapter range by reference string, search_bible to run case-insensitive substring queries across the entire text or filtered by book or testament, and list_books to get canonical metadata including genre, testament, chapter counts, and accepted abbreviations.

This call costs3 credits / call— charged only on success
Try it

No input parameters required.

api.parse.bot/scraper/1ba7ed15-17f2-498a-9868-3d12d45a6d66/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/1ba7ed15-17f2-498a-9868-3d12d45a6d66/list_books' \
  -H 'X-API-Key: $PARSE_API_KEY'
Python SDK · recommended

Typed, relational, agent-ready

A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.

  • Fully typed · autocompletes
  • Objects link to objects
  • Typed errors & pagination

Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:

uv add parse-sdk
uv run parse init
uv run parse add --marketplace preachplan-com-api

uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.

"""Walkthrough: Preach Plan Bible API — look up passages, search verses, list books."""
from parse_apis.preachplan_com_api import Bible, Testament, InputFormatInvalid

client = Bible()

# List the first few books of the Bible in canonical order.
for book in client.books.list(limit=5):
    print(f"{book.order}. {book.name} ({book.testament}, {book.genre}) — {book.chapters} chapters")

# Fetch a well-known passage by reference and read its verses.
try:
    passage = client.passages.get(reference="Psalm 23")
except InputFormatInvalid:
    print("Invalid reference — check book name and verse range")
else:
    print(passage.reference, f"({passage.verse_count} verses)")
    for v in passage.verses:
        print(f"  {v.chapter}:{v.verse}  {v.text[:90]}")

# Search for verses containing a keyword, scoped to the Old Testament.
hit = client.matches.search(query="shepherd", testament=Testament.OT, limit=1).first()
if hit is not None:
    # Drill into the full passage that contains the matched verse.
    full = client.passages.get(reference=hit.reference)
    print(full.reference, "—", full.text[:120])

print("exercised: books.list / passages.get / matches.search")
All endpoints · 3 totalmissing one? ·

Returns the 66 books of the Bible in canonical order, each with its name, testament (OT/NT), literary genre, chapter count, and the abbreviations accepted by get_passage and search_bible. One fixed round trip; the result never pages and is never empty.

Input

No input parameters required.

Response
{
  "type": "object",
  "fields": {
    "books": "array of books in canonical order: order (1-66), name, testament (OT|NT), genre, chapters (count), aliases (accepted abbreviations)",
    "total": "number of books returned (66)",
    "translation": "Bible translation code the text comes from (BSB)"
  },
  "sample": {
    "data": {
      "books": [
        {
          "name": "Genesis",
          "genre": "law",
          "order": 1,
          "aliases": [
            "gen",
            "ge",
            "gn"
          ],
          "chapters": 50,
          "testament": "OT"
        },
        {
          "name": "Revelation",
          "genre": "apocalyptic",
          "order": 66,
          "aliases": [
            "rev",
            "re",
            "rv",
            "apocalypse",
            "revelations"
          ],
          "chapters": 22,
          "testament": "NT"
        }
      ],
      "total": 66,
      "translation": "BSB"
    },
    "status": "success"
  }
}

About the Preachplan API

Bible Text and Book Metadata

The list_books endpoint returns all 66 books in canonical order (Genesis through Revelation). Each entry includes the book's name, canonical position (1–66), testament (OT or NT), literary genre, total chapter count, and the abbreviation aliases that get_passage and search_bible accept as input. The response always returns exactly 66 books with no pagination and a translation field confirming the BSB source.

Passage Retrieval

The get_passage endpoint accepts a reference string in several shapes: a whole chapter (Genesis 1), a chapter range (Genesis 1-2), a single verse (John 3:16), a verse range within a chapter (Psalm 23:1-6), or a cross-chapter range (Genesis 1:31-2:3). Single-chapter books like Jude can omit the chapter number. The response returns each verse as a structured array (chapter, verse, text), a joined text string for the full passage, the resolved book object with its full metadata, start_chapter, end_chapter, start_verse, end_verse, verse_count, and a canonical reference string with en-dash ranges.

Verse Search

The search_bible endpoint matches a query string as a case-insensitive substring against all verse text. Results arrive in canonical order, one object per matching verse, each with its reference, book, testament, chapter, verse, and text fields. You can narrow the scope using the optional book parameter (any name or abbreviation from list_books) or the testament parameter. Pagination is handled via offset and limit (capped at 200 per call); the total, has_more, and books_searched fields let you drive subsequent pages. Note that broad searches with no book or testament filter scan all 66 books, which affects response time.

Reliability & maintenanceVerified

The Preachplan API is a managed, monitored endpoint for preachplan.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when preachplan.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.

This isn't an official preachplan.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.

Last verified
3h ago
Latest check
3/3 endpoints passing
Maintenance
Monitored & self-healing
Will this API break when the source site changes?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • Render daily Scripture readings by fetching a specific passage with get_passage and displaying the verses array.
  • Build a concordance tool by querying search_bible with a theological term and paging through all matching references.
  • Populate a book-picker UI using list_books to display genre and testament groupings.
  • Filter search results to only the New Testament by passing testament=NT to search_bible.
  • Validate and normalize user-entered Scripture references by checking them against the aliases field from list_books.
  • Generate chapter summaries by retrieving full chapter text via get_passage with a chapter-level reference.
  • Cross-reference a topic by searching one book at a time using the book parameter of search_bible and comparing total across books.
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo2005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 req/min
Team$300/mo20,000300 req/min
Company$1,000/mo100,000500 req/min

Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.

Frequently asked questions
Does Preachplan.com have an official public developer API?+
Preachplan.com does not publish an official developer API or documentation for third-party access to its Bible text data.
What does `get_passage` return for cross-chapter references like Genesis 1:31-2:3?+
It returns a verses array covering every verse from Genesis 1:31 through Genesis 2:3, each with chapter, verse, and text fields. The response also includes start_chapter (1), end_chapter (2), start_verse (31), end_verse (3), a verse_count, and a canonical reference string. The text field joins all matching verses into one string.
Does `search_bible` return the full verse text or just references?+
Each result in the results array includes the full text of the matching verse alongside its reference, book, testament, chapter, and verse fields. You do not need a second call to retrieve the verse content.
Is any Bible translation other than the Berean Standard Bible available?+
The API currently serves only the Berean Standard Bible (BSB), confirmed by the translation field in every response. You can fork this API on Parse and revise it to add endpoints pointing to other public-domain translation sources.
Can I retrieve commentary, cross-references, or Strong's numbers alongside verse text?+
Not currently. The API returns verse text, structural metadata (book, chapter, verse, testament, genre), and passage range fields. It does not expose commentary, cross-references, or lexical data. You can fork the API on Parse and revise it to add an endpoint covering that content.
Page content last updated . Spec covers 3 endpoints from preachplan.com.
Related APIs in OtherSee all →