openstax.org APIopenstax.org ↗
Access structured data from 60+ OpenStax textbooks: book metadata, full table of contents, and learning outcomes organized by chapter and section.
curl -X GET 'https://api.parse.bot/scraper/97903193-4df4-40f4-8924-422c78e72ed7/list_books?subject=Science' \ -H 'X-API-Key: $PARSE_API_KEY'
List all available OpenStax textbooks with their titles, slugs, subjects, and content IDs. Optionally filter by subject area. Returns only books with 'live' or 'new_edition_available' state.
| Param | Type | Description |
|---|---|---|
| subject | string | Filter by subject area. Case-insensitive partial match against book subjects. Common values include 'Business', 'Science', 'Math', 'Social Sciences', 'Humanities', 'Computer Science'. If omitted or empty, returns all live books. |
{
"type": "object",
"fields": {
"books": "array of {title, slug, subjects, cnx_id, book_state}",
"total": "integer total count of books returned"
},
"sample": {
"data": {
"books": [
{
"slug": "biology-2e",
"title": "Biology 2e",
"cnx_id": "8d50a0af-948b-4204-a71d-4826cba765b8",
"subjects": [
"Science"
],
"book_state": "live"
},
{
"slug": "chemistry-2e",
"title": "Chemistry 2e",
"cnx_id": "7fccc9cf-9b71-44f6-800b-f9457fd64335",
"subjects": [
"Science"
],
"book_state": "live"
}
],
"total": 2
},
"status": "success"
}
}About the openstax.org API
The OpenStax API gives programmatic access to 60+ free textbooks across Business, Science, Math, Social Sciences, Humanities, Computer Science, and Nursing. Three endpoints cover book discovery, table-of-contents retrieval, and learning-outcome extraction. The get_learning_outcomes endpoint returns verbatim objective statements organized by chapter and section, with an optional chapter filter to scope results for large books.
Book Discovery
The list_books endpoint returns all textbooks currently in a live or new_edition_available state. Each record includes the book title, URL slug, subjects array, cnx_id (the OpenStax content identifier), and book_state. An optional subject parameter accepts a case-insensitive partial match, so filtering by 'Science' returns Biology, Chemistry, Physics, and related titles without requiring an exact string.
Table of Contents
get_book_toc accepts a book_slug from list_books and returns the full chapter-section hierarchy. The chapters array nests section objects, each carrying a title and slug. The response also echoes book_title and subjects so callers can confirm they fetched the right book without a separate lookup. Large books like *University Physics* return dozens of chapters and hundreds of sections.
Learning Outcomes
get_learning_outcomes is the most data-dense endpoint. For each section that has defined objectives, it returns the verbatim learning_outcomes strings alongside section_title and section_slug. The response includes total_learning_outcomes and total_sections_with_outcomes counts at the top level. Because some books (Anatomy & Physiology, for example) carry hundreds of objectives, the optional chapter parameter—an integer string like '3'—limits the response to a single chapter. The chapter_filter field in the response confirms which filter was applied, or returns null when all chapters are included.
- Build a curriculum-alignment tool by mapping
learning_outcomesstrings to course standards across subjects. - Generate a structured study guide for any OpenStax book using the nested chapters and sections from
get_book_toc. - Populate a course catalog or LMS with accurate book metadata (title, slug, subjects, cnx_id) from
list_books. - Create chapter-by-chapter quiz banks derived from verbatim learning objective statements.
- Filter OpenStax books by subject area to programmatically build reading lists for a specific discipline.
- Track which sections have defined learning outcomes versus those that do not, using
total_sections_with_outcomesagainst the total section count. - Sync OpenStax TOC structure into a knowledge graph or ontology for academic research tooling.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 250 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does OpenStax have an official developer API?+
What does `get_learning_outcomes` actually return, and how granular is it?+
section_title, section_slug, and a learning_outcomes array of verbatim objective strings exactly as they appear in the textbook. The top-level fields total_learning_outcomes and total_sections_with_outcomes give aggregate counts for the full book (or filtered chapter) without having to iterate the nested structure.Can I retrieve the full text or page content of a textbook section?+
Are retired or draft OpenStax books included in `list_books` results?+
list_books filters to books with a book_state of live or new_edition_available only. Retired editions and unpublished drafts are excluded. If you need to track a specific older edition, you can fork the API on Parse and revise the state filter to include additional book states.