ORCID Researcher Profiles Scraper
Pricing
Pay per event
ORCID Researcher Profiles Scraper
Search ORCID's public 20M+ researcher registry by name, institution, email, or a raw Lucene query, and export flat profile rows with optional per-researcher employment history (organization, role, department, start/end dates) enrichment.
Pricing
Pay per event
Rating
0.0
(0)
Developer
DevilScrapes
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
19 hours ago
Last modified
Categories
Share
🎯 What this scrapes
ORCID is the researcher-identity registry behind most of scholarly publishing — every ORCID iD carries a public profile with names, affiliations, and (optionally) employment history. The registry's own search API exposes a full Lucene query syntax, but no public tool surfaces it, and the pagination ceiling ORCID enforces for unauthenticated callers is easy to walk straight past without noticing. This Actor builds correct Lucene queries from plain fields, paginates honestly against ORCID's own limits, and — on request — fetches each researcher's employment history so a recruiting or research-ops list lands in one flat, ready-to-use dataset.
🔥 What we handle for you
- Builds correct ORCID Lucene queries from plain fields — no field-name guessing, no malformed clause syntax.
- Paginates
expanded-searchhonestly against ORCID's own documentedrows/startceilings, re-checkingnum-foundevery page instead of trusting a stale first read. - Retries transient
429/5xxresponses with backoff, and never retries a documented400— it surfaces ORCID's own error message instead.
💡 Use cases
- Build a recruiting longlist of researchers at a target institution or department.
- Track a competitor lab's or department's current and former staff.
- Enrich a CRM or outreach list with verified ORCID iDs and public affiliation history.
- Compile an institutional or funder report of researchers matching a name/affiliation query.
⚙️ How to use it
- Click Try for free at the top of the page.
- Fill in at least one search field — a name, an institution, an email, or a raw Lucene query.
- Click Start. Output streams into the run's dataset.
- Export from Storage → Dataset as JSON, CSV, or Excel — or fetch via the API.
📥 Input
| Field | Type | Required | Default | Notes |
|---|---|---|---|---|
givenNames | string | no | — | Given (first) name(s). |
familyNames | string | no | — | Family (last) name(s). |
creditName | string | no | — | Published/credit name, if different. |
affiliationOrgName | string | no | 'MIT' | Any affiliation (past or present) organization name. |
currentInstitution | string | no | — | Current employer/institution name only. |
email | string | no | — | Public email address on file. |
freeText | string | no | — | Unprefixed broad-match search term. |
rawQuery | string | no | — | Advanced: a raw ORCID Lucene query string. Overrides every other field when set. |
maxResults | integer | no | 200 | Stop after this many profiles. ORCID caps effective reach at index ~11 000. |
enrichEmployment | boolean | no | false | +1 HTTP call/row for full employment history at the same per-row price. |
proxyConfiguration | object | no | {"useApifyProxy": true} | Apify Proxy settings. |
At least one of givenNames, familyNames, creditName, affiliationOrgName, currentInstitution, email, freeText, or rawQuery must be set — an unconstrained search against 20M+ records is not supported.
Example input
{"affiliationOrgName": "MIT","maxResults": 20,"enrichEmployment": false,"proxyConfiguration": {"useApifyProxy": true}}
📤 Output
Every row is one dataset item.
| Field | Type | Notes |
|---|---|---|
orcid_id | string | ORCID iD, e.g. 0000-0002-4392-0814. |
given_names | string | Given (first) name(s). |
family_names | string | Family (last) name(s). |
credit_name | string | Published/credit name, when different. |
email | string | First public email on file, if any. |
institutions | array | All affiliation organization names, order preserved. |
current_institution | string | Current employer — only set when enrichEmployment is true. |
current_role | string | Current role title — only set when enrichEmployment is true. |
employment_history | array | Full employment history — only set when enrichEmployment is true. |
Example output
{"orcid_id": "0000-0002-4392-0814","given_names": "Donald","family_names": "Smith","credit_name": null,"email": null,"institutions": ["Guilford College", "MIT", "The University of Chicago"],"current_institution": "Guilford College","current_role": "Professor","employment_history": [{"organization_name": "Guilford College","city": "Greensboro","region": "NC","country": "US","role_title": "Professor","department_name": "Physics","start_date": "2005-08-01","end_date": null,"is_current": true}]}
💰 Pricing
Pay-Per-Event — you pay only when these events fire:
| Event | USD | What it is |
|---|---|---|
actor-start | $0.20 | One-off warm-up charge per run |
result-emitted | $0.003 | Per researcher profile written to the dataset |
Example: 1 000 results at the rates above ≈ $3.20. No subscription, no minimum, no card to start — Apify gives every new account $5 of free credit.
🚧 Limitations
- Only public ORCID data is fetched — no OAuth-scoped or
/read-limitedfields are requested or inferred. - Unauthenticated ORCID reach is capped at
start<=10 000— a very broad query (e.g. a common surname with no other filter) may not reach every match.maxResultsis capped at 11 000 for the same reason. enrichEmploymentadds one HTTP call per row and increases run time; a researcher with no employment data on file simply returns empty enrichment fields, not an error.
❓ FAQ
Do I need an API key?
No. ORCID's public Search and /employments APIs are free and keyless.
Why does a broad query sometimes return fewer rows than expected?
ORCID caps unauthenticated pagination at index ~11 000. See Limitations above.
Can I write my own advanced query?
Yes — set rawQuery to a raw ORCID Lucene query string (e.g. family-name:Smith AND affiliation-org-name:MIT) and it overrides every structured field.
💬 Your feedback
Spotted a bug, hit a weird edge case, or need a new field? Open an issue on the Actor's Issues tab on Apify Console — we ship fixes weekly and we read every report.