Bringing Structure to Biology
PDBe REST API
PDBe’s REST API is a programmatic way to obtain information from the PDB and EMDB. You can access details about sample, experiment, models, compounds, cross-references, publications, quality, assemblies and more.
- PDBe API documentation
- Frequently asked questions (FAQ)
- Get started - worked out examples
- PDBe API user mailing list
3D biomacromolecular structures are vital for high-impact scientific work such as basic science, disease research, drug discovery, material design and so on. The Protein Data Bank already has grown beyond 100,000 entries and continues to expand its holdings thanks to experimental advances. An average entry is more complex than a decade ago in terms of its size and chemical variety. Advanced data-intensive approaches are essential to connect 3D structures to the wider context of biological data and scientific literature. Easy access to interesting bits of structural data is crucial for such integrative analyses.
The PDB file format and mmCIF/PDBx, its successor, make it challenging for bioinformaticians to integrate structural data in their application or workflow. The data model is complex. The parsing is complicated and requires specialized libraries. The whole entry file is required for obtaining a tiny detail like the resolution, yet important information like cross-references, chemistry and quality might reside in other files. It won’t be too hard to find graduate students who spend a significant part of their time getting to grips with structural data!
We use the API for the PDB and EMDB entry pages
Since our entry pages are powered by the REST API, it is subjected every week to a battery of tests. The data sources underlying the REST API are update weekly so that the delivered content is up-to-date.
Who else uses the REST API
The popular 3D viewer Jmol/JSmol has already integrated the REST API calls for quality and cross-references. Jalview, Coot and CCP4 developers have expressed interest.
The current set of calls in the REST API is largely shaped by the needs of PDBe services and user feedback. We are open to implementing new calls and features, as well as fixing any bugs. We envision the REST API to be a long-term, stable, well-tested resource for powering traditional and novel applications using 3D structural information. We look forward to hearing from you, and receiving your HTTP requests!
How do I subscribe to the mailing list?
Send e-mail to email@example.com. This is a useful channel for us to communicate actively with you about new features, changes, planned downtime, etc.
Where can I find calls and their documentation?
You can find that here.
Can I request a new call?
Of course you can. But make sure there is no call which already returns what you need. Send email to the pdbe-api-user mailing list with details of the call and its intended application.
How do you test the API?
Many PDBe services in production use the live API. So any downtime and most bugs get noticed and fixed quickly. A battery of tests is run weekly for checking correctness and stability.
How do I report a bug?
Please subscribe to the mailing list. Report as much detail as possible, e.g. operating system, programming language used (if any), libraries, call URL, response, http status, etc. We also welcome reports of errors in the documentation.
How many API calls am I allowed?
At present we rely on user restraint and have not set any hard limits. But in future, depending on load on our servers, we may want to implement rate limiting.
How many ids may I include in a POST request?
You can ask for as many as 1000 ids at once.
Why not allow lower-case compound ids?
Chemical components dictionary of the PDB defines the ids in upper case. All internal (and most external) data sources have them in upper case.
Where can I find examples?
Code samples to get started can be found here.
How can I stay up to date with new API releases?
Please subscribe to the mailing list. We post information about new calls and updates to existing calls.
Can I make AJAX calls?
Yes, CORS support is activated in our servers so you don’t have to use JSONP.
Can I see an example?
We have prepared a Python example that you can use as a template.