Ror Research Organizations Scraper
Pricing
from $2.99 / 1,000 results
Ror Research Organizations Scraper
ROR Research Organizations Scraper extracts metadata from the Research Organization Registry (ROR) API. Easily pull institutional names, ROR IDs, locations, and organizational hierarchies into structured formats for bibliographic research.
Pricing
from $2.99 / 1,000 results
Rating
0.0
(0)
Developer
ZeroBreak
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share

ROR Research Organizations Scraper collects university and research organization records from the public Research Organization Registry (ROR) API. Search by organization name or look up specific ROR IDs, then export organization names, domains, locations, identifiers, and related records as JSON, CSV, or Excel.
No login or API key is required.
Use Cases
- University lists: Search for organizations by name, such as
oxford, and export matching institutions. - Known ROR IDs: Retrieve specific organizations using IDs obtained from research papers, grant records, or other sources.
- Affiliation cleanup: Collect display names, aliases, and domains to help standardize author affiliations.
- Scheduled refreshes: Repeat searches to keep organization datasets up to date.
- Free registry exports: Access public organization records without requiring an API key.
Input
| Parameter | Type | Default | Description |
|---|---|---|---|
query | string | oxford | Organization name used for the search. Leave blank when looking up only specific ROR IDs. |
rorIds | array | Empty | ROR IDs to retrieve, one per entry. Accepts nine-character IDs or full ROR URLs. |
maxItems | integer | 100 | Maximum dataset rows, including error rows. Hard limit: 1,000. |
timeoutSecs | integer | 300 | Maximum time allowed for starting new ROR requests. |
requestTimeoutSecs | integer | 30 | Timeout in seconds for each HTTP request. |
Example Input
{"query": "oxford","rorIds": ["052gg0110"],"maxItems": 100,"timeoutSecs": 300,"requestTimeoutSecs": 30}
What Data Does This Actor Extract?
Each organization is saved as one dataset row. Search results use organization records from the ROR v2 search response, while direct ID lookups return the corresponding organization object.
Names retain their original spelling, including non-English labels, after HTML tags are removed.
Example Output
{"admin": {"created": {"date": "2018-11-14","schema_version": "1.0"},"last_modified": {"date": "2026-09-22","schema_version": "2.1"}},"domains": ["ox.ac.uk"],"established": 1096,"external_ids": [{"all": ["grid.4991.5"],"preferred": "grid.4991.5","type": "grid"}],"id": "https://ror.org/052gg0110","links": [{"type": "website","value": "https://www.ox.ac.uk"}],"locations": [{"geonames_id": 2640729,"geonames_details": {"name": "Oxford","country_name": "United Kingdom"}}],"names": [{"lang": "en","types": ["alias"],"value": "Oxford University"},{"lang": "cy","types": ["label"],"value": "Prifysgol Rhydychen"}],"relationships": [],"status": "active","types": ["education"],"sourceUrl": "https://api.ror.org/v2/organizations/052gg0110","scrapedAt": "2026-10-12T00:00:00+00:00"}
Output Fields
| Field | Type | Description |
|---|---|---|
admin | object | Creation and last-modified dates supplied by the source. |
domains | array | Organization domain names. |
established | integer | Year the organization was established, when provided as a number. |
external_ids | array | External identifiers, such as GRID, Wikidata, or FundRef IDs. |
id | string | Organization's ROR identifier URL. Duplicate ROR IDs are skipped. |
links | array | Website and Wikipedia links. |
locations | array | GeoNames location objects. |
names | array | Organization labels and aliases, with HTML tags removed. |
relationships | array | Parent, child, and other related organizations. |
status | string | Organization status reported by ROR, usually active. |
types | array | Organization classifications, such as education or nonprofit. |
sourceUrl | string | ROR API URL used for the request. |
scrapedAt | string | UTC timestamp when the row was stored. |
error | string | Present only when a request or ID fails. |
input | string | Query or ROR ID associated with an error row. |
Failed requests generate rows containing error, input, sourceUrl, and scrapedAt. The run continues instead of failing entirely.
If a search returns no matches, the actor saves one row explaining that no organizations matched rather than returning an empty dataset.
How It Works
- Reads the organization search query, ROR IDs, item limit, and timeout settings.
- Retrieves requested ROR IDs first when provided.
- Searches for organizations by name when a query is provided.
- Extracts the source organization fields and adds
sourceUrlandscrapedAt. - Skips duplicate ROR IDs.
- Continues pagination until all reported search results are covered, a page contains fewer results than expected, or the item limit is reached.
- Saves error records for failed requests, invalid IDs, and unsuccessful searches.
Pagination and Limits
- Search pagination: Uses pages containing up to 20 organizations.
- Maximum results: A run can save up to 1,000 rows, including error rows.
- Request frequency: Waits 0.2 seconds between requests, targeting no more than five requests per second.
- Published API limit: The actor's documented request pace is below the stated ROR limit of 2,000 requests per five minutes per IP.
- Duplicate handling: Duplicate ROR IDs are discarded.
- Request retries: HTTP 429 responses, HTTP 5xx responses, and timeouts are retried three times with waits of 2, 4, and 8 seconds. A
Retry-Afterheader overrides the wait when provided. - Other HTTP errors: Other 4xx responses are not retried.
- Invalid IDs: IDs that do not contain exactly nine letters or digits are saved as error rows and are not requested.
- Invalid response bodies: HTTP 200 responses that do not contain valid JSON are handled as errors.
- Combined input: When both
rorIdsandqueryare provided, ID lookups run first, followed by the name search, until the row limit is reached.
Data Source
Organization records come from the public ROR v2 organizations API. The actor supports name-based searches and direct organization lookups.
Each successful record includes sourceUrl so you can trace the extracted data to the request that returned it.
ROR data is released under CC0, and registration is not required to use the public API. ROR recommends a client ID for frequent API usage.
FAQ
Does this ROR research organizations scraper need an API key?
No. Organization searches and individual ROR ID lookups use the public API and do not require an API key.
How do I look up one university?
Add its nine-character ROR ID to rorIds, such as 052gg0110. Clear query if you only want the ID lookup without a name search.
Why did I get an error row?
An invalid ID is rejected before a request is sent. A missing organization may return HTTP 404. A response containing HTML instead of JSON is recorded as an error, and a search with no matches produces a row explaining that no organizations matched.
Can I export JSON, CSV, and Excel?
Yes. Run the actor and download the dataset in JSON, CSV, or Excel format.
Can I search by name and look up IDs in the same run?
Yes. The actor processes ROR ID lookups first, then performs the organization-name search, subject to the maximum row limit.
Does the actor use a proxy by default?
No. The default configuration uses a direct connection. Respect ROR's rate limits and do not use a proxy to evade them.
Pricing
The actor is free to run. Normal Apify platform usage charges may still apply.
Trademark Notice
ROR and related names, logos, and trademarks belong to their respective owners. Their use in this documentation is solely to identify the data source and does not imply affiliation, sponsorship, endorsement, or partnership.
Disclaimer
This actor is an independent tool and is not affiliated with, endorsed by, sponsored by, or officially associated with ROR or its owners. Data is collected from publicly available sources. Users are responsible for complying with the source's terms of use, rate limits, attribution requirements, and applicable licensing conditions.
Is Web Scraping Legal?
This actor collects publicly available organization data through the ROR API without logging in or bypassing access controls. The legality of collecting and using public data depends on the circumstances and applicable laws.
- Personal data: If records contain personal data, privacy laws such as the GDPR or CCPA may apply. Collect and retain personal data only when you have an appropriate legal basis.
- Copyright: Some content may be protected by copyright. Check the applicable licensing conditions before republishing protected material.
- Terms of use: Respect the source's terms, published request limits, and applicable attribution or licensing requirements.
- Legal advice: This information is general guidance, not legal advice. Consult a qualified lawyer if you are unsure about your obligations. To learn more, read Apify's guide: Is web scraping legal?