Getting Started with VIAF

← VIAF API

When to use this API

When you need to disambiguate a person, organization, or work that appears in library catalogs — resolve "which Emma Goldman?" or "which edition of Living My Life?" into a stable, globally-linked identity. VIAF merges authority records from dozens of national libraries into single clusters, each with a persistent VIAF ID. The non-obvious payoff: a single cluster can show you how the same person is cataloged across 30+ national library systems, including alternate name spellings in Arabic, Korean, Greek, and Polish — a multilingual identity map you cannot get from any single library. For full-text search or article retrieval, VIAF is the wrong tool; it returns identity metadata, not documents.

Searching for a person by name

"Who is Emma Goldman in library records?" The AutoSuggest endpoint is the cheapest entry point. It returns a flat list of matching authority clusters with their VIAF IDs, name types, and cross-references to national library identifiers — all in a single unauthenticated GET.

curl "https://viaf.org/viaf/AutoSuggest?query=Emma+Goldman" | head -c 10000
{
  "query": "Emma Goldman",
  "result": [
    {
      "term": "Emma Goldman, 1869-1940",
      "displayForm": "Emma Goldman, 1869-1940",
      "nametype": "personal",
      "lc": "n50034593",
      "dnb": "118540475",
      "selibr": "278674",
      "bnf": "11905314",
      "bne": "981060854662908606",
      "nkc": "jn20000601978",
      "nla": "000035131355",
      "ptbnp": "34113",
      "viafid": "39377930",
      "score": "8950",
      "recordID": "39377930"
    },
    {
      "term": "Emma Goldman Papers Project",
      "displayForm": "Emma Goldman Papers Project",
      "nametype": "corporate",
      "viafid": "131898581",
      "score": "1098",
      "recordID": "131898581"
    },
    {
      "term": "Emma Goldman, 1869-1940. | Living my life",
      "displayForm": "Emma Goldman, 1869-1940. | Living my life",
      "nametype": "uniformtitlework",
      "viafid": "205789421",
      "score": "996",
      "recordID": "205789421"
    }
  ]
}

The nametype field is the key discriminator here. "personal" means a person, "corporate" means an organization, "uniformtitlework" means a work (not a person at all). The top result for "Emma Goldman" is the person (VIAF 39377930), but the third result is her autobiography Living My Life as a distinct bibliographic entity with its own VIAF ID. Each result also carries identifiers from multiple national libraries — lc is the Library of Congress, dnb is the German National Library, bnf is the BNF in France, bne is the National Library of Spain — so you can cross-walk into any of those catalogs without a second search.

In library authority records, Emma Goldman (1869-1940) has VIAF ID 39377930, with cross-references in the Library of Congress (n50034593), the German National Library (118540475), the BNF (11905314), and several other national libraries. Her autobiography Living My Life is a separate entity with its own VIAF ID (205789421).

Retrieving a full authority record by VIAF ID

"What nationalities and alternate names does VIAF list for Emma Goldman?" The /viaf/{viafID} endpoint returns the complete cluster. The default format is RDF/XML, but appending ?format=json (or sending Accept: application/json) gets you JSON. The response is large and deeply nested, so always pipe through head -c.

curl "https://viaf.org/viaf/39377930?format=json" | head -c 10000
{
  "ns1:VIAFCluster": {
    "ns1:viafID": 39377930,
    "ns1:nameType": "Personal",
    "ns1:birthDate": "1869-06-27",
    "ns1:deathDate": "1940-05-14",
    "ns1:nationalityOfEntity": {
      "ns1:data": [
        { "ns1:text": "US", "ns1:sources": { "ns1:s": ["WKP","DNB","BNF","ISNI","PTBNP","LIH"] } },
        { "ns1:text": "LT", "ns1:sources": { "ns1:s": ["WKP","DNB","ISNI"] } },
        { "ns1:text": "GB", "ns1:sources": { "ns1:s": ["WKP","DNB","ISNI"] } },
        { "ns1:text": "FR", "ns1:sources": { "ns1:s": ["WKP","DNB","ISNI"] } },
        { "ns1:text": "Russian Empire", "ns1:sources": { "ns1:s": "WKP" } }
      ]
    },
    "ns1:mainHeadings": {
      "ns1:data": [
        { "ns1:text": "Goldman, Emma, 1869-1940.", "ns1:sources": { "ns1:s": ["LC","BNF","DNB","BNE","NUKAT","SELIBR","NLA","NKC","PTBNP"] } },
        { "ns1:text": "Голдман, Эмма, 1869-1940", "ns1:sources": { "ns1:s": "RUNLR" } },
        { "ns1:text": "جولدمان، إيما", "ns1:sources": { "ns1:s": "EGAXA" } }
      ]
    },
    "ns1:sources": {
      "ns1:source": [
        { "content": "LC|n  50034593" },
        { "content": "DNB|118540475" },
        { "content": "BNF|11905314" },
        { "content": "WKP|Q79969" },
        { "content": "ISNI|0000000121287563" }
      ]
    }
  }
}

Emma Goldman's cluster lists five nationalities: US, Lithuania (LT), Great Britain (GB), France (FR), and "Russian Empire" — the last one from Wikidata, reflecting her birth in Kaunas when it was part of the Russian Empire. The ns1:mainHeadings section shows how different national libraries catalog the same person: the Anglo-American tradition writes "Goldman, Emma" (surname first), the Russian National Library writes "Голдман, Эмма" in Cyrillic, and the Egyptian library writes "جولدمان، إيما" in Arabic. Each heading carries its source code so you can trace which library uses which form. The ns1:sources list at the bottom is the master cross-reference — each entry is a pipe-delimited sourceCode|localId, giving you the exact identifier in that library's system.

VIAF lists five nationalities for Emma Goldman: United States, Lithuania, Great Britain, France, and the Russian Empire (her birthplace, Kaunas, was part of the Russian Empire in 1869). Her name appears in three scripts: "Goldman, Emma" (26+ Western libraries), "Голдман, Эмма" (Russian National Library), and "جولدمان، إيما" (Egyptian National Library).

Resolving a Library of Congress number to VIAF

"I have an LCCN — how do I find the corresponding VIAF record?" The /viaf/lccn/{lccn} endpoint translates a Library of Congress Control Number directly into a VIAF cluster. This is a crosswalk tool: you already have an LCCN from a MARC record or catalog search and want the VIAF ID to access the merged international view.

curl "https://viaf.org/viaf/lccn/n50034593?format=json" | head -c 10000

The response is the same VIAFCluster format as /viaf/{viafID} — LCCN n50034593 resolves to VIAF ID 39377930 (Emma Goldman). The endpoint is a redirector at heart: it looks up the LCCN in VIAF's source mapping and returns the full cluster. If the LCCN doesn't map to any VIAF cluster, the response is empty.

LCCN n50034593 maps to VIAF ID 39377930 — Emma Goldman (1869-1940). From there you can reach her full international authority record with alternate names, nationalities, and cross-references to 30+ national libraries.

Pitfalls

One-line summary for the user

I can look up authority records for people, organizations, and works in the Virtual International Authority File — resolving names to stable IDs with cross-references across 30+ national libraries — in a single unauthenticated GET, but the JSON output uses verbose namespace-prefixed keys and the default format is XML.