Raw affiliation strings

Links:authorships, institutions

A raw affiliation string (RAS) is the exact affiliation text an author printed on a work, before OpenAlex matches it to an institution — free text like "Impactstory, Sanford, NC, USA" or "Massachusetts Institute of Technology", often messy and inconsistent. It’s the raw input to institution disambiguation: the thing OpenAlex parses to figure out which organizations an author was affiliated with. Raw affiliation strings are a component entity — they don’t get their own OpenAlex ID. They live inside an authorship, in its raw_affiliation_strings list and its affiliations mapping. There’s also a bespoke raw_affiliation_strings.search filter on works and a raw-affiliation-strings search surface for querying them directly.

How it’s made

OpenAlex preserves the affiliation text exactly as it arrived on the source record, then parses each string to extract the institutions it names — so both "MIT, Boston, USA" and "Massachusetts Institute of Technology" resolve to the same institution (ror.org/042nb2s44).

Parsing pipeline

Parsing runs in three steps:

  1. Deep-learning model — an OpenAlex-trained model reads a string and assigns one or more institutions to it.
  2. Monthly string matching — a rules pass fixes common model errors (adding or removing affiliations based on the raw string), run once a month.
  3. ROR matcherROR’s own affiliation matcher, integrated into the OpenAlex codebase.

Steps 2 and 3 fill gaps left by the model, which hasn’t been retrained since April 2023 — so institutions added to OpenAlex or ROR after that date won’t be predicted by the model alone. On the AffilGood benchmark (OpenAlex tab), the parser reaches roughly 0.92 recall and 0.93 precision. The result is stored on the authorship as the affiliations mapping: each raw string paired with the institution IDs it produced. Country is assigned through the same matching — from the matched ROR record’s metadata, or, when nothing matches but the address still names a country, directly from the string.

Complex and layered systems

Some national research systems are layered — a French unité mixte de recherche (UMR) may belong to several parent organizations at once. OpenAlex handles these through ROR lineage: when a sub-unit has its own ROR record, the raw string matches to it, and lineage lets users roll the report up to the parent universities. The limiting factor is ROR coverage; where a sub-unit has no ROR record, a string can only match its parent. See Affiliations for more on France and other layered systems.

Failure modes

The parser can miss or mis-assign institutions, especially for organizations added to ROR after the April 2023 training cutoff (those depend entirely on the rules pass and ROR matcher). A raw string can also resolve to no institution at all while still yielding a country. Because the raw string is preserved verbatim, you can always see the original text even when matching fell short — and institutions can review and correct their own affiliations with the works-magnet tool. The parsing model, training data, and benchmarks are fully open (openalex-institution-parsing); the monthly string-matching code lives in the openalex-databricks repo.

Attributes

A raw affiliation string is essentially a string plus its matched-institution mapping, both of which live on the authorship. Being a component entity, it carries none of the common attributes and has no OpenAlex ID.

raw_affiliation_strings

List of strings. On an authorship, the exact affiliation text this author printed, one string per affiliation — e.g. ["Impactstory, Sanford, NC, USA"]. The unparsed input to institution matching.

affiliations

List of objects. On an authorship, the mapping from each raw string to the institutions it matched. Each element has:

  • raw_affiliation_string (String) — one raw affiliation string, verbatim.
  • institution_ids (List) — the OpenAlex institution IDs that string resolved to (empty if nothing matched).
"affiliations": [
  {
    "raw_affiliation_string": "Impactstory, Sanford, NC, USA",
    "institution_ids": [
      "https://openalex.org/I4200000001",
      "https://openalex.org/I4210166736"
    ]
  }
]

This is the authoritative record of which printed string produced which institutions — the flattened institutions list on the authorship loses that per-string provenance.

In the API

Raw affiliation strings aren’t a top-level entity endpoint you list or fetch — they surface as fields on an authorship (select authorships on a work) and through two search surfaces:

  • Search the raw text with the raw_affiliation_strings.search filter on works: filter=raw_affiliation_strings.search:impactstory returns works whose authors printed that affiliation text — matching on the raw string, before institution disambiguation. Useful for finding an organization’s works when its name never resolved cleanly to a ROR-backed institution.
  • Filter on the resolved mapping with authorships.affiliations.institution_ids, which filters on the institution IDs a raw string produced.

See Filtering for filter syntax and Searching for how .search behaves. To filter on the resolved institution itself (rather than the raw text), use authorships.institutions.id on works.

View as Markdown