| 0 |
## [Developer Center](https://openlibrary.org/developers) → APIs |
0 |
# [Developer Center](https://openlibrary.org/developers) → APIs |
| 1 |
|
1 |
|
| 2 |
Open Library offers a suite of APIs to help developers get up and running with our data. This includes [**RESTful APIs**][4], which make Open Library data availabile in JSON, YAML and RDF/XML formats. There's also an earlier, now deprecated [JSON API][5] which is preserved for backward compatibility. |
2 |
Open Library provides APIs to support public-good, open, human-centered book discovery and lookup services. |
| 3 |
|
3 |
|
| 4 |
Try out our interactive <button class="cta-btn cta-btn--available" style="display: inline-block; width: auto;" href="https://openlibrary.org/swagger/docs">OpenAPI Sandbox</button> |
4 |
If you are building an open source or mission-aligned application that helps people find and use books in real time, these APIs are for you. |
| 5 |
|
5 |
|
| 6 |
## Identifying your Application |
6 |
## Getting Started |
| 7 |
|
7 |
|
| 8 |
If your application will make regular, frequent use of Open Library's APIs (e.g. multiple calls per minute), please add a HEADER that specifies a User-Agent string with (a) the name of your application and (b) your contact email or phone number, so we may contact you when we notice high request volume. Failing to include these headers may result in your application being blocked. |
8 |
Open Library offers a suite of APIs to help developers get up and running with our data. This includes [**RESTful APIs**][4], which make Open Library data available in JSON, YAML and RDF/XML formats. The [Legacy JSON API][5] is deprecated and preserved for backward compatibility. |
| 9 |
|
9 |
|
| 10 |
For help adding user-agent headers to your API calls, please refer to this [javascript](https://gist.github.com/mekarpeles/0d308bfd8e75858d2266b8aa983cac07) and [python](https://gist.github.com/mekarpeles/a4f1b2b0414325b9958fdc8376f14d16) example. |
10 |
- [Usage Guidelines](#usage) |
|
|
11 |
- [Rate Limits](#rate-limits) |
|
|
12 |
- [Bulk Access](#bulk-access) |
|
|
13 |
- [Index of APIs](#api-index) |
| 11 |
|
14 |
|
| 12 |
Additional rate limit information can be accessed [here](https://github.com/internetarchive/openlibrary/blob/master/docker/nginx.conf). |
15 |
Try the interactive Open API Sandbox: |
|
|
16 |
<a class="cta-btn cta-btn--available" href="https://openlibrary.org/swagger/docs">OpenAPI Sandbox</a> |
|
|
17 |
|
|
|
18 |
## <a name="usage">Usage Guidelines</a> |
|
|
19 |
|
|
|
20 |
Open Library’s APIs exist to strengthen the open book ecosystem. |
|
|
21 |
|
|
|
22 |
We prioritize: |
|
|
23 |
- Open-source and mission-aligned projects |
|
|
24 |
- Library and education tools |
|
|
25 |
- Human-facing discovery and lookup services |
|
|
26 |
- Real-time, low-volume, high-value use |
|
|
27 |
|
|
|
28 |
These APIs are **not** intended to serve as a bulk data backend or high-traffic commercial infrastructure. For bulk access, please download our free monthly [data dumps](https://openlibrary.org/developers/dumps) or contact us at openlibrary@archive.org. |
|
|
29 |
|
|
|
30 |
**Please Do:** |
|
|
31 |
|
|
|
32 |
1. Make useful, time-sensitive requests on behalf of human users |
|
|
33 |
2. Cache responses whenever possible |
|
|
34 |
3. Identify your application with a `User-Agent` header and `email` |
|
|
35 |
|
|
|
36 |
**Please Do Not:** |
|
|
37 |
|
|
|
38 |
- Scrape HTML pages (use API endpoints instead) |
|
|
39 |
- Distribute traffic across 5+ IPs |
|
|
40 |
- Harvest data in bulk |
|
|
41 |
- Make hundreds of single-book requests (use search.json for batch results) |
|
|
42 |
- Use Open Library as a backend for high-traffic services |
|
|
43 |
|
|
|
44 |
Violations may result in aggressive rate limiting or blocking. |
|
|
45 |
|
|
|
46 |
## <a name="rate-limits">Rate Limits</a> |
|
|
47 |
|
|
|
48 |
If your application will make regular, frequent use of Open Library's APIs (e.g. multiple calls per minute), please add a HEADER that specifies a `User-Agent` string with (a) the name of your application and (b) your contact email or phone number, so we may contact you when we notice high request volume. In addition, identified requests will enjoy a 3x request limit. |
|
|
49 |
|
|
|
50 |
Default (non-identified requests): |
|
|
51 |
- 1 request per second |
|
|
52 |
|
|
|
53 |
Identified requests (with `User-Agent` and `email`): |
|
|
54 |
- 3 requests per second |
|
|
55 |
|
|
|
56 |
``` |
|
|
57 |
User-Agent: MyLibraryApp (contact@example.org) |
|
|
58 |
``` |
|
|
59 |
|
|
|
60 |
**Example Requests:** |
|
|
61 |
|
|
|
62 |
- [JavaScript example request](https://gist.github.com/mekarpeles/0d308bfd8e75858d2266b8aa983cac07) |
|
|
63 |
- [Python example request](https://gist.github.com/mekarpeles/a4f1b2b0414325b9958fdc8376f14d16) |
|
|
64 |
|
|
|
65 |
## <a name="bulk-access">Bulk Access</a> |
|
|
66 |
|
|
|
67 |
**Please do not use our APIs for bulk download** of Open Library data because this affects our ability to serve patrons. We make our data [publicly available](https://openlibrary.org/developers/dumps) each month for partners. If you want a dump of complete data, please read about our [Bulk Download][8] options, or email us at openlibrary@archive.org. |
| 13 |
|
13 |
|
| ... |
|
... |
|
| 27 |
|
27 |
|
| 28 |
|
|
|
| 29 |
## Bulk Access |
|
|
| 30 |
|
|
|
| 31 |
**Please do not use our APIs for bulk download** of Open Library data because this affects our ability to serve patrons. We make our data [publicly available](https://openlibrary.org/developers/dumps) each month for partners. If you want a dump of complete data, please read about our [Bulk Download][8] options, or email us at openlibrary@archive.org. |
|
|
| 32 |
|
|
|
| 33 |
|
|
|
| 34 |
## More APIs |
83 |
## More APIs |
| 35 |
Did you know, nearly every page on Open Library is or has an API. You can return structured bibliographic data for any page by adding a .rdf/.json/.yml extension to the end of any Open Library identifier. For instance: [https://openlibrary.org/works/OL15626917W.json](https://openlibrary.org/works/OL15626917W.json) or [https://openlibrary.org/authors/OL33421A.json](https://openlibrary.org/authors/OL33421A.json). Many pages, such as the Books, Authors, and Lists, will include links to their RDF and JSON formats. |
84 |
Did you know, nearly every page on Open Library is or has an API. You can return structured bibliographic data for any page by adding a .rdf/.json/.yml extension to the end of any Open Library identifier. For instance: [https://openlibrary.org/works/OL15626917W.json](https://openlibrary.org/works/OL15626917W.json) or [https://openlibrary.org/authors/OL33421A.json](https://openlibrary.org/authors/OL33421A.json). Many pages, such as the Books, Authors, and Lists, will include links to their RDF and JSON formats. |
| 36 |
|
|
|
| 37 |
|
|
|
| 38 |
|
|
|
| 39 |
## Questions |
|
|
| 40 |
|
|
|
| 41 |
We encourage developers to ask questions by opening issues on [GitHub](https://github.com/internetarchive/openlibrary/issues) and on our [gitter](https://gitter.im/theopenlibrary/Lobby) chat channel. |
|
|
| 42 |
|
|
|
| 43 |
|
43 |
|
| ... |
|
... |
|
| 103 |
[34]: https://www.npmjs.com/package/mcp-open-library |
103 |
[34]: https://www.npmjs.com/package/mcp-open-library |
|