ROR Research Organization Registry Scraper avatar

ROR Research Organization Registry Scraper

Pricing

Pay per event

Go to Apify Store
ROR Research Organization Registry Scraper

ROR Research Organization Registry Scraper

🔎 Export normalized Research Organization Registry records with ROR IDs, locations, websites, domains, relationships, and external IDs.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Stas Persiianenko

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

10 days ago

Last modified

Categories

Share

Find and export clean organization records from the public Research Organization Registry (ROR). This actor helps you turn ROR search results into a spreadsheet-ready dataset with ROR IDs, names, websites, countries, cities, domains, aliases, relationships, and external identifiers.

What does ROR Research Organization Registry Scraper do?

ROR Research Organization Registry Scraper queries the official ROR organizations API and saves normalized organization rows to an Apify dataset.

It is useful when you need reliable organization identifiers for universities, hospitals, research institutes, companies, funders, nonprofits, archives, facilities, and government research organizations.

The actor uses HTTP requests to the public JSON API. It does not need a login, browser automation, or a private API key.

Who is it for?

  • 🧪 Research intelligence teams enriching institution lists.
  • 🏫 University relations teams building clean affiliation directories.
  • 🏥 Healthcare analysts mapping research hospitals and medical centers.
  • 💼 B2B sales teams prospecting universities, hospitals, funders, and labs.
  • 📚 Bibliometrics teams normalizing author affiliations.
  • 🤝 Grant, funder, and vendor teams matching organizations across systems.
  • 🧹 Data operations teams deduplicating names with persistent ROR IDs.

Why use this actor?

ROR is a trusted open registry, but analysts often need data in repeatable CSV, JSON, Excel, or API workflows. This actor handles search, filters, pagination, normalization, and output formatting for you.

You can run it on a schedule, connect it to webhooks, or use it from the Apify API when you need fresh organization intelligence.

Typical use cases

  • Build a directory of active US education institutions.
  • Export healthcare research organizations in a target country.
  • Normalize company, hospital, or university names with ROR IDs.
  • Collect domains for institutional email matching.
  • Map organizations to Wikidata, GRID, ISNI, or FundRef identifiers.
  • Feed CRM, enrichment, bibliometrics, and lead research pipelines.

Data you can extract

FieldDescription
rorIdCompact ROR identifier.
rorUrlFull ROR URL.
namePrimary organization name.
statusROR status such as active.
typesOrganization types such as education or healthcare.
establishedEstablished year when available.
countryCodeISO country code.
countryNameCountry name.
cityCity or location name.
stateRegion or subdivision.
domainsKnown web domains.
websiteUrlWebsite link.
aliasesAlternative names.
acronymsAcronyms.
relationshipsRelated organizations.
wikidataIdsWikidata IDs.
fundrefIdsFundRef IDs.

How much does it cost to scrape ROR organizations?

This actor uses pay-per-event pricing. You pay a small run start fee and then a per-organization fee for each dataset row saved.

The default run is intentionally small and inexpensive. Increase maxItems when you are ready to export larger ROR result sets.

Input options

Provide one or more search queries and optional filters.

{
"queries": ["university"],
"countryCodes": ["US"],
"organizationTypes": ["education"],
"statuses": ["active"],
"maxItems": 100,
"requestDelayMs": 250,
"includeRawData": false
}

Search queries

Use organization names, keywords, or category-like terms.

Good examples:

  • university
  • hospital
  • cancer center
  • max planck
  • stanford
  • research institute

Country filters

Use ISO 3166-1 alpha-2 country codes.

Examples:

  • US
  • GB
  • DE
  • CA
  • AU
  • FR

Organization type filters

ROR commonly uses these types:

  • education
  • healthcare
  • company
  • funder
  • nonprofit
  • government
  • facility
  • archive
  • other

Status filters

Most production workflows should use:

  • active

You can also omit the status filter if you want the API's broader default matching behavior.

Output example

{
"rorId": "00f54p054",
"rorUrl": "https://ror.org/00f54p054",
"name": "Stanford University",
"status": "active",
"types": ["education", "funder"],
"countryCode": "US",
"countryName": "United States",
"city": "Stanford",
"domains": ["stanford.edu"],
"websiteUrl": "https://www.stanford.edu",
"wikidataIds": ["Q41506"],
"query": "stanford"
}

