---
updatedAt: 2026-09-14T21:56:56.000Z
agentTools:
  projectIndex: https://ror.readme.io/llms.txt
---

# Match organization names to ROR IDs

If you have a list, a spreadsheet, or a database of organization names or affiliation strings, there are several approaches to matching those text strings to ROR IDs. The best method to use depends on the amount and type of data you have, whether you'd like to write your own code, and whether you want to do large-scale automatic matching or small-scale human review.

Here are some common types of organization data:

**Organization name**

University of Pisa

**Organization name and location as structured data**

|        Name        | City | Country |
| :----------------: | :--: | :-----: |
| University of Pisa | Pisa |  Italy  |

**Unstructured affiliation string including sub-affiliation and address information**

Department of Civil and Industrial Engineering, University of Pisa, Largo Lucio Lazzarino 2, Pisa 56126, Italy

# Match organization names to ROR using OpenRefine

The ROR OpenRefine Reconciler is a fairly labor-intensive way of matching organization names or unstructured affiliation strings to ROR IDs, but it works well for those who have no more than a few thousand items to match to ROR IDs, those who want to have a high degree of control and oversight over the matching process, and those who do not want to write code.

[OpenRefine](https://openrefine.org) (formerly Google Refine) is a free, open source desktop tool for cleaning up messy data stored in common formats like CSV, XLSX, JSON, and XML. You can even use it to connect to SQL-based databases and Google Sheets.

See [ROR OpenRefine Reconciler](https://ror.readme.io/docs/openrefine-reconciler) for written usage instructions, screenshots, and a tutorial video.

# Match organization names to ROR IDs using the ROR API

The [ROR REST API](https://ror.readme.io/docs/rest-api) offers several ways to search ROR that all work differently and return different results. Choose the best method for your data.

## Query approach

In cases where you have Wikidata, ISNI, Funder IDs, or GRID identifiers or when you have organization names stored as structured data, use the [Query parameter](https://ror.readme.io/docs/api-query) of the ROR API to match organizations to ROR IDs.&#x20;

This approach searches only the `names` and `external_ids` fields in ROR records and returns all matching records. Will return the same results as the ROR [Web search](https://ror.readme.io/docs/web-search). This approach is best for one-at-a-time queries with results chosen by a person.

For best results, search for an identifier, for unique keywords from the organization's name, or for the exact name of the organization surrounded by double quotation marks and if possible [filter](https://ror.readme.io/docs/api-filtering) the results by organization type and/or location. See also our guide to [Mapping other organization IDs to ROR IDs](https://ror.readme.io/docs/mapping).

You should also use the [Query parameter](https://ror.readme.io/docs/api-query) if you are building a user-facing form in which users type in keywords from an organization's name and then select a result. See [Create ROR-powered forms](https://ror.readme.io/docs/forms) for more information.

## Advanced query approach

In cases where you do not have organization identifiers or locations, but do have organization websites or Wikipedia pages stored as structured data, use the [Advanced query parameter](https://ror.readme.io/docs/api-advanced-query) of the ROR API to match organizations to ROR IDs.&#x20;

This approach allows you to search fields not indexed by the [Query parameter](https://ror.readme.io/docs/api-query) such as `domains` and `links`. This approach is best for one-at-a-time queries with results chosen by a person.&#x20;

## Affiliation approach

In cases where you have complex, unstructured affiliation strings or wish to match organization names to ROR IDs programmatically, use the [Affiliation parameter](https://ror.readme.io/docs/api-affiliation) of the ROR API to match these strings to a ROR ID for the organization.&#x20;

ROR and Crossref have done extensive research to design the affiliation parameter of the ROR API to match text strings to ROR IDs precisely and at scale. This approach is best for automatic selection of results.&#x20;

The affiliation matching service attempts to find the ROR record that is the most probable match for the given string; if it finds a likely candidate, it returns that result with a `chosen:true` indicator. Additional possibilities that might match the string are also included in results, listed in descending order by confidence score. Note that we do not recommend selecting matches by confidence score: use the `chosen:true` indicator instead.

<Callout icon="📘" theme="info">
  ## Retrieving active and inactive organizations

  By default, the ROR API returns only records with an active [status](https://ror.readme.io/docs/data-structure#status). Consider whether you also want to retrieve records with an inactive status; inactive records generally represent organizations that no longer operate. See <Anchor target="_blank" href="doc:api-filtering">API filtering</Anchor> for details.

  Be aware too that inactive organizations may be succeeded by a new organization under a different name with a different ROR ID. If you do retrieve inactive organizations, check the `relationships` field of an inactive record to see if it has a [Successor organization](https://ror.readme.io/docs/data-structure#relationships).
</Callout>

# Match organization names to ROR IDs using the data dump

Instead of using the ROR API, you can use your own scripts or processing tools on the [ROR data dump](https://ror.readme.io/docs/data-dump) to match organization names to ROR IDs. Advantages of this approach include:

* Fine-grained control over matching criteria
* Faster processing in cases where you have many IDs to map
* No chance of error responses due to network interruptions or API

Remember, too, that you can run the ROR API locally with a copy of the ROR data dump. See instructions for installing the ROR API locally with Docker in the [README file of the ROR API GitHub repository](https://github.com/ror-community/ror-api/blob/master/README.md).

# Match organization names to ROR IDs using third-party tools

Several ROR users have developed open source scripts, models, and tools that match text strings with organization information to ROR IDs. These utilities are not officially supported by ROR, but we list them here in case you find them useful.

* <Anchor target="_blank" href="https://github.com/tnq-tech-pub/ROR-review">ROR Review</Anchor> by [TNQTech](https://tnqtech.com/) is a web application that helps reviewers match author affiliation strings against the Research Organization Registry (ROR), inspect candidate matches, capture review comments, prepare organization insertion drafts, and export files for further ROR curation workflows.
* Selected Python scripts that match organization names to ROR IDs area available in the <Anchor target="_blank" href="https://github.com/ror-community/ror-utilities">ror-utilities GitHub repository</Anchor>.

- <Anchor target="_blank" href="https://github.com/ourresearch/openalex-institution-parsing">OpenAlex Institution Parsing</Anchor> by <Anchor target="_blank" href="https://ourresearch.org">OurResearch</Anchor> is an OpenAlex model that assigns institutional affiliations to works.

- <Anchor target="_blank" href="https://github.com/allenai/S2AFF/">S2AFF - Semantic Scholar Affiliations Linker</Anchor> by the <Anchor target="_blank" href="https://allenai.org/">Allen AI Institute</Anchor> contains code that links raw affiliation strings to ROR IDs.&#x20;

- <Anchor target="_blank" href="https://github.com/Metadata-Game-Changers/RORRetriever">RORRetriever</Anchor> by Metadata Game Changers (Python) is tool developed to help repositories and others to add identifiers to large collections with many affiliations.

- <Anchor target="_blank" href="https://github.com/dataesr/affiliation-matcher">dataESR affiliation matcher</Anchor> by Anne L'Hôte and Eric Jeangirard for the <Anchor target="_blank" href="https://www.enseignementsup-recherche.gouv.fr/">French Ministry of Higher Education</Anchor> aims to automatically align an affiliation with different reference systems, including country (ISO 3166), GRID, ROR, Wikidata, and specifically for French affiliations FINESS, RNSR, and <br />Siren.&#x20;

- <Anchor target="_blank" href="https://github.com/adambuttrick/openalex-ror-predictor">OpenAlex ROR Predictor (gpu-based)</Anchor> by Adam Buttrick is a modified version of an OpenAlex institution ID prediction service that predicts both OpenAlex institution IDs and ROR IDs from affiliation strings.

- <Anchor target="_blank" href="https://github.com/adambuttrick/ror-predictor-fasttext">fastText ROR Predictor (cpu-based)</Anchor> by Adam Buttrick is ROR prediction service, trained with fastText.

# Testing and training data

ROR has collected sets of data from Springer Nature, the American Physical Society, OpenAlex, and Crossref for testing and training affiliation matching strategies, and these datasets are openly available at <https://github.com/ror-community/affiliation-matching-experimental/tree/main/test_data>. These datasets include affiliation text strings from production systems that have been matched to ROR IDs with varying levels of human review.

Crossref has also <Anchor target="_blank" href="https://doi.org/10.13003/ich4dosh">published a dataset of DOI metadata</Anchor> with over 140 million affiliation assertions from Crossref metadata records through March 2025 that has been used to test the ROR API [single search affiliation matching strategy](https://ror.readme.io/docs/api-affiliation#/single-search-strategy). It includes automatically-detected matches for over 94 million affiliation assertions.