Library endpoints
Library and linked-data services you can call from the tool loop, where the model asks for a lookup and your program runs it. Most need no key (an access code that some services require before they answer). We tested the rows marked “October 2026” live from Python in that month. We used the URL shown and a descriptive User-Agent (a header that says who is calling). Rows marked “not checked” link to the service’s documentation instead. Services change, so test a service before you depend on it.
Services
| Service | URL | Key needed | Checked | Notes |
|---|---|---|---|---|
| Wikidata SPARQL | https://query.wikidata.org/sparql |
No | October 2026 | A descriptive User-Agent is required; generic Python agents get 403. Queries stop after 60 s. The label service (SERVICE wikibase:label) is slow on large result sets and not every mirror supports it; fetch labels with rdfs:label and a language filter where you can. QLever v2 endpoints are due to open to the community in November 2026. |
| QLever (Wikidata fallback) | https://qlever.dev/api/wikidata |
No | October 2026 | A working fallback for Wikidata queries. |
| lobid-gnd | https://lobid.org/gnd/search |
No | October 2026 | Use format=json:suggest for lookups. |
| lobid-gnd reconciliation | https://lobid.org/gnd/reconcile |
No | October 2026 | OpenRefine reconciliation API. |
| lobid-resources | documentation: https://lobid.org/resources/api | No | not checked | Bibliographic records from the German library networks. |
| DNB SRU | https://services.dnb.de/sru/dnb |
No | October 2026 | Also /sru/authorities for the GND. Up to 100 records per request. |
| DNB Linked Data Service | documentation: https://data.dnb.de/opendata/ | No | not checked | Open data of the German National Library. |
| culturegraph Entity Facts | https://hub.culturegraph.org/entityfacts/118540238 |
No | October 2026 | Replace the number with a GND identifier. CC0. |
| id.loc.gov suggest2 | https://id.loc.gov/authorities/subjects/suggest2 |
No | October 2026 | Pass the search text as q. A label service also exists. |
| VIAF | https://viaf.org/viaf/AutoSuggest |
No | October 2026 | Send Accept: application/json, otherwise an HTML page comes back. Bulk files have been frozen since 2024. |
| Getty vocabularies SPARQL | https://vocab.getty.edu/sparql.json |
No | October 2026 | Bulk downloads return errors in 2026; a platform change is announced for autumn 2026. |
| data.bnf.fr | https://data.bnf.fr/sparql |
No | October 2026 | SPARQL access to the French National Library’s data. |
| Europeana SPARQL | https://api.europeana.eu/sparql |
No | October 2026 | The Search API needs a free key. |
| Finto REST | https://api.finto.fi/rest/v1/vocabularies |
No | October 2026 | 52 vocabularies. Send one request at a time. |
| STW SPARQL | https://zbw.eu/beta/sparql/stw/query |
No | October 2026 | The economics thesaurus used in the workshop. |
| STW Skosmos | https://zbw.eu/beta/skosmos/rest/v1/stw/search |
No | October 2026 | Skosmos search for the same thesaurus. |
| EU Vocabularies SPARQL | https://publications.europa.eu/webapi/rdf/sparql |
No | October 2026 | Includes EuroVoc. |
| LINDAS | https://lindas.admin.ch/query |
No | October 2026 | Swiss federal linked data. |
| swisscovery SRU | https://swisscovery.slsp.ch/view/sru/41SLSP_NETWORK |
No | October 2026 | MARC records carry GND identifiers. |
| K10plus SRU | https://sru.k10plus.de/opac-de-627 |
No | October 2026 | Union catalog of the German libraries. |
| Kalliope SRU | https://kalliope-verbund.info/sru |
No | October 2026 | Version 1.2, MODS records. |
| EconBiz | https://api.econbiz.de/v1/search |
No | October 2026 | No key and no quota. |
| RVK | https://rvk.uni-regensburg.de/api/json/node/AN%2073000 |
No | October 2026 | Regensburg classification; the example fetches one notation. |
| OpenAlex | https://api.openalex.org/works |
Optional | October 2026 | Without a key the budget is about 100 searches a day; a free key gives more. |
| Crossref | https://api.crossref.org/works |
No | October 2026 | Add a mailto parameter to join the polite pool, observed at 10 requests per second. |
| Open Library | documentation: https://openlibrary.org/developers/api | No | not checked | 1 request per second anonymous, 3 when identified. |
The exact requests we tested are in the notebooks and in the recorded fixtures (saved responses kept for offline use).
Etiquette
- Identify yourself. Send a User-Agent with the tool name and a contact address, for example
swib26-workshop ([email protected]). Some services reject requests that do not say who sent them. - Set timeouts. Give every request a timeout, for example 60 seconds for SPARQL, so a slow service cannot leave your notebook waiting forever.
- Go slowly. Send one request at a time to Finto, and respect any rate limit the service states (the number of requests it allows in a given time).
- Cache results. Save responses and reuse them. The notebooks include recorded fixtures for offline use.
- Never scrape Dewey. Do not use a script to collect Dewey Decimal Classification data from web pages. Its endpoint is gone and its terms are restrictive. See Data and licenses.
Part 2 lets a model draft SPARQL, but you read the query and approve it before it runs. Do not let a loop send queries to a public endpoint without a person approving each one.