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.
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.
No input parameters required.
curl -X GET 'https://api.parse.bot/scraper/1ba7ed15-17f2-498a-9868-3d12d45a6d66/list_books' \ -H 'X-API-Key: $PARSE_API_KEY'
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")
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.
No input parameters required.
{
"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.
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.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Render daily Scripture readings by fetching a specific passage with
get_passageand displaying theversesarray. - Build a concordance tool by querying
search_biblewith a theological term and paging through all matching references. - Populate a book-picker UI using
list_booksto display genre and testament groupings. - Filter search results to only the New Testament by passing
testament=NTtosearch_bible. - Validate and normalize user-entered Scripture references by checking them against the
aliasesfield fromlist_books. - Generate chapter summaries by retrieving full chapter text via
get_passagewith a chapter-level reference. - Cross-reference a topic by searching one book at a time using the
bookparameter ofsearch_bibleand comparingtotalacross books.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 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.
Does Preachplan.com have an official public developer API?+
What does `get_passage` return for cross-chapter references like Genesis 1:31-2:3?+
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?+
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?+
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.