How to run the actor

  1. Open the actor on Apify.
  2. Enter one or more search queries.
  3. Add country, type, or status filters if needed.
  4. Set maxItems to the maximum number of organizations to export.
  5. Start the run.
  6. Download the dataset as CSV, JSON, Excel, XML, or RSS.

Tips for better results

  • Start broad with university, hospital, or research institute.
  • Add countryCodes to keep output focused.
  • Add organizationTypes when you need only universities, hospitals, companies, or funders.
  • Use includeRawData when you need every original ROR source field.
  • Run several smaller filtered searches instead of one huge unfocused query.

Integrations

Use this actor with:

  • CRM enrichment workflows for organization identity resolution.
  • Grant prospecting pipelines that need funder and research institution metadata.
  • Bibliometrics dashboards that normalize affiliation strings.
  • University partnership databases.
  • Data warehouse jobs that periodically refresh ROR IDs and domains.
  • Vendor discovery systems that target public research organizations.

API usage with Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/ror-research-organization-registry-scraper').call({
queries: ['university'],
countryCodes: ['US'],
organizationTypes: ['education'],
statuses: ['active'],
maxItems: 100,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

API usage with Python

from apify_client import ApifyClient
import os
client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('automation-lab/ror-research-organization-registry-scraper').call(run_input={
'queries': ['hospital'],
'countryCodes': ['GB'],
'organizationTypes': ['healthcare'],
'maxItems': 100,
})
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items[:3])

API usage with cURL

curl -X POST "https://api.apify.com/v2/acts/automation-lab~ror-research-organization-registry-scraper/runs?token=$APIFY_TOKEN" \
-H 'Content-Type: application/json' \
-d '{"queries":["university"],"countryCodes":["US"],"organizationTypes":["education"],"maxItems":100}'

MCP usage

You can use this actor from Apify MCP in Claude Desktop, Claude Code, and other MCP-compatible tools.

MCP server URL:

https://mcp.apify.com/?tools=automation-lab/ror-research-organization-registry-scraper

Claude Code setup:

$claude mcp add apify-ror "https://mcp.apify.com/?tools=automation-lab/ror-research-organization-registry-scraper"

Claude Desktop JSON config:

{
"mcpServers": {
"apify-ror": {
"url": "https://mcp.apify.com/?tools=automation-lab/ror-research-organization-registry-scraper"
}
}
}

Example prompts:

  • "Find active ROR education organizations in the United States and summarize the top domains."
  • "Export healthcare research organizations in the United Kingdom from ROR."
  • "Normalize this list of university names using ROR IDs."

Scheduling

Schedule the actor weekly or monthly to refresh your organization reference table. ROR records can change as names, relationships, and external identifiers are updated.

Webhooks

Attach an Apify webhook to send completed datasets into your own system, warehouse, or automation platform.

Data quality notes

The actor returns data from the public ROR API. Some fields are optional because the source registry does not have every domain, coordinate, relationship, or external identifier for every organization.

Legality

This actor uses a public registry API and exports factual organization metadata. Always use the data according to your local laws, ROR terms, and your organization's data governance policies.

FAQ

Why did I get fewer rows than expected?

ROR search is relevance based and filters can narrow results. Try a broader query, remove a country or type filter, or increase maxItems.

Why are some fields empty?

Not every ROR organization has every optional field. Empty arrays or missing URLs usually mean the source record does not provide that data.

Other automation-lab actors can complement this workflow:

Changelog

Initial version exports normalized ROR organization rows from the public API.

Support

If you need a new field, a different filter, or a larger enrichment workflow, open an issue on the actor page.

Field reference

rorId is the stable compact ID.

rorUrl is the canonical ROR URL.

name is the display name.

types contains all source organization types.

domains contains known domains.

relationships contains related organization summaries.

gridIds, isniIds, fundrefIds, and wikidataIds help match records across external systems.

Performance

The ROR API returns up to 20 organizations per page. The actor paginates until it reaches maxItems or the result set ends.

Reliability

The actor retries temporary API failures and uses a polite configurable delay between requests.