When to use this skill
When the user asks to look up a person, organization, or work in library authority records — disambiguate "which Emma Goldman?" or find the stable VIAF ID for a named entity. VIAF merges authority records from 30+ national libraries into single clusters, each with a persistent ID and cross-references to Library of Congress, BNF, DNB, and dozens more. For full-text search or article retrieval, this is the wrong skill — VIAF returns identity metadata, not documents.
Your best first call
curl "https://viaf.org/viaf/AutoSuggest?query=Emma+Goldman"
No auth. No key. Always returns JSON. The query parameter accepts a person, organization, or work name.
Key response fields:
result[].term — display label with dates (e.g. "Emma Goldman, 1869-1940")
result[].nametype — the discriminator: "personal" (person), "corporate" (organization), "uniformtitlework" (bibliographic work — not a person at all)
result[].viafid / result[].recordID — the persistent VIAF cluster ID
result[].lc, result[].dnb, result[].bnf, result[].bne, result[].nkc, result[].nla, result[].selibr, result[].ptbnp — cross-references to national library identifiers (Library of Congress, German National Library, BNF France, National Library of Spain, Czech National Library, National Library of Australia, Swedish LIBRIS, Portuguese National Library)
result[].score — relevance ranking
The non-obvious payoff: the same search returns people, organizations, and works as distinct entities. "Emma Goldman" the person (VIAF 39377930) and Living My Life her autobiography (VIAF 205789421) each have their own VIAF ID. Filter on nametype before assuming you have the right entity.
Fallbacks (when the best call isn't enough)
- Full authority record with alternate names, nationalities, and source cross-walks →
https://viaf.org/viaf/{viafid}?format=json returns the complete cluster with multilingual headings, birth/death dates, and nationality arrays. Always append ?format=json — the default is RDF/XML.
- Crosswalk from a Library of Congress Control Number →
https://viaf.org/viaf/lccn/{lccn}?format=json translates an LCCN directly into a VIAF cluster, no search step needed.
- Field-specific CQL queries (e.g.
local.personalName, local.sources) → https://viaf.org/viaf/search supports SRU/CQL syntax, but the response is SRU-wrapped XML-as-JSON, deeply nested with recordPosition and xsi:type annotations. Prefer AutoSuggest unless you need CQL field targeting.
Pitfalls
- The cluster endpoint (
/viaf/{viafID}) defaults to RDF/XML, not JSON. Always append ?format=json. AutoSuggest itself always returns JSON — this pitfall only bites when you follow up on a viafid.
- JSON keys from the cluster endpoint carry XML namespace prefixes:
ns1:viafID, ns1:mainHeadings, ns1:text. Do not assume plain key names like viafID.
- A single person can have multiple nationality entries from different library sources — "US" per the Library of Congress and "Russian Empire" per Wikidata are not contradictions; they reflect different cataloging traditions and historical boundaries.
nametype "uniformtitlework" is a bibliographic work, not a person. "Emma Goldman, 1869-1940. | Living my life" is the book, not the author. Filter on nametype before treating a result as a person.
One-line summary for the user
I can search VIAF for authority records by name — disambiguating people, organizations, and works across 30+ national libraries in a single unauthenticated GET — but VIAF returns identity metadata, not full-text documents.
SKILL.md source (frontmatter + body)
---
name: search-viaf-authority-records
description: When the user asks to look up a person, organization, or work in library authority records — disambiguate names, find VIAF IDs, cross-walk to Library of Congress or BNF identifiers — reach for VIAF AutoSuggest. Single unauthenticated GET.
---
## When to use this skill
When the user asks to look up a person, organization, or work in library authority records — disambiguate "which Emma Goldman?" or find the stable VIAF ID for a named entity. VIAF merges authority records from 30+ national libraries into single clusters, each with a persistent ID and cross-references to Library of Congress, BNF, DNB, and dozens more. For full-text search or article retrieval, this is the wrong skill — VIAF returns identity metadata, not documents.
## Your best first call
```bash
curl "https://viaf.org/viaf/AutoSuggest?query=Emma+Goldman"
```
No auth. No key. Always returns JSON. The `query` parameter accepts a person, organization, or work name.
Key response fields:
- `result[].term` — display label with dates (e.g. "Emma Goldman, 1869-1940")
- `result[].nametype` — the discriminator: `"personal"` (person), `"corporate"` (organization), `"uniformtitlework"` (bibliographic work — not a person at all)
- `result[].viafid` / `result[].recordID` — the persistent VIAF cluster ID
- `result[].lc`, `result[].dnb`, `result[].bnf`, `result[].bne`, `result[].nkc`, `result[].nla`, `result[].selibr`, `result[].ptbnp` — cross-references to national library identifiers (Library of Congress, German National Library, BNF France, National Library of Spain, Czech National Library, National Library of Australia, Swedish LIBRIS, Portuguese National Library)
- `result[].score` — relevance ranking
The non-obvious payoff: the same search returns people, organizations, and works as distinct entities. "Emma Goldman" the person (VIAF 39377930) and *Living My Life* her autobiography (VIAF 205789421) each have their own VIAF ID. Filter on `nametype` before assuming you have the right entity.
## Fallbacks (when the best call isn't enough)
- **Full authority record with alternate names, nationalities, and source cross-walks** → `https://viaf.org/viaf/{viafid}?format=json` returns the complete cluster with multilingual headings, birth/death dates, and nationality arrays. Always append `?format=json` — the default is RDF/XML.
- **Crosswalk from a Library of Congress Control Number** → `https://viaf.org/viaf/lccn/{lccn}?format=json` translates an LCCN directly into a VIAF cluster, no search step needed.
- **Field-specific CQL queries (e.g. `local.personalName`, `local.sources`)** → `https://viaf.org/viaf/search` supports SRU/CQL syntax, but the response is SRU-wrapped XML-as-JSON, deeply nested with `recordPosition` and `xsi:type` annotations. Prefer AutoSuggest unless you need CQL field targeting.
## Pitfalls
- The cluster endpoint (`/viaf/{viafID}`) defaults to RDF/XML, not JSON. Always append `?format=json`. AutoSuggest itself always returns JSON — this pitfall only bites when you follow up on a `viafid`.
- JSON keys from the cluster endpoint carry XML namespace prefixes: `ns1:viafID`, `ns1:mainHeadings`, `ns1:text`. Do not assume plain key names like `viafID`.
- A single person can have multiple nationality entries from different library sources — "US" per the Library of Congress and "Russian Empire" per Wikidata are not contradictions; they reflect different cataloging traditions and historical boundaries.
- `nametype` `"uniformtitlework"` is a bibliographic work, not a person. "Emma Goldman, 1869-1940. | Living my life" is the book, not the author. Filter on `nametype` before treating a result as a person.
## One-line summary for the user
I can search VIAF for authority records by name — disambiguating people, organizations, and works across 30+ national libraries in a single unauthenticated GET — but VIAF returns identity metadata, not full-text documents.