Jellybooks Excerpts API

We supply a simple API to acquire excerpt links. There are three methods for fetching excerpt links:

  1. Full excerpts feed
  2. Excerpt updates feed
  3. Individual ISBN lookup

Excerpts Feed API

We currently provide a single API to fetch the entire list of excerpts that Jellybooks has available at the time of the request.

We advise requesting this list once a week in order to keep up-to-date with updates and new publications.

Note: the Feed API has different default behaviour for publisher clients. By default the feed is filtered to list only those titles published by the publisher client.

All other client types (eg booksellers) will not have a publisher filter applied.

Authentication

We grant access to the API via an API key. The key can be passed as a header or URL param.

Header JB-Discovery-Api-Key
Param ?jb_discovery_api_key={api_key}

Request

GET /discovery/api/excerpts
[application/json]
            

Note: it is important that you set the Accept header to Accept: application/json.

Options

language_code

Filters publications to return those that have a matching language code. The language_code value should correspond to the ISO 639-1 two-letter format.

If option is not passed (ie unset) then all publications will be returned regardless of their language.

Default: unset

Note: see section "Jellybooks Web Reader UI language" if you need to ensure the User Interface is also displayed in a preferred language.

Response

[application/json]

object
  response_header  object
    generated_at     datetime
    page             number
    per_page         number
    count            number
    total_count      number
  excerpts         array
    object
      isbn13         string
      title          string
      url            string
      created_at     datetime
            
Example
[REQUEST]
curl https://www.jellybooks.com/discovery/api/excerpts?jb_discovery_api_key={api_key} \
-H 'Accept: application/json' \
--compressed

[RESPONSE]
{
    "response_header": {
        "generated_at": "2022-04-25T13:21:55.742+00:00",
        "page": 1,
        "per_page": 1000000,
        "count": 92887,
        "total_count": 92887
    },
    "excerpts": [
        {
            "isbn13": "9781909954342",
            "title": "Virgin & Child",
            "url": "https://www.jellybooks.com/cloud_reader/excerpts/virgin-child_9781909954342-ex/L3Leb",
            "created_at": "2021-01-15T20:24:02.038Z"
        },
        {
            "isbn13": "9781909954410",
            "title": "Angelica, Paintress of Minds",
            "url": "https://www.jellybooks.com/cloud_reader/excerpts/angelica-paintress-of-minds_9781909954410-ex/L3Leb",
            "created_at": "2021-01-15T20:24:27.548Z"
        },
        ...
        // thousands of entries...
        ...
    ]
}
            

A note about related products

The API lists an excerpt item per ISBN. There are many instances where we have multiple ISBNs for a given publication, eg ebook, hardback and paperback. In such instances, we output the same excerpt URL for each publication variant. For example:

...
{
    "isbn13": "9780241590294",
    "title": "DK Eyewitness Top 10 Provence and the Cote d'Azur",
    "url": "https://www.jellybooks.com/cloud_reader/excerpts/dk-eyewitness-top-10-provence-and-the-cote-d-azur_9780241590287-ex/bwells",
    "created_at": "2022-04-13T10:01:26.894Z"
},
{
    "isbn13": "9780241472194",
    "title": "DK Eyewitness Top 10 Provence and the Cote d'Azur",
    "url": "https://www.jellybooks.com/cloud_reader/excerpts/dk-eyewitness-top-10-provence-and-the-cote-d-azur_9780241590287-ex/bwells",
    "created_at": "2022-04-13T10:01:26.894Z"
},
...
            

Excerpt Changes Feed API

The Excerpt Changes Feed API provides a list of excerpts that have been added or updated since a given date.

This API is useful for more advanced API consumers who prefer to keep their database of excerpts up to date by only fetching details for those that have changed, rather than having to fetch the entire list of excerpts every time.

Request

GET /discovery/api/excerpt_updates
[application/json]
            

Note: it is important that you set the Accept header to Accept: application/json.

Options

updated_since

Returns excerpts that have been changed on/after the updated_since date.

Can be a date coded as a ISO 8601 string.

Default: 7 days prior to current date.

Note: this is a maximum limit of 14 days prior to current date.

language_code

Filters publications to return those that have a matching language code. The language_code value should correspond to the ISO 639-1 two-letter format.

If option is not passed (ie unset) then all publications will be returned regardless of their language.

Default: unset

Note: see section "Jellybooks Web Reader UI language" if you need to ensure the User Interface is also displayed in a preferred language.

Response

[application/json]

object
  response_header  object
    generated_at     datetime
    page             number
    per_page         number
    count            number
    total_count      number
  excerpts         array
    object
      isbn13         string
      title          string
      url            string
      updated_at     datetime
      available      boolean
      update_reason  string
            
Example
[REQUEST]
curl https://www.jellybooks.com/discovery/api/excerpt_updates?jb_discovery_api_key={api_key}&updated_since=2023-03-19 \
-H 'Accept: application/json' \
--compressed

[RESPONSE]
{
    "response_header": {
        "generated_at": "2023-03-26T20:28:13.908+00:00",
        "page": 1,
        "per_page": 1000000,
        "count": 123,
        "total_count": 123
    },
    "excerpts": [
        {
            "isbn13": "9781909954342",
            "title": "Virgin & Child",
            "url": "https://www.jellybooks.com/cloud_reader/excerpts/virgin-child_9781909954342-ex/L3Leb",
            "updated_at": "2023-03-23T20:24:02.038Z",
            "available": true,
            "update_reason": "added"
        },
        {
            "isbn13": "9781909954410",
            "title": "Angelica, Paintress of Minds",
            "url": "https://www.jellybooks.com/cloud_reader/excerpts/angelica-paintress-of-minds_9781909954410-ex/L3Leb",
            "updated_at": "2023-03-21T11:48:29.132Z",
            "available": false,
            "update_reason": "withdrawn"
        },
        ...
        // more entries...
        ...
    ]
}
            

Individual Excerpt Lookup

Authentication

We grant access to the API via an API key. The key can be passed as a header or URL param.

Header JB-Discovery-Api-Key
Param ?jb_discovery_api_key={api_key}

Request

GET /discovery/api/excerpts/{isbn13}
[application/json]
            

Note: it is important that you set the Accept header to Accept: application/json.

Response

[application/json]

object
  response_header  object
    generated_at     datetime

  excerpt         object
    isbn13         string
    title          string
    url            string
    created_at     datetime
Example
[REQUEST]
curl https://www.jellybooks.com/discovery/api/excerpts/9780241243626?jb_discovery_api_key={api_key} \
-H 'Accept: application/json' \
--compressed

[RESPONSE]
{
    "response_header": {
        "generated_at": "2022-05-26T11:09:52.676+00:00"
    },
    "excerpt": {
        "isbn13": "9780241243626",
        "title": "Ulysses",
        "url": "https://www.jellybooks.com/cloud_reader/excerpts/ulysses_9780241243626-ex/L3Leb",
        "created_at": "2021-05-31T13:44:00.712Z"
    }
}
            

Jellybooks Web Reader UI language

The API supplies URLs for samples that are viewed within the Jellybooks Web Reader. The Jellybooks Web Reader's interface has been translated into many languages. We leave it to clients to decide for themselves the preferred language for their needs. The default is English.

Setting the language

The UI language can be specified via the URL parameter locale={language_code}. Append this parameter to the excerpt URL returned by the API. E.g.

https://www.jellybooks.com/cloud_reader/excerpts/ulysses_9780241243626-ex/L3Leb?locale=es

Available languages

Catalan ca
Danish da
Dutch nl
English en (default)
French fr
German de
Italian it
Portuguese (Brazil) pt-BR
Russian ru
Spanish